Discourse をプラグイン、テーマ、テーマコンポーネントで拡張し、コアコードを操作し、Discourse API を使用するためのドキュメントです。
はじめに
- はじめに: Discourse 開発入門
開発環境
- Dev Container: Dev Container を使用した 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 インストール向けにプラグインとテーマのバージョンを固定する (d-compat ブランチ)
- Ember オブジェクトの所有権: Ember オブジェクトの所有権 (getOwner、サービスインジェクションなど)
- JS パフォーマンス: Google の ‘tachometer’ を使用して Discourse における JS パフォーマンスの変動を測定
- GitHub Actions による CI: GitHub Actions を使用して継続的インテグレーション (CI) を設定
- Markdown 拡張: Markdown 拡張機能の開発者向けガイド
- モーダルの変換: レガシーコントローラーから新しい DModal コンポーネント API へのモーダル変換
- DModal API: DModal API を使用して Discourse でモーダルウィンドウ (ポップアップ/ダイアログ) をレンダリング
- JS API: JS API の使用
- プラグインアウトレットコネクタ: テーマまたはプラグインからプラグインアウトレットコネクタを使用
- modifyClass: modifyClass を使用してコアの動作を変更
- ルートの作成: Discourse でのルートの作成とデータの表示
- 認証方法: Discourse に新しい ‘managed’ 認証方法を追加
- ActiveRecord モデルの意図しないシリアライズ: ActiveRecord モデルの意図しないシリアライズの防止
- テンプレートのオーバーライド: (推奨されません) テーマまたはプラグインから Discourse テンプレートをオーバーライド
- サービスオブジェクト: Discourse でのサービスオブジェクトの使用
- システムスペック: Discourse ユーザーインターフェースのエンドツーエンドシステムスペックの記述
- FormKit: フォームをレンダリングするための Discourse ツールキット。
- AppEvents トリガー: AppEvents トリガー リファレンス
- 変換器 (Transformers): 変換器を使用してクライアント側の値と動作をカスタマイズ
- トピックリストのカスタマイズ: トピックリストのカスタマイズ
- CSS ガイドライン: BEM を使用した CSS クラスのガイドライン
- JS タイプヒントと検証: JavaScript タイプヒントと検証 (TypeScript)
- デバイス向けデザイン: 異なるデバイス (タッチとホバー) 向けにデザイン
- レスポンシブ幅向けデザイン: レスポンシブ幅 (ブレークポイント、ビューポート、コンテナ) 向けにデザイン
プラグイン
- 基本プラグイン: Discourse プラグインの開発 - パート 1 - 基本プラグインの作成
- プラグインアウトレット: Discourse プラグインの開発 - パート 2 - プラグインアウトレットへの接続
- サイト設定: Discourse プラグインの開発 - パート 3 - カスタムサイト設定の追加
- Git 設定: Discourse プラグインの開発 - パート 4 - Git の設定
- 管理インターフェース: Discourse プラグインの開発 - パート 5 - 管理インターフェースの追加
- 受け入れテスト: Discourse プラグインの開発 - パート 6 - 受け入れテストの追加
- プラグインの公開: Discourse プラグインの開発 - パート 7 - プラグインの公開
- 新しいロケール: プラグインから新しいロケールを追加
- チャット統合: 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 の新しい言語をインストール
- ホームページコンテンツ: ホームページにのみ表示されるカスタムコンテンツを追加
- メッセージフォーマット: ローカライズのための Message Format サポート
- グローバルアイコン変更: アイコンをグローバルに変更
- 代替アイコン: 代替アイコン
- 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. まとめ