This is a plugin for syntaxhighlighting your code by using SyntaxHighlighter 2.0 Javascript Library.
*** Version 2.0.1 Released ***
Home : http://alexgorbatchev.com/wiki/SyntaxHighlighter
Project Home : http://code.google.com/p/syntaxhighlighter/
License : LGPL 3
protected function _getVersion()
{
$version = '';
$this->getData();
if($this->_data->type > 0){
$version = trim( JRequest::getVar('v', '', '', 'cmd') );
if(!empty($version)){
$version = '_'. $version;
}
}
return $version;
}
第四回は、メニューで設定したクラス接尾辞をテンプレートで利用してみます。
ページ毎(メニュー毎)にクラスの値を変えたり表示を変更するのは、$Itemid(メニューID)を下記のように取得すれば良いことをご存じの方は多いと思います。
$Itemid = JRequest::getInt('Itemid');これで取得したメニューIDでモジュールを表示したり、非表示にすることは、Joomla!1.0.xからも、普通に今まで行ってきました。ですが、これだとクラスの値だけをページ毎に設定したくてもコンテンツなどには、接尾辞は反映されるが、テンプレートまでは来ません。
そこで以下のようにしてメニューで設定したクラス接尾辞をテンプレートで利用できるようにしました。
$Itemid = JRequest::getInt('Itemid');
$pageclass_sfx = '';
if($Itemid > 0){
$menu = &JSite::getMenu();
$params = & $menu->getParams($Itemid);
$pageclass_sfx = $params->get('pageclass_sfx', '');
}
$this->params->set('pageclass_sfx', $pageclass_sfx);こうすることで、通常テンプレートのパラメータ(設定値)を得るように
$this->params->get('pageclass_sfx');で現在のメニューで設定した、クラス接尾辞が得られます。$Itemidで分岐してやることと大きな差はありませんが、最初に上記のコードを書いておく事で面倒な複数の分岐処理を書く必要がなくなります。
全く同じようにする必要はありませんが、何かの足しにはと・・・。
Joomla!にはじめから付いているデフォルトテンプレートを考察!?してみる。
rhuk_milkyway
ja_purity
beez
基本から少し拡張している部分もあってJoomla!の基本が、一番わかりやすいテンプレートだと思います。例えばindex.phpの冒頭にある下記のコード
$showRightColumn = $this->countModules('user1 or user2 or right or top');
$showRightColumn &= JRequest::getCmd('layout') != 'form';
$showRightColumn &= JRequest::getCmd('task') != 'edit'
こう書く事で右カラムを表示するのかしないのかを判断しています。中程を見ていくと下記のコードで表示・非表示を切り替えていることがわかります。
<?php if ($showRightColumn) : ?>
ここに右カラム
<?php endif; ?>
さらにbeezの非常にわかりやすい点は、htmlフォルダ内でオーバライドされているテンプレート群が多い事です。標準のほとんどのエクステンションがオーバーライドされていることがわかります。なのでオリジナルのテンプレートを作成するときは、beezを基本にされるとわかりやすく、カスタマイズしやすいかもしれません。
また、よくあるフリーのJoomla!とは全く関係のないCSSテンプレートなどでもbeezを参考にJoomla!の出力タグを割り当て、慣れてきたらja_purityを見ながら拡張していくのも一つの方法です。
Joomla!の場合メニュー毎にテンプレートを割り当てる機能があるのでそれでコントロールするのも一つですが、ファイルが複数になって管理しづらくなってしまう弊害もあります。そこで、デザインがあまり変わらないのならJoomla!のデフォルトテンプレートを参考に一定のタイミングで表示・非表示の切替を行ったり、クラス名を変更したりなどと可変なテンプレートを作成する方が簡単で管理もしやすい方法と言えます。
このサイトは、Joomla!1.0でテンプレートのオーバーライド機能はありませんが、独自のコンポーネントを使用する事でオリジナルの出力を行っています。テンプレートは一つのみで、上と同様に一定のタイミング(メニューIDや、コンポーネント、タスクなど)で表示・非表示などを切り替えています。
蜂の顔も見慣れるとかわいく思えます。beezの中身をあらためて見てみると意外な発見があるかもしれません。
サイトを作成しているとよくあることですが、
などと。
Joomla!は、メニューにテンプレートを割り当てる事ができるのでメニュー毎にテンプレートを切り替える方法は、一般的な方法です。
もう一つ簡単な方法として考えられること。要はその表示・非表示の条件が、何で判断できるかを考えてみます。
例えば、
<?php if($this->countModules('作成したモジュールのモジュールポジション')) : ?>
<jdoc:include type="modules" name="ログイン後に表示したいモジュールポジション" style="rounded" />
<?php endif; ?>