JQ331
2021 年 3 月 12 日午後 9:16
1
実験中のプラグインでいくつかの基本的な HTML を変更したいと考えています(すべての変更を単一のプラグインにまとめるのが便利です)。これは、ダッシュボードではなくプラグインを使用する場合、管理ダッシュボードのテーマカスタマイザーの header セクションに配置する HTML です。
テーマの場合は、common という名前の直接のフォルダがあり、その中に header.html などのさまざまなファイルが入っています。
プラグインの共通スタイルシートは plugin/assets/stylesheets/common に配置できることはわかっています。では、この header.html ファイルをプラグインのどこに配置すればよいでしょうか?
「html」の中身は何ですか?
スクリプトは通常、イニシャライザー内に入れるか、コンポーネント内のイベントで発火させます。
プラグイン API への呼び出しはイニシャライザー内で行います。
テンプレートの変更は、おそらくプラグインコネクタに紐付けるか(やむを得ない場合のみ)テンプレートフォルダ内でオーバーライドします。
イニシャライザー内でウィジェットを装飾したり、再オープンしたりすることも可能です。
結局のところ、あなたが変更しているのはウェブページではなくウェブアプリケーションなのですから、「裸の HTML」をどこかに置く必要はありません。
いずれにせよ、複数のプラグインや TC を並行して実行しても特に問題はありません。
JQ331
2021 年 3 月 13 日午後 12:47
3
テーマやカスタマイザーでは、常に新しい HTML を追加しています。テーマではなくプラグインにこれを追加して、単一のコードベースにしたいと考えています。
テーマを作成する場合であれば「共通フォルダ」内の「ヘッダー」に配置する HTML を、プラグインではどこに配置すればよいでしょうか?
直接的な同等品は私の知る限り存在しません。
また、それが必要になることもありません。
現在行おうとしていることをそのまま移植してください。
JQ331
2021 年 3 月 13 日午後 1:02
5
CSS の場合、プラグイン内での同等のパスは [plugin]/assets/stylesheets/common/[file.scss] です。
この形式に合わせて、[plugin]/assets/views/layouts/common/header.html にファイルを追加しようとしましたが、動作しませんでした(views/header.html だけを試しても同様に機能しませんでした)。
テンプレート自体を変更することはできますが、テーマで行うような単純な HTML の変更を header.html(または同等の場所)で行えるようにしたいです。例えば、すでに複雑なサーバーサイド処理を行っているプラグイン(そのためプラグインが必要となっています)において、以下のコードをどこに配置すればよいでしょうか。
dax:
「common」タブまたは「desktop」タブを選択し、「header」タブにカスタム HTML を追加してください。HTML/CSS に不慣れな場合、モバイル端末でのカスタマイズは複雑になるため、個人的には最初は「desktop」でのみヘッダーを変更することをお勧めします。
例として、メニューの HTML 部分を「header」タブに追加することから始めてみてください。
<div id="top-navbar">
<span id="top-navbar-links">
<a href="http://example.com">Home</a>
<a href="http://example.com/about/">About</a>
<a href="http://example.com/news/">News</a>
<a href="http://example.com/products/">Products</a>
<a href="http://blog.example.com/blog">Blog</a>
<a href="http://forums.example.com/">Forums</a>
</span>
</div>
pfaffman
(Jay Pfaffman)
2021 年 3 月 13 日午後 1:18
6
プラグインとテーマでそのような処理を行う方法の違いが混乱を招くのも分かります。その手の処理はテーマコンポーネントに任せるという手もありますが、素早く済ませる方法ではなく、ベストな解決策をお探しのようです。(ただし、その手の処理を分離して別々にメンテナンスする利点もあります)
plugin.rb に目的のファイルを読み込む行を追加する必要があると思います。私の場合は、Discourse の GitHub リポジトリにある all-the-plugins というものをクローンし、例を探すためにそこで grep を実行しています。
JQ331
2021 年 3 月 13 日午後 1:25
7
なるほど、ありがとうございます。確かに、テーマのようにプラグイン内で HTML を直接変更する簡単な方法はないのかもしれません。HTML を変更するには、プラグイン内のテンプレートやコネクタを編集する必要があります(それほど複雑ではありませんが、common/header.html のような単純なテーマの考え方とは異なります)。
plugin.rb を確認して、通常のテンプレートやコンポーネントのルートを使うよりも簡単かどうかを検討してみます。
pfaffman
(Jay Pfaffman)
2021 年 3 月 13 日午後 1:32
8
How to override a template.hbs from a plugin - #4 by tshenry をご覧ください。これが探している魔法のような仕組みだと思います。
私が言った場所ではありませんが、正しい名前で assets ツリーに配置します。理解するまではわかりにくいですが、一度わかれば非常に明白になります。
編集:@JQ331 さん、こんにちは。昨日、プラグインであなたが求めていることをやったことに気づきました。しかし、私が下手なせいで、それがあなたが探しているものだと気づきませんでした。GitHub - literatecomputing/discourse-max-topics-per-month · GitHub をご覧ください。非常にシンプルなので、例を見つけるのを邪魔する要素はほとんどありません。