このサイトのテンプレート作成の事もあり、私なりにテンプレート作成記録を書いていこうかと思う。
まず、第一回(って続くのか?)
よくあるサイト下部の 「|」で分割されたメニューをモジュールの出力をそのまま使って、作ってみる。できあがりの出力結果は、画像の通り。
ちなみに解説すると、tableタグを使わずセンターに持ってきて、しかも文字で「|」をセパレータとして使い、センターに持ってきて且つ、横幅は臨機応変、柔軟に対応したい。(こんなことしなくたって・・・と言う方は、さっさとよそへ行った方が時間がもったいないです。)
で、モジュールから出力されるメニューは、モジュール(mod_mainmenu)の設定をどうしようが、メニューリンクは、必ず「ul」なり、「table」タグで囲まれて出力されます。私のような、CSS下手な人間にとってこれは、非常に面倒です。・・・私には無理です。
そこで、こんなオーバーライドをしてみました。
自分のテンプレート/html/modules.phpが無ければ、作成します。
以下のように追記する。
<?php defined('_JEXEC') or die('Restricted access');
function modChrome_striptag($module, & $params, & $attribs)
{
$display = preg_replace('/<\/?(ul|li)[^>]*>/si', '', $module->content);
if(!empty($attribs['separator'])){
echo str_replace('a><a', 'a>'. $attribs['separator']. '<a', $display);
return;
}
echo $display;
}
?>で、テンプレート側には、以下のように記入することで「ul」「li」のタグが無くなって「a」タグで囲まれた部分とセパレータとして指定された物だけが出力されます。
<jdoc:include type="modules" name="bottom" style="striptag" separator=" | "/>
こうすることで僅かなスタイル指定とタグで目的がかないました。
これを応用するとテンプレート側でID値や、class値を自由に決定したり、タグすら変更することができ、テンプレートの編集をしながらJoomla!の管理画面を開いてモジュールの接尾辞(module class suffix)を設定する必要もありませんし、仮に既に接尾辞が設定済みであってもそれを無視してテンプレートのスタイルを適用できるので、どんなJoomla!の環境に移行しても同じスタイルで表示されると言うわけです。
これって以外に便利では?









