Blog

#concrete5 ブロックからテーマのJavascriptを読み込ませる方法[追記あり]

Posted by admin at 20:50 日時 2011/01/17

concrete5によるWeb制作に役立つTipsの更新です。

特定のブロックがページに存在するときだけ、テーマ内の特定のJavascriptを<head>内に呼び出したい時の方法です。

まず、ブロックのcontroller.phpのクラスに、on_page_viewメソッドを追加します。
ブロックからテーマのパスを取得するには、テーマファイルのように $this->getThemePath(); とは書けません。View::getInstance()を呼び出してあげる必要があります。
<head>タグ内にスクリプトを追加するには Loader::helper(‘html’) を呼び出してあげてから、 $this->addHeaderItem($html->javascript(‘jsのパス’)) でOK。

public function on_page_view(){  $html = Loader::helper('html');  $v = View::getInstance();  $themePath = $v-&gt;getThemePath();  $this-&gt;addHeaderItem($html-&gt;javascript($themePath.'/js/jquery.validate.js'));  }

こんな感じ。公式サイトの以下のページに解説されていました。

どうもブロックのパスを取得する方法がなさそうなんですが、また調べてみるつもり。

追記

@tao_sさんからテーマのパッケージにカスタムテンプレート足した方が良くないですか?という指摘がありました。うーむパッケージを使うとテーマとブロックをセットに出来るんでしたっけ…。パッケージがまだあまり分かっていない。

とりあえず、上記の例は特殊な用途ですね。

ブロックのパスを取得する方法もコメント欄で補足いただきました(^o^)

DIR_FILES_BLOCK_TYPES.”/”.$bt->getBlockTypeHandle().”/”


Share this entry