私のサイトの多くの場所(企業が所有する店舗、独立した店舗、ブランドの数など)に表示される可能性のある特定の値があり、コンテンツの作成者および編集者は最新の状態を維持しにくい可能性があります。それらが表示されるすべての単一ページ。
(例えば)settings.phpの変数にそれらを入れてから、PHPスニペットをそれらを使用する必要があるノードに入れることができますが、明らかな欠点があります:
現在、ノードのコンテンツフィールドに[node:field_corporate_stores]
のようなトークンを配置できるように Token Filter module を使用して実験しています。これは、そのフィールドが、置換される本文のコンテンツも持つノード上にある場合に正常に機能します。しかし、もちろんそれは目的を達成しません。値を含むoneノードが必要です。値を消費する他のノードを無制限に使用できる。しかし、それを行う方法はわかりません。
data_node
のようなトークンに[data_node:field_corporate_stores]
を定義するにはどうすればよいですか??? (ノードでPHPスニペットを使用しない場合。)
カスタムトークンモジュール は、このためのほぼ完璧なソリューションのようです。
好意的には、コンテンツエディターが使いやすい管理インターフェイスを提供します(正規表現を扱う必要があるものは、より強力で汎用的なツールであっても混乱する可能性があります)。私のコンテンツエディターが使いやすいことは非常に重要です。なぜなら、彼女は、トークンを置き換えるのに適した候補となる値を時間とともにますます特定するため、それらを集中管理して最新に保つことができるからです。
マイナス面としては、[custom:my-token-name-here]
などのトークンの特定の構文に制限されます。ハイフンの代わりにアンダースコアを使用できればいいのですが。 {{my_token_name_here}}
のようなものを使用できればさらに良いでしょうが、それは大した問題ではありません。トリックの袋に入れるべきすべての良いモジュールのすべて。
Custom Filter モジュールを見てみましょう。私はそれを1年ほど前に見ましたが、自分でロールすることにしましたが、メモリから、独自のシステム全体のトークン置換を指定できます。
これはベータ版よりも新しいものですが、その構成のほとんどが1か所にあるように見える サンドイッチモジュール を見てください(たとえば、Xタイプのすべてのノード間)。
モジュールは約400行のコードにあり、2つの小さな使用例のモジュール/テーマのように見えます。
編集:明確にするために、これは、MY_CUSTOM_VALUEのように、カスタムマークアップをオフにします。モジュールに実装します。ページキャッシングがオンになっていると、大きな影響はありません。コードに「値」を保持し、Tokenモジュールに依存しないでください。
これらすべての値をキャプチャして変数テーブルに格納する管理フォームを用意できます。次に、 Token Var モジュールを使用して、これらの値をトークンとして使用できます。
注:現在、配列以外の値のみがサポートされていますが、配列をサポートするように簡単に拡張することもできます。