nstoecki42
(Nico Stöckigt)
2023 年 4 月 28 日午前 10:24
1
こんにちは。
特定のカテゴリに免責事項を追加しようとしました。「バナー」のようなものを表示したかったのです。例えば、
「これはユーザーの最初の投稿です。新しいメンバーをコミュニティに歓迎しましょう!」
または
「USERさんにしばらくお会いしていません。最後の投稿は1年前です。」
を各投稿の上に表示したいと考えていました。
これをアーカイブするために、以下を試しました。
common/head_tag.html
<script type="text/discourse-plugin" version="0.8">
api.decorateWidget('post:after', (helper, args) => {
if (args.topic.category_id === 51) { // 私のカテゴリ
const $post = helper.find('.cooked');
const disclaimerText = api.decorateCooked(helper, args, settings.MY_DISCLAIMER);
$post.prepend(`<div class="disclaimer">${disclaimerText}</div>`);
}
});
</script>
念のため、以下も記載します。
settings.yml
MY_DISCLAIMER:
type: string
default: 'This is a Category that comes with limited warranty and is to be used at your own risk.'
description: Disclaimer Text for Category
また、.disclaimer クラスを含む common/common.scss もあります。
しかし、これを有効にすると、投稿自体が表示されなくなり、コンテンツエリアが空白になってしまいます。
何か助けがあれば幸いです!
「いいね!」 1
こんにちは、おかえりなさい!
空白が表示される場合は、エラーが発生しています。helper には find が存在しません。
通常、これはブラウザのコンソール(F12)で確認できます。
おそらく、次のようなものが必要でしょう。
api.decorateWidget('post:before', (helper, args) => {
if (helper.widget.model.topic.category_id === 51) {
return helper.h("div.disclaimer", settings.MY_DISCLAIMER)
}
});
または、生のHTMLを使用します。
const RawHtml = require("discourse/widgets/raw-html").default;
api.decorateWidget('post:before', (helper, args) => {
if (helper.widget.model.topic.category_id === 51) {
return new RawHtml({html: `<div class="container">${settings.MY_DISCLAIMER}</div>`})
}
});
この h ヘルパーがどのように機能するかを説明しているこちらの投稿 を読むことができます。
調理済みコンテンツの前にHTMLを追加したい場合は、次のようにします。
api.decorateWidget('post-contents:before', (helper, args) => {
const { topic } = helper.widget.findAncestorModel();
if (topic && topic.category_id === 51) {
return helper.h("div.disclaimer", settings.MY_DISCLAIMER);
}
});
「いいね!」 3
nstoecki42
(Nico Stöckigt)
2023 年 5 月 2 日午前 8:49
4
@Arkshineさん 、ありがとうございました。大変助かりました!
他の言及されたバナーのように、テキストをすべての上に表示したいので、以下のコードを使用しました。
api.decorateWidget('post:before', (helper, args) => {
if (helper.widget.model.topic.category_id === 51) {
return helper.h("div.disclaimer", settings.MY_DISCLAIMER)
}
});
よろしくお願いします!
「いいね!」 1
system
(system)
クローズされました:
2023 年 6 月 1 日午前 8:49
5
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.