Discourseをプラグイン、テーマ、テーマコンポーネントで拡張する方法、コアコードの操作方法、Discourse APIの使用方法に関するドキュメント。
はじめに
- はじめに: Discourse開発の紹介
開発環境
- 開発コンテナ: 開発コンテナを使用したDiscourseの開発
- GitHub Codespaces: GitHub CodespacesでのDiscourseの開発
- Dockerセットアップ: Dockerを使用した開発用のDiscourseのインストール
- macOSセットアップ: 開発用にmacOSにDiscourseをインストールする
- Ubuntu/Debianセットアップ: UbuntuまたはDebianに開発用のDiscourseをインストールする
- Windowsセットアップ: 開発用にWindowsにDiscourseをインストールする
- 非Dockerプラグイン: 非Docker開発環境へのプラグインのインストール
- ローカルセットアップ: ローカルのDiscourse開発環境をセットアップするには?
- マルチサイトセットアップ: マルチサイト開発環境のセットアップ
- Fedoraセットアップ: Fedora Linuxで開発用にDiscourseをセットアップする
コードと内部構造
- Emberコンポーネント: DiscourseへのEmberコンポーネントの追加
- Lintとフォーマット: コミット前のコードの自動Lintとフォーマット
- 受け入れテスト: DiscourseのEmberコードの受け入れテストとコンポーネントテストの記述
- テストスイートの実行: Discourseコア、プラグイン、テーマのQUnitテストスイートの実行方法
- バージョン互換性: 古いDiscourseインストール用のプラグインおよびテーマバージョンのピン留め (.discourse-compatibility)
- Emberオブジェクトの所有権: Emberオブジェクトの所有権(getOwner、サービスインジェクションなど)
- JSパフォーマンス: Googleの’tachometer’を使用してDiscourseのJSパフォーマンスの変更を測定する
- GitHub ActionsによるCI: GitHub Actionsを使用した継続的インテグレーションのセットアップ
- Markdown拡張機能: Markdown拡張機能に関する開発者ガイド
- モーダルの変換: レガシーコントローラから新しいDModalコンポーネントAPIへのモーダルの変換
- DModal API: Discourseでモーダルウィンドウ(ポップアップ/ダイアログ)を描画するためのDModal APIの使用
- JS API: JS APIの使用
- プラグインアウトレットコネクタ: テーマまたはプラグインからのプラグインアウトレットコネクタの使用
- modifyClass: modifyClassを使用してコアの動作を変更する
- ルートの作成: Discourseでのルートの作成とデータの表示
- 認証メソッド: Discourseへの新しい「管理対象」認証メソッドの追加
- ActiveRecordモデルの意図しないシリアライズ: ActiveRecordモデルの意図しないシリアライズの防止
- テンプレートの上書き: テーマまたはプラグインからのDiscourseテンプレートの上書き(非推奨)
- サービスオブジェクト: Discourseでのサービスオブジェクトの使用
- システムスペック: Discourseユーザーインターフェースのエンドツーエンドシステムスペックの記述
- FormKit: フォームを描画するためのDiscourseツールキット。
- AppEventsトリガー: AppEventsトリガーリファレンス
- トランスフォーマー: トランスフォーマーを使用してクライアントサイドの値と動作をカスタマイズする
- トピックリストのカスタマイズ: トピックリストのカスタマイズ
- CSSガイドライン: BEMを使用したCSSクラスのガイドライン
- デバイス向けのデザイン: 異なるデバイス向けのデザイン(ビューポートサイズ、タッチ/ホバーなど)
- JS型ヒントと検証: JavaScriptの型ヒントと検証(typescript)
プラグイン
- 基本的なプラグイン: Discourseプラグインの開発 - パート1 - 基本的なプラグインの作成
- プラグインアウトレット: Discourseプラグインの開発 - パート2 - プラグインアウトレットへの接続
- サイト設定: Discourseプラグインの開発 - パート3 - カスタムサイト設定の追加
- Gitセットアップ: Discourseプラグインの開発 - パート4 - Gitのセットアップ
- 管理インターフェース: Discourseプラグインの開発 - パート5 - 管理インターフェースの追加
- 受け入れテスト: Discourseプラグインの開発 - パート6 - 受け入れテストの追加
- プラグインの公開: Discourseプラグインの開発 - パート7 - プラグインの公開
- 新しいロケール: プラグインからの新しいロケールの追加
- Chat統合: discourse-chat-integrationへの新しいプロバイダの追加
- markdown-it拡張機能: markdown-it拡張機能をDiscourseプラグインとして再パッケージ化する
- Railsのオートロード: Railsのオートロードのためのプラグインの構造化
テーマとコンポーネント
- テーマの開発: Discourseテーマとテーマコンポーネントの開発
- クイックリファレンス: テーマ開発者クイックリファレンスガイド
- デザイナーガイド: Discourseのテーマ開発を始めるためのデザイナーガイド
- Theme Creator: Theme CreatorとTheme CLIの使用開始
- Theme CLI: テーマの構築を支援するDiscourse Theme CLIコンソールアプリのインストール
- テーマの構造: テーマとテーマコンポーネントの構造
- 複数のJSファイル: テーマのJavaScriptを複数のファイルに分割する
- 複数のSCSSファイル: テーマのSCSSを複数のファイルに分割する
- テーマ設定: Discourseテーマへの設定の追加
- テーマ設定のオブジェクト: テーマ設定のオブジェクトタイプ
- 設定の移行: Discourseテーマ設定の移行
- テーマのメタデータ: テーマへのメタデータとスクリーンショットの追加
- コア変数: テーマでDiscourseコア変数を使用する
- ローカライズ可能な文字列: テーマとテーマコンポーネントへのローカライズ可能な文字列の追加
- E2Eテスト: テーマとテーマコンポーネントのエンドツーエンドシステムテスト
- メンテナンスの最小化: テーマのカスタマイズのメンテナンスを最小限に抑える
- フォントサイズ: テーマのフォントサイズを変更する
- アセットのインクルード: テーマとコンポーネントへのアセット(画像、フォントなど)のインクルード
- カスタムアイコン: テーマを使用してDiscourseのデフォルトのSVGアイコンをカスタムアイコンに置き換える
- ダークモード: テーマとプラグインを更新して自動ダークモードをサポートする
- テーマモディファイア: テーマモディファイア:簡単な紹介
- 擬似要素: CSSの擬似要素を使用してサイトのどこにでもテキストや画像を挿入する
- フォントコンポーネント: フォントテーマコンポーネントの作成と共有
- Highlight.JS言語: テーマコンポーネント経由でHighlight.JSの新しい言語をインストールする
- ホームページコンテンツ: ホームページにのみ表示されるカスタムコンテンツの追加
- メッセージ形式: ローカライゼーションのためのメッセージ形式のサポート
- グローバルなアイコン変更: アイコンをグローバルに変更する
- 代替アイコン: 代替アイコン
- Wiki投稿のスタイル: Wiki投稿のスタイルを変更する
- カラーカラースキーム: カラースキームの作成と共有
- ナビゲーションメニュー:
navigation_menuクエリパラメータを使用してサイドバーやその他のオプションをプレビューする - 投稿コンテンツのスタイル: 独自のスタイルで投稿コンテンツをカスタマイズする
- テーマのスクリーンショット: Discourseテーマへのプレビュースクリーンショットの追加
- テーマ設定可能サイト設定: テーマによるサイト設定の制御
一般ガイド
- モバイルアプリのホワイトラベリング: Discourseモバイルアプリのホワイトラベリングを決定する前に考慮すべきこと
- カスタム自動化: カスタム自動化の作成
- 公開データダンプ: Discourse公開データダンプ
- AI評価: Discourse AI評価の実行
テーマ開発チュートリアル
- 1 - はじめに: テーマ開発者チュートリアル: 1. はじめに
- 2 - リモートテーマ: テーマ開発者チュートリアル: 2. リモートテーマの作成
- 3 - CSS: テーマ開発者チュートリアル: 3. テーマ内のCSS
- 4 - アウトレット: テーマ開発者チュートリアル: 4. アウトレットを使用してコンテンツを挿入および置換する
- 5 - コンポーネント: テーマ開発者チュートリアル: 5. コンポーネントの構築と使用
- 6 - JS API: テーマ開発者チュートリアル: 6. JS APIの使用
- 7 - まとめ: テーマ開発者チュートリアル: 7. まとめ