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に新しい「管理型」認証方法を追加する
- 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評価の実行
テーマ開発チュートリアル
- 1 - 序文: テーマ開発者向けチュートリアル: 1. 序文
- 2 - リモートテーマ: テーマ開発者向けチュートリアル: 2. リモートテーマの作成
- 3 - CSS: テーマ開発者向けチュートリアル: 3. テーマにおけるCSS
- 4 - アウトレット: テーマ開発者向けチュートリアル: 4. アウトレットを使用してコンテンツの挿入と置換
- 5 - コンポーネント: テーマ開発者向けチュートリアル: 5. コンポーネントの構築と使用
- 6 - JS API: テーマ開発者向けチュートリアル: 6. JS APIの使用
- 7 - 結論: テーマ開発者向けチュートリアル: 7. まとめ