...

システムのヘッドタグより先に出力したい:Joomla!1.5

by user

on
Category: Documents
4

views

Report

Comments

Transcript

システムのヘッドタグより先に出力したい:Joomla!1.5
システムのヘッドタグより先に出力したい:Joomla!1.5 -Joomler!.net - Decided on Joomla!
Written by Joomler!
Friday, 08 August 2008 16:40
Javascriptやスタイルシートをシステムで出力されるより先に出力したい場合があります。
その時は、Joomla!1.5の場合テンプレート「index.php」の以下のタグより先に書けば可能で
す。
ここに書く
<jdoc:include type=&quot;head&quot; />
ですが、これだとmetaタグなどよりも先に出力されてしまうことになります。
そこでJoomla!1.5の出力するJavascriptやスタイルシートが出力される前に出力されるように
順番を変えてみることにします。
まずは、Javascript
まず、何がすでにJavascriptとして登録されているかを取得します。
テンプレートの「index.php」内の「defined( '_JEXEC' ) or die( 'Restricted access'
);」の行より下に以下のように書いてみます。
$myHead = $this->getHeadData();
これで「$myHead」にheadタグで出力される内容が得られます。これは配列になっています。
次に登録されているJavascirptを取得します。
1/3
システムのヘッドタグより先に出力したい:Joomla!1.5 -Joomler!.net - Decided on Joomla!
Written by Joomler!
Friday, 08 August 2008 16:40
$myScript = $myHead['scripts'];
「$myScript」に配列でJavascriptの一覧が入りました。
では先に出力されるようにしたいJavascriptを以下のように書きます。
$myOutputScript['/templates/mytemplate/js/myscript.js'] = 'text/javascript';
そして
$myScript = array_merge($myOutputScript, $myScript);
$this->setHeadData(array('scripts' =>$myScript));
これですでに登録済みのJavascriptより先に自分のJavascriptが出力されるようになります。
まとめて書くと以下のようになります。
<?php $myHead = $this->getHeadData(); $myScript = $myHead['scripts'];
$myOutputScript['/templates/mytemplate/js/myscript.js'] = 'text/javascript';
$myScript = array_merge($myOutputScript, $myScript);
$this->setHeadData(array('scripts' =>$myScript)); ?>
スタイルシートも同様に以下のようにすれば可能です。
<?php $myHead = $this->getHeadData(); $myStyleSheets = $myHead['styleSheets'];
$myOutputStyle['/templates/mytemplate/css/mystyle.css'] = array('mime' =>
'text/css', 'media' => 'screen', 'attribs' => array()); $myStyleSheets =
array_merge($myOutputStyle, $myStyleSheets);
$this->setHeadData(array('styleSheets' => $myStyleSheets)); ?>
ところで、先に追加したい場合は上記のように面倒でしたが、後に追加したい場合は楽にでき
ます。
2/3
システムのヘッドタグより先に出力したい:Joomla!1.5 -Joomler!.net - Decided on Joomla!
Written by Joomler!
Friday, 08 August 2008 16:40
テンプレートの「index.php」に以下のよう書けばlinkタグやscriptタグが乱雑に出力されるこ
とは少なくなると思います。
<?php //Javascriptをscriptタグで追加します。
$this->addScriptDeclaration('alert("example");'); //Javascriptファイルを追加します。
$this->addScript('/templates/mytemplate/js/myscript.js');
//スタイルをstyleタグで追加します。
$this->addStyleDeclaration('body{background-color:black;}');
//スタイルシートを追加します。
$this->addStyleSheet('/templates/mytemplate/css/mystyle.css', 'screen'); ?>
ですが、後に追加する時はここまで意識しなくても先の「jdoc」タグの後に直接書けば良いの
でここまでする必要はないでしょうね。
先に出力しなければならない場合、例えばJavascriptのコンフリクトが生じたりする場合など
には先に出力され且つ、metaタグより後に出力されることは重要になる機会があるかもしれま
せん。
以前にJoomla!1.0.xで同様のことがあったのでJoomla!1.5ではどうなのかと調べてみました。
3/3
Fly UP