新しいディスコースインスタンスでのタグの問題?

新しい Discourse インスタンス(現在 38950840e0)は、ここ数日稼働しています。今日タグ機能を有効にしたところ、すぐに複数の問題に直面しました。

新しいトピックを作成する際は、タグを追加でき、期待通り動作します。しかし、既存のトピックを編集してタグを追加しようとしたり、新しいタグを作成しようとしたりすると、何も起こりません。ネットワークリクエストでは PUT としてタグが送信されているのが確認できますが、データベースを確認すると topic_tags テーブルにも tags テーブルにも何も記録されていません。

また、タグのリンクが /tag/<タグ名> になる場合と /tags/<タグ名> になる場合があることに気づきました。前者は動作しますが、後者は動作しません。

インストールはほぼデフォルトで、プラグインも multilingual のみです。このプラグインがタグ機能に影響している可能性はあるでしょうか?管理画面の設定はほとんど変更しておらず、タグ関連では「トピックでタグを有効にする?」にチェックを入れただけです。

フォーラムはオンラインですが、現在は非公開設定になっています。確認したい方がいれば招待リンクをお送りできます。

「いいね!」 1

タグのルートは最近 tags から tag に変更されました。この問題はプラグインが原因である可能性が高いです。

サイトのエラーログ(管理画面 / ログ / エラーログ にあります)を確認し、トピックにタグを付けてみてください。これによりログにエントリが追加される可能性があります。もし追加された場合、またはタグに関する古いログエントリが見つかった場合は、そのエントリの「info」タブと「backtrace」タブに表示されている内容を確認してください。

「backtrace」タブには、問題の原因を特定する手がかりが得られるかもしれません。表示例は以下のようになります。

「いいね!」 2

返信ありがとうございます。ログには何もありませんでした。推測するに、Multilingual Plugin 🌐 の内容が最近の変更に対応していないのではないかと思われます。

実は、このプラグイン全体が必要なのではなく、一部のみが必要です。「既存のインターフェース言語の使用を無効化する」機能だけが必要ですが、それを簡単に実現できる別の方法が見当たりません。

「いいね!」 1

今後の参考のために、誰かにとって役立つかもしれないので、多言語プラグインから必要な非常に短いスニペットを抜き出して別プラグインとして作成し、私のユースケースでは問題なく動作しています:

// assets/javascripts/discourse/initializers/custom-locale-initializer.js.es6

import { withPluginApi } from 'discourse/lib/plugin-api';
import { default as discourseComputed } from "discourse-common/utils/decorators";

export default {
  name: 'custom_locale',
  initialize(container) {
    const siteSettings = container.lookup("site-settings:main");

    if (!siteSettings.custom_locale_disable_others) return;
    
    withPluginApi('0.11.1', api => {
      api.modifyClass('controller:preferences/interface', {
        @discourseComputed()
        availableLocales() {
            return [
                { value: 'en', name: 'English' },
                { value: 'cust', name: 'My Custom Locale'},
            ]
        }
      });
    });
  }
}

タグは期待通りに動作しており、問題がプラグイン側にあることを確認できます。(/tags から /tag への参照をいくつか編集してみましたが、成功しませんでした。)

「いいね!」 2

/tags から /tag へ…」という意味でしょうか?:slightly_smiling_face:

「いいね!」 2