「制限」フィールドで分類を作成し、「制限」数内に用語を追加できるようにしました。以下はそのスクリーンプリントです。
私の質問:各用語を使用しているノードの数を制限して、「ノードの数」(=いくつかの用語を使用して)この「制限」フィールドを超えることはできませんか?
更新:@ Pierre.Vriens Answerを試してみましたが、まだ機能しないと思います。
Rules を Views Bulk Operations モジュールと組み合わせて使用すると、これを機能させることができます。詳細については、以下の「ブループリント」を参照してください。
Views および Views Bulk Operations モジュールを使用して、VBOフィールドを追加する特定の分類用語を持つすべてのノードのビューを作成します。各ノードにnid
のようなフィールドを含めるだけです(他のフィールドは必要ありません)。考慮したいノードごとに正確に1行を取得するようにしてください。
次のようにルールコンポーネントを作成します。
これらのルールコンポーネントパラメータの使用:
node_limit
_があると仮定しましょう。node_termreference
_を持っているとします(これは、定義した方法に応じて、単一の値または複数の値のいずれかになります)あなたのコンテンツタイプでそれを)。ルール条件を使用すると、「VBOビューから返された結果の数を確認してください」、ただし:
node_limit
_(このルールコンポーネントで使用される最初のパラメーター)以上であるかどうかを確認します。ルールアクション:
node_termreference
_フィールド(このルールコンポーネントで使用される2番目のパラメーター)から入力された用語を削除します。そのために使用するルールアクションは、そのフィールドの定義方法によって異なります。たとえば、複数値フィールドの場合は、「リストから削除」を使用する必要があります。次のようなカスタムルールを作成します。
node_termreference
_パラメーターの値を指定して、後でステップ2のルールコンポーネントを実行する必要があります。node_limit
_パラメーターの値を指定して、後でステップ2のルールコンポーネントを実行する必要があります。node_limit
_および_node_termreference
_の適切な値を渡して、実際にロジックを実行します。完了!....only using (popular) contributed modules, with no custom code involved
....必要なのは Rules 、 Views と- 一括操作を表示 。
PS:上記は単なる青写真です...主にあなたの質問に十分な詳細がないためです。たとえば、コンテンツタイプでこれらの用語がどのように定義されているかを説明していません)。
この機能を備えた貢献モジュールはまだないと思います。これには少しカスタマイズする必要があります。
hook_node_validate に条件を設定して、そのノードに関連付けられているノードの数を確認し、設定した制限と比較します。
function taxonomy_select_nodesを使用して、用語に関連付けられたノードを返すことができますすべてのフィールドインスタンス。
制限事項:::この関数では、分類モジュールが独自のテーブルを維持している必要があり、そうでない場合は空の配列を返します。他のフィールドストレージメソッドを使用する場合は、用語をリストするための代替メソッドを使用する必要があります。
既存のDrupal form にカスタム検証を追加する方法を学ぶ
Node Formを使用してノードを操作する場合、 hook_node_validate を使用する必要があると思います