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 クラスのガイドライン
- デバイス対応のデザイン: 異なるデバイスに対応するデザイン (ビューポートサイズ、タッチ/ホバーなど)
プラグイン
- 基本的なプラグイン: Discourse プラグインの開発 - パート 1 - 基本的なプラグインの作成
- プラグインアウトレット: Discourse プラグインの開発 - パート 2 - プラグインアウトレットへの接続
- サイト設定: Discourse プラグインの開発 - パート 3 - カスタムサイト設定の追加
- Git セットアップ: Discourse プラグインの開発 - パート 4 - Git のセットアップ
- 管理インターフェース: Discourse プラグインの開発 - パート 5 - 管理インターフェースの追加
- 受け入れテスト: Discourse プラグインの開発 - パート 6 - 受け入れテストの追加
- プラグインの公開: Discourse プラグインの開発 - パート 7 - プラグインの公開
- 新しいロケール: プラグインからの新しいロケールの追加
- 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. まとめ