コペンハーゲンのテーマは、デフォルトの Zendesk Guide テーマです。応答性が高くアクセスしやすいように設計されています。 Zendesk Guideのカスタマイズの詳細については、こちらをご覧ください。
ヘルプセンターのコペンハーゲンのテーマは次で構成されます。
これは、Guide で利用できるコペンハーゲン テーマの最新バージョンです。このリポジトリを開始点として使用して、独自のカスタム テーマを構築することができます。このリポジトリは必要に応じてフォークできます。お気に入りの IDE を使用してテーマを開発し、ZCLI を使用して Web ブラウザでローカルに変更をプレビューできます。詳細については、zcli テーマのドキュメントを参照してください。
このリポジトリをフォークしたら、テンプレート、CSS、JavaScript を自由に編集し、アセットを管理できるようになります。
マニフェストを使用すると、テーマの設定グループを定義し、テーマ センターの UI を介して変更できます。マニフェスト ファイルの詳細については、こちらをご覧ください。
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
ファイルとしてダウンロードし、テーマ センターにインポートできます。
ここでインポートに関するドキュメントに従ってください。
GitHub から直接インポートすることもできます - 詳細については、こちらをご覧ください。
テーマには、利用可能なすべての機能を備えたヘルプ センターで使用されるすべてのテンプレートが含まれています。テーマ内のテンプレートのリスト:
次のオプションのテンプレートを最大 10 個追加できます。
これを行うには、フォルダーtemplates/article_pages
、 templates/category_pages
またはtemplates/section_pages
の下にファイルを作成します。詳細については、こちらをご覧ください。
Rollup を使用して、テーマstyle.css
およびscript.js
で使用される JS ファイルと CSS ファイルをコンパイルします。これらはリリース時に再生成されるため、直接編集しないでください。
始めるには:
$ yarn install
$ yarn start
これにより、 src
とstyles
のすべてのソース コードがコンパイルされ、変更が監視されます。 preview
も開始されます。
注:
script.js
をコンパイルするときに意図的に babel を使用しないので、クリーンなバンドル出力が得られます。広くサポートされている ecmascript 機能 (ES2015) のみを使用するようにしてください。style.css
、 script.js
、およびassets
フォルダー内のファイルを直接編集しないでください。これらはリリース時に再生成されます。yarn zcli login -i
実行してください。 コペンハーゲン テーマにはいくつかの JavaScript アセットが付属していますが、他のアセットをassets
フォルダーに配置することでテーマに追加できます。
バージョン 4.0.0 以降、Copenhagen テーマは UI の一部をレンダリングするためにいくつかの React コンポーネントを使用します。これらのコンポーネントはsrc/modules
フォルダーにあり、Zendesk Garden コンポーネント ライブラリを使用して構築されます。
これらのコンポーネントは、ロールアップ ビルド プロセスの一部としてネイティブ JavaScript モジュールとしてバンドルされており、 assets
フォルダーに JS ファイルとして出力されます。テーマのインストール時にアセットの名前が変更されるため、アセット ヘルパーを使用してモジュールをインポートする必要があります。
モジュールのインポート プロセスを簡単にするために、モジュール名をアセット URL にマップするインポート マップを生成する Rollup プラグインを追加しました。このインポート マップは、ビルド中にdocument_head.hbs
テンプレートに挿入されます。
たとえば、 src/modules/my-module
フォルダーに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" ,
} ,
// ...
}
] ) ;
ロールアップは、 my-module-bundle.js
という名前のファイルをassets
フォルダーに生成し、このインポート マップがdocument_head.hbs
テンプレートに追加されます。
< script type =" importmap " >
{
"imports" : {
"my-module" : "{{asset 'my-module-bundle.js'}}" ,
}
}
</ script >
次に、次のようにテンプレートにモジュールをインポートできます。
I18n は、react-i18next ライブラリを使用して React コンポーネントに実装されます。フラットな 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"
}
自動アクセシビリティ テストのために Lighthouse を実行するカスタム ノード スクリプトを使用します。
スクリプトを実行するには 2 つの方法があります。
zcli themes:preview
を実行する必要があります。テストの範囲によっては、上記に加えて手動テストが必要になる場合があります。 ax 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
。selector
。例えば:
custom: {
ignore: {
tabindex: [
{
path : "*" ,
selector : "body > a.skip-navigation" ,
} ,
] ,
aria - allowed - attr : [
{
path : "/hc/:locale/profiles/:id" ,
selector : "body > div.profile-info"
}
]
} ,
} ,
この例では、セレクターbody > a.skip-navigation
を含む監査tabindex
のエラーが、すべてのページで警告として報告されます ( *
)。セレクターbody > div.profile-info
を使用した監査aria-allowed-attr
でも同じことが起こりますが、ユーザー プロファイル ページ/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
使用します。
PR がマージされたら、Github アクションをsemantic-release
と組み合わせて使用し、テーマの新しいバージョンをリリースします。マージのたびに、 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/) を通じて送信する必要があります。