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 コンポーネントを追加する
- UI キット: Discourse の共有コンポーネント、ヘルパー、モディファイアからなる UI キット
- Lint とフォーマット: コミット前にコードを自動的に Lint してフォーマットする
- 受け入れテスト: Discourse の Ember コード用に受け入れテストとコンポーネントテストを書く
- テストスイートの実行: Discourse コア、プラグイン、テーマの QUnit テストスイートを実行する方法
- バージョン互換性: 古い Discourse インストール用にプラグインとテーマのバージョンを固定する (d-compat ブランチ)
- Ember オブジェクトの所有権: Ember オブジェクトの所有権 (getOwner、サービスインジェクションなど)
- JS パフォーマンス: Google の ‘tachometer’ を使用して Discourse における JS パフォーマンスの変化を測定する
- GitHub Actions を使った CI: GitHub Actions を使用して継続的インテグレーションをセットアップする
- 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 トリガー リファレンス
- トランスフォーマー: トランスフォーマーを使用してクライアントサイドの値と動作をカスタマイズする
- トピックリストのカスタマイズ: トピックリストをカスタマイズする
- 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 対応
- グローバルなアイコン変更: アイコンをグローバルに変更する
- 代替アイコン: 代替アイコン
- ウィキ投稿スタイル: ウィキ投稿のスタイルを変更する
- カラースキーム: カラースキームを作成して共有する
- ナビゲーションメニュー:
navigation_menuクエリパラメータを使用してサイドバーや他のオプションをプレビューする - 投稿コンテンツのスタイル: 独自のスタイルで投稿のコンテンツをカスタマイズする
- テーマスクリーンショット: Discourse テーマにプレビュースクリーンショットを追加する
- テーマ化可能なサイト設定: テーマによるサイト設定の制御
一般ガイド
- モバイルアプリのホワイトラベリング: Discourse モバイルアプリのホワイトラベリングを決定する前に考慮すべき事項
- カスタムオートメーション: カスタムオートメーションを作成する
- パブリックデータダンプ: Discourse パブリックデータダンプ
- AI 評価: Discourse AI 評価を実行する
- API 経由の AI ボット: Discourse API を使用した AI ボットの使用方法
テーマ開発チュートリアル
- 1 - 概要: テーマ開発者向けチュートリアル: 1. 概要
- 2 - リモートテーマ: テーマ開発者向けチュートリアル: 2. リモートテーマの作成
- 3 - CSS: テーマ開発者向けチュートリアル: 3. テーマにおける CSS
- 4 - アウトレット: テーマ開発者向けチュートリアル: 4. アウトレットを使用してコンテンツを挿入および置き換える
- 5 - コンポーネント: テーマ開発者向けチュートリアル: 5. コンポーネントの構築と使用
- 6 - JS API: テーマ開発者向けチュートリアル: 6. JS API の使用
- 7 - 結論: テーマ開発者向けチュートリアル: 7. まとめ