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コンポーネントを追加する
- リントとフォーマット: コミット前にコードを自動的にリントおよびフォーマットする
- 受け入れテスト: 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に新しい「管理型」認証方法を追加する
- 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. まとめ