web-dev-qa-db-ja.com

ノードの保存時にフィールド値からノードのタイトルを作成する方法は?

「スーパーテスト」というコンテンツタイプがあり、フィールドには「カテゴリ」と「セクション」があります(どちらも分類基準の参照、ドロップダウンです)。また、すべてのユーザーに「表示名」カスタムフィールドがあります。

また、ノードを保存するたびに(このコンテンツタイプの)ノードのタイトルを更新する必要があります。目的の形式は '[category]-[section]:[author.display_name]'です。

私はルールを追加しようとしました( Rules モジュール内)-「コンテンツの保存前」にアクション「メッセージを表示する」(テストするためだけ)ですが、機能しません。また、カテゴリフィールドの値をタイトルに設定する方法がわかりません。

drupal 8サイトでノードのタイトルを変更するルールを作成するにはどうすればよいですか?

1
Somerussian

答えは、以下の手順に従うだけで簡単に達成できます。

まず、 Rules モジュールの栄光を尊重しますが、Drupal 8 Webサイトでの開発の準備が整っていません。それ以外の場合は、大量の問題に直面している場合、ほとんどの時間は問題ページ内で費やされます。

そこで、代替のワークフローD8モジュールである Business rules が登場します。

ビジネスルール モジュールとは:

ビジネスルールモジュールはルールモジュールに着想を得ており、サイト管理者はイベントに基づいて条件付きでアクションの実行を定義できます。それは変数に基づいており、Drupal 8。
このモジュールには、サイト管理者がサイトのビジネスルールを完全に理解して作成できるようにする完全な機能を備えたユーザーインターフェイスがあります。プラグインを介して新しいReactsOnイベント、変数、アクション、条件を作成することで、拡張することもできます。

documentation を読んで、慣れることを強くお勧めします。

ビジネスルール モジュールを使用する理由?

ビジネスルールモジュールは、上記の質問を達成するのに役立つだけでなく、actionsに基づいてイベントと条件は、管理者として定義されています。

このような優れたモジュールを使用して慣れることで、カスタムモジュールを作成してWebサイトにいくつかの追加機能を追加するのに費やす時間を節約し、ビジネスルールモジュール。

ノードを保存した後、ノードのフィールド値に基づいてタイトルを自動生成する方法:

1)以下をインストールして有効にします。

  • ビジネスルール モジュール。

  • Dbug モジュール。 (ビジネスルールモジュールの依存関係)

  • Token Module。 (あなたのケースに固有)

2)後藤:/admin/config/workflow/business_rules/collection

3)Actionsタブで、+ Add Actionをクリックします

4)Type:フィールド値を設定

5)ここで魔法が起こります:-Label:他のフィールド値に基づいてTitleフィールドを変更します。

  • 説明:他のフィールド値に基づいてTitleフィールドを変更するアクション。

  • 対象エンティティタイプ:コンテンツ

  • ターゲットバンドル:スーパーテスト

  • フィールド:テキスト(プレーン):タイトル[タイトル]

  • 値:[node:category:entity:name] - [node:section:entity:name] - [node:author]

  • アクションを保存します

6)後藤:/admin/config/workflow/business_rules/collection

7)Rulesタブで、+ Add Ruleをクリックします

8)イベントに反応:エンティティを保存する前

  • Label:ノードタイプのエンティティを保存する前(スーパーテスト)

  • 説明:ノードタイプのエンティティを保存する前(スーパーテスト)

  • 対象エンティティタイプ:コンテンツ

  • ターゲットバンドル:スーパーテスト

  • Itemsセクションで:add actionリンクをクリックします。

  • ポップアップウィンドウが開きます:目的のアクションのタイトルをクリックして、現在のルールに追加します。 (あなたの場合、利用可能なアクションは1つだけなので、そのタイトルをクリックします)

  • ルールを保存する

ルールのテスト:

1)後藤:/node/add/superset

2)Title:このタイトルは、このノードを保存すると変更されます

3)必要に応じて分類フィールドを設定します

4)ノードを保存します。

5)新しいタイトルを確認します。

出来上がり!

何か問題があったら遠慮なく助けを求めてください。

0
Charbel El Azzi

自動エンティティラベル のジョブである可能性があります。実際、私はその方法で使用しています–本番環境では(安定したリリースはまだありませんが、問題なく動作します)。

「自動エンティティラベル」は、エンティティラベルフィールドを非表示にすることができる小型で効率的なモジュールです。空のラベルを防ぐために、特定のパターンでラベルを自動的に生成するように構成できます。

タイトルを作成するトークンを定義できます。オプションで、ノードフォームで常に非表示になるようにタイトルフィールドを設定できます。また、タイトルの作成に使用するフィールドを必須(必須)にすることをお勧めします。

enter image description here

1
leymannx