メインコンテンツに移動

メインナビゲーション

  • ホーム
  • サイトマップ
  • ビデオ
  • ご連絡

パンくず

  • ホーム
  • Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生

Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生

drupal
customization
token

Drupalのトークン(Token)をPHPで扱う関数(token_replace)を用いてトークンの値を表示したり、加工することができます

  • 時々Drupalのトークンの表示変更、値を加工したいことがあります。Drupalでは関数(token_replace)が用意され、トークンの値をPHPに渡すことができます
  • 関数使用説明を読んでいました。関数(token_replace($text, array $data = array(), array $options = array()))の引数のデータ($data)の使用方法はいまいちよくわからないです

token_replace関数の$dataオプションを渡したらエラーが発生

  • token_replace関数の説明ページにある実例をコピーして実装していまたが、Tokenの取得が成功、但しエラーが発生しました
    <?php
      print( token_replace('[user:name]' ,  array('user' => $user) ) ) ;
    ?>
    

    Notice: Undefined variable: 
      user in eval() (line 2 of 
        /virtual/drills/public_html/drupal7/sites/all/modules/ds/modules/ds_format/ds_format.module(66) : eval()'d code). =>
  • 関数の$dataパラメータを削除したら、Tokenの取得が成功、エラーが発生しません
    <?php
      print( token_replace('[current-user:name]' ) ) ;
    ?>
    
  • 具体的な操作はビデオを確認ください
  • テスト関連のバージョン情報
    • Drupal:7.54
    • Display Suite:7.x-2.14

 

Embedded thumbnail for Drupal7の関数(replace_token)の利用及び引数$data関連エラーの発生
drupal
video
customization
display suite
module usage

コンテンツ表示管理画面でモジュール(Display Suite)の「コードフィールド」内にあるTokey情報を利用して新規フィールド作成

  • コンテンツ管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)の下にある「Custom Fields」セクションで「コードフィールド追加」があります
  • 「コードフィールド追加」ボタンをクリックして、フィールドラベル、適応範囲などを入力します。フィールド作成ページの下にある「トーク」チェックボックスをチェックして、Tokenの利用が可能になります
    • 「利用可能なトークンを表示」リンクをクリックして、サイト内すべてのトークンが表示されます
    • 必要なものを検索して、トークン(例:[user:name])をコピーして、Field Codeフォーム入力すればよいです
  • コードフィールドの修正はコンテンツ表示管理画面ではできません。DisplaySuiteの管理画面(ホーム » 管理 » サイト構築 » Display Suite » フィールド)で行います

新規作成したフィールドを画面表示させ、確認

  • コンテンツ表示管理画面(ホーム » 管理 » サイト構築 » コンテンツタイプ » Article » 表示管理)で新規新規作成しフィールを適切な場所に配置します
  • コンテンツ表示された画面で選択したトークンを確認します
  • 実際の操作はビデオでご確認ください

DSのコードフィールドで表示されたすべてのトークの利用はできません

  • ビデオに使用したトークン例:[user:name] と [current-user:name]があります
  • 実際に[user:name]が何にも出力しませんでした。利用可能なのは [current-user:name]でした

DSのコードフィールドいろいろな場所(例:User、Profileなど)で使用可能なので、すべてのトークンが表示されても、その場所で利用できないものがあります

  • DBが広範囲(コンテンツだけではない)で使用可能なので、当然コードフィールド内の利用可能なトークンを定義するのは難しいです。
  • トークン一覧のフィルタリングにできないため、すべてのトークンが表示されます
  • 利用場所を想定して、利用可能トークンの選択は必要となります

どんな場所でどのトークンが利用可能かのドキュメントはあまり見つかっていないです。

  • 経験での判断といろいろなトークンを出力してみて確認したほうが良いでしょう
Embedded thumbnail for Drupalのモジュール(Display Suite)のコードフィールド内のトークン(Token)利用不可のものが多い
ホーム

古松

検索

Article Category

  • apache(7)
  • css(19)
  • drupal(295)
  • Electron(4)
  • html(34)
  • javascript(27)
  • laravel(4)
  • linux(5)
  • macOS(2)
  • mysql(13)
  • php(19)
  • python(4)
  • SEO(12)
  • video(72)
  • Visual Studio Code(4)
  • windows(13)
  • wordpress(32)