アイキャッチ画像: デスクの上でパソコンを使用している

最近非常に暑いですね。最寄りのJR石山駅から徒歩5分あるかないかくらいなのに、スタジオ・ウミの職場に付く頃には毎日滝のような(言いすぎ?)汗が流れています。 水分補給と塩分補給はしっかりしたいものですね。

さて、今回はDrupalでリンクを生成する関数について書き殴ろうと思います。

それがこちらl関数です (検索する時は 「drupal l function」って書くと大体1番上に英語版のAPIが出てきます)

$text リンクのテキストです。の中身です。 画像なども入れられますが落とし穴があります。

$path リンクのパスです。urlを入力できますが、 外部サイトで無い限り「node/1」とか「contact」のようなDrupal内部パスを用います。単にエイリアスだけでも認識してくれますが「node/*」の方で指定した方が良さそうな気がします。 drupal内部パスで指定してあげるとどの階層にいても自動でDrupal側でリンクを生成してくれます。

$options(配列) リンクに様々なオプションを追加できます。 キーとそれに対応する値を入力します。私が良く使うのはこの4つ。

  • attributes(配列):id属性やclass属性などの属性の追加ができます。
  • html:デフォルトはfalseになっています。trueにすると$text部分にhtmlを使うことができます。 $text部分で記述した落とし穴はここですね。falseのままだとhtmlコードが勝手にエスケープされてしまします。
  • fragment:アンカーリンクを利用する際に使います。頭の#は付けてはいけません。url関数で使われているものと同じものです。
  • query(配列):GETクエリを生成できます。こちらもurl関数で使われているものと同じものです。

ちなみにfragmentとqueryのオプションはurl関数で使用される要素です。 url関数の$option部分をl関数でも使えるんですね。url関数については近々書きます。 また、l関数はリンクを作成するだけなのでPHPのprint関数などを使って出力してあげないと画面に表示されません。 実はよくここで引っかかるんですよね・・・

さて、以上を全て入れたコードを書くなら以下のようになります。

お問い合わせ', 'contact', array( 'attributes' => array( 'id' => 'contact-link', 'class' => 'link' ), 'html' => true, 'fragment' => 'contact-form', 'query' => array('content' => 'ホームページ制作について') ) ); ?>

実際に確認はしてないですがこれがhtmlコード化されるとこんな感じになります。

  <a href="./contact#contact-form?content=ホームページ制作について" id="contact-link" class="link"><strong>お問い合わせ</strong></a>

ちゃんと確認したら結果を載せますね!


2013/8/27 追記 上記のコードはこのような結果になりました。

<a href="/contact?content=%E3%83%9B%E3%83%BC%E3%83%A0%E3%83%9A%E3%83%BC%E3%82%B8%E5%88%B6%E4%BD%9C%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6#contact-form" id="contact-link" class="link"><strong>お問い合わせ</strong></a>

エンコードされた部分はデコードすると

ホームページ制作について

となりました。