Тема «Копенгаген» является темой Zendesk Guide по умолчанию. Он спроектирован так, чтобы быть отзывчивым и доступным. Узнайте больше о настройке Zendesk Guide здесь.
Тема «Копенгаген» для Справочного центра состоит из:
Это последняя версия темы Копенгаген, доступная для Guide. Этот репозиторий можно использовать в качестве отправной точки для создания собственной темы. Вы можете разветвить этот репозиторий по своему усмотрению. Вы можете использовать свою любимую среду IDE для разработки тем и предварительного просмотра изменений локально в веб-браузере с помощью ZCLI. Подробности читайте в документации по темам zcli.
После того как вы разветвите этот репозиторий, вы сможете свободно редактировать шаблоны, CSS, JavaScript и управлять ресурсами.
Манифест позволяет вам определить группу настроек для вашей темы, которые затем можно изменить через пользовательский интерфейс в Центре тем. Подробнее о файле манифеста можно прочитать здесь.
Если у вас есть переменная типа file
, вам необходимо предоставить файл по умолчанию для этой переменной в папке /settings
. Этот файл будет использоваться на панели настроек по умолчанию, и пользователи могут при желании загрузить другой файл. Бывший. Если вы хотите иметь переменную для фонового изображения раздела, переменная в вашем файле манифеста будет выглядеть примерно так:
{
...
"settings" : [ {
"label" : "Images" ,
"variables" : [ {
"identifier" : "background_image" ,
"type" : "file" ,
"description" : "Background image for X section" ,
"label" : "Background image" ,
} ]
} ]
}
И это будет искать файл в папке настроек с именем: background_image
Вы можете добавлять ресурсы в папку ресурсов и использовать их в CSS, JavaScript и шаблонах. Подробнее об активах можно прочитать здесь
После настройки темы вы можете загрузить репозиторий в виде zip
файла и импортировать его в Theming Center.
Вы можете следить за документацией по импорту здесь.
Вы также можете импортировать напрямую из GitHub — подробнее здесь.
Тема включает в себя все шаблоны, используемые для Справочного центра со всеми доступными функциями. Список шаблонов в теме:
Вы можете добавить до 10 дополнительных шаблонов для:
Вы делаете это, создавая файлы в папках templates/article_pages
, templates/category_pages
или templates/section_pages
. Узнайте больше здесь.
Мы используем Rollup для компиляции файлов JS и CSS, которые используются в теме — style.css
и script.js
. Не редактируйте их напрямую, поскольку они будут созданы повторно во время выпуска.
Чтобы начать:
$ yarn install
$ yarn start
Это скомпилирует весь исходный код в src
и styles
и будет отслеживать изменения. Также начнется preview
.
Примечания:
script.js
, чтобы получить чистый результат сборки. Обязательно используйте только широко поддерживаемые функции ecmascript (ES2015).style.css
, script.js
и файлы внутри папки assets
напрямую. Они регенерируются во время выпуска.yarn zcli login -i
если вы не сделали этого раньше. Тема «Копенгаген» включает в себя несколько ресурсов JavaScript, но вы можете добавить в тему другие ресурсы, поместив их в папку assets
.
Начиная с версии 4.0.0, тема Copenhagen использует некоторые компоненты React для рендеринга частей пользовательского интерфейса. Эти компоненты расположены в папке src/modules
и созданы с использованием библиотеки компонентов Zendesk Garden.
Эти компоненты входят в состав собственных модулей JavaScript как часть процесса сборки накопительного пакета и создаются в виде файлов JS в папке assets
. Поскольку ресурсы переименовываются при установке темы, модули необходимо импортировать с помощью помощника по ресурсам.
Чтобы упростить процесс импорта модулей, мы добавили плагин Rollup, который генерирует карту импорта, сопоставляющую имя модуля с URL-адресом ресурса. Эта карта импорта затем вводится в шаблон document_head.hbs
во время сборки.
Например, если вы определили модуль с именем my-module
в папке src/modules/my-module
, вы можете добавить его в rollup.config.mjs
следующим образом:
export default defineConfig ( [
// ...
// Configuration for bundling modules in the src/modules directory
{
// ...
input : {
"my-module" : "src/modules/my-module/index.js" ,
} ,
// ...
}
] ) ;
В результате накопительного пакета в папке assets
будет создан файл с именем my-module-bundle.js
, и эта карта импорта будет добавлена в шаблон document_head.hbs
:
< script type =" importmap " >
{
"imports" : {
"my-module" : "{{asset 'my-module-bundle.js'}}" ,
}
}
</ script >
Затем вы можете импортировать модуль в свои шаблоны следующим образом:
I18n реализован в компонентах React с использованием библиотеки act-i18next. Мы используем простой файл JSON и используем расширение .
в качестве разделителя для множественного числа, который отличается от значения по умолчанию _
и настраивается во время инициализации.
Мы также добавили несколько инструментов, позволяющих интегрировать библиотеку с внутренней системой перевода, используемой в Zendesk. Если вы создаете собственную тему и хотите предоставить свои собственные переводы, вы можете обратиться к документации библиотеки, чтобы настроить загрузку ваших переводов.
Строки перевода добавляются непосредственно в исходный код, обычно с использованием хука useTranslation
, передавая ключ и значение английского языка по умолчанию:
import { useTranslation } from 'react-i18next' ;
function MyComponent ( ) {
const { t } = useTranslation ( ) ;
return < div > { t ( "my-key" , "My default value" ) } < / div>
}
Предоставление английского значения по умолчанию в коде позволяет использовать его в качестве резервного значения, когда строки еще не переведены, и извлекать строки из исходного кода в файл YAML переводов.
При использовании множественного числа нам необходимо предоставить значения по умолчанию для zero
, one
и other
значений, как того требует наша система перевода. Это можно сделать, передав значения по умолчанию в параметрах функции t
.
t ( "my-key" , {
"defaultValue.zero" : "{{count}} items" ,
"defaultValue.one" : "{{count}} item" ,
"defaultValue.other" : "{{count}} items" ,
count : ...
} )
Сценарий bin/extract-strings.mjs
можно использовать для извлечения строк перевода из исходного кода и помещения их в файл YAML, который подбирается нашей внутренней системой перевода. Использование сценария описано в самом сценарии.
Скрипт оборачивает инструмент i18next-parser
и преобразует его выходные данные в формат YAML, используемый внутри страны. Подобный подход можно использовать в собственной теме, либо используя стандартный вывод i18next-parser
в качестве источника для переводов, либо реализуя собственный преобразователь.
Используйте bin/update-modules-translations.mjs
, чтобы загрузить последние переводы для всех модулей. Затем все файлы объединяются в процессе сборки в один файл [MODULE]-translations-bundle.js
.
При первом добавлении переводов в модуль вам необходимо добавить сопоставление между папкой модуля и именем пакета в системах переводов с переменной MODULE
в скрипте. Например, если модуль находится в src/modules/my-module
и имя пакета — cph-theme-my-module
, вам необходимо добавить:
const MODULES = {
... ,
"my-module" : "cph-theme-my-module"
}
Мы используем собственный скрипт узла, который запускает маяк для автоматического тестирования доступности.
Есть два способа запуска скрипта:
zcli themes:preview
;В зависимости от объема тестирования в дополнение к вышеперечисленному может потребоваться некоторое ручное тестирование. Такие инструменты, как Axe DevTools, программы чтения с экрана, например VoiceOver, средства проверки контрастности и т. д., могут помочь в таком тестировании.
Чтобы запустить аудит доступности при смене темы:
$ yarn install
$ yarn start
Создайте файл .a11yrc.json
в корневой папке (см. пример);
zcli
.username
и password
учетными данными администратора;urls
проверять (если оставить пустым, скрипт будет проверять все URL-адреса);В отдельной консоли запустите аудит доступности в режиме разработки:
yarn test-a11y -d
Затем аудит A11y будет выполняться в предварительной версии, начатой на шаге 1
.
Чтобы запустить аудит доступности в активной теме конкретной учетной записи, необходимо:
yarn install
end_user_email
, end_user_password
, subdomain
и urls
в качестве переменных среды и запустите аудит доступности в режиме CI, т.е.: end_user_email=<EMAIL>
end_user_password=<PASSWORD>
subdomain=<SUBDOMAIN>
urls="
https://<SUBDOMAIN>.zendesk.com/hc/en-us/
https://<SUBDOMAIN>.zendesk.com/hc/en-us/requests/new
https://<SUBDOMAIN>.zendesk.com/hc/en-us/requests"
yarn test-a11y
Если существует известная проблема с доступом, которую следует игнорировать или которую нельзя устранить сразу, можно добавить новую запись в список игнорирования в объекте конфигурации скрипта. Это превратит проблему доступности в предупреждение, а не в ошибку.
Запись должна включать:
path
в виде строки шаблона URL-адреса;selector
в виде строки.Например:
custom: {
ignore: {
tabindex: [
{
path : "*" ,
selector : "body > a.skip-navigation" ,
} ,
] ,
aria - allowed - attr : [
{
path : "/hc/:locale/profiles/:id" ,
selector : "body > div.profile-info"
}
]
} ,
} ,
В этом примере ошибки для tabindex
аудита с body > a.skip-navigation
будут отображаться как предупреждения на всех страницах ( *
). То же самое произойдет с аудитом aria-allowed-attr
с body > div.profile-info
, но только для страницы профиля пользователя /hc/:locale/profiles/:id
.
Имейте в виду, что использовать его следует только в случае крайней необходимости. Доступность должна быть в центре внимания и приоритетом при внесении изменений в тему.
Запросы на включение приветствуются на GitHub по адресу https://github.com/zendesk/copenhagen_theme. Пожалуйста, укажите @zendesk/vikings при создании запроса на включение.
Мы используем обычные коммиты, чтобы улучшить читаемость истории проекта и автоматизировать процесс выпуска. Поэтому сообщение фиксации должно иметь следующий формат:
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
то есть:
chore: automate release
fix(styles): fix button padding
feat(script): add auto focus to fields with errors
Мы используем husky
и commitlint
для проверки сообщений при фиксации.
Мы используем действия Github вместе с semantic-release
, чтобы выпустить новую версию темы после объединения PR. При каждом слиянии semantic-release
анализирует сообщения фиксации и выводит семантическую версию версии. Затем он создает тег git, обновляет версию манифеста и генерирует соответствующий журнал изменений.
В списке ниже описаны поддерживаемые типы коммитов и их влияние на выпуск и журнал изменений.
Тип | Описание | Выпускать | Журнал изменений |
---|---|---|---|
строить | Изменения, влияющие на систему сборки или внешние зависимости. | - | - |
работа по дому | Другие изменения, не изменяющие исходный код. | - | - |
ци | Изменения в наших файлах конфигурации и сценариях CI. | - | - |
документы | Документация только меняется | - | - |
подвиг | Новая функция | незначительный | Функции |
исправить | Исправление ошибки | пластырь | Исправления ошибок |
перформанс | Изменение кода, улучшающее производительность | пластырь | Улучшения производительности |
рефакторить | Изменение кода, которое не исправляет ошибку и не добавляет новую функцию. | - | - |
возвращаться | Возвращает предыдущий коммит | пластырь | Возвращает |
стиль | Изменения, не влияющие на смысл кода (пробелы, форматирование, отсутствие точек с запятой и т. д.) | - | - |
тест | Добавление недостающих тестов или исправление существующих тестов | - | - |
Коммиты, добавляющие критические изменения, должны включать BREAKING CHANGE
в тело или нижний колонтитул сообщения о фиксации.
то есть:
feat: update theme to use theming api v2
BREAKING CHANGE: theme is now relying on functionality that is exclusive to the theming api v2
Затем будет создан основной выпуск и в журнал изменений будет добавлен раздел BREAKING CHANGES
.
Отчеты об ошибках необходимо отправлять через стандартные каналы поддержки Zendesk: https://www.zendesk.com/contact/.