Joomler!.net - Decided on Joomla!

Wiki or Wordpress? No it is JContentPlus.

 

Archives

Blog

Demo

Home » Blog » $params
0 votes
Written by:Joomler! 6568 hits Tuesday, 10 March 2009 16:35

第四回は、メニューで設定したクラス接尾辞をテンプレートで利用してみます。

ページ毎(メニュー毎)にクラスの値を変えたり表示を変更するのは、$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で分岐してやることと大きな差はありませんが、最初に上記のコードを書いておく事で面倒な複数の分岐処理を書く必要がなくなります。

全く同じようにする必要はありませんが、何かの足しにはと・・・。

 
0 votes
Written by:Joomler! 15028 hits Friday, 14 November 2008 17:32

言われてみればその通り、関連記事モジュールには表示件数の制限が無いためたくさんヒットしたらそのまま表示されてしまいます。考えてみればこのサイトではそれだと見た目も悪くなるし、少し内容も表示したかったのでオリジナルの関連記事モジュールを作成したことを忘れていました。

とりあえず、表示件数の制限をつけることくらいは簡単なのでHackか、テンプレートでやっちゃえば簡単です。

まずは、Hackなら

$db->setQuery($query);

$db->setQuery($query, 0, 20);

のように、最初(0)から20個の記事というように20の部分に表示最大件数を入れます。自由に設定できるようにしたい場合は、

$db->setQuery($query, 0, intval($params->get('limit', 20)));

のようにし、xmlファイルのパラメータ部に

<param name="limit" type="text" size="3" label="最大件数" description="" />

などと追加すればバックエンドで最大件数が設定できるようになります。

ではテンプレート側でやるには

mod_related_items/tmpl/default.phpとindex.htmlを、使っているテンプレートフォルダ/html/mod_related_itemsにコピーします。そしてコピーしたdefault.phpを編集します。

<?php foreach ($list as $item) :	?>

<?php
$i = 0; 
foreach ($list as $item) :
 	if($i > 20){
 		break;
 	}
 	$i++;
 ?>

のようにすればOKです。

本体をHackする方法だとアップデート時に、忘れていたりしてかなり面倒になってきたりしますので、それを考慮にいれるとテンプレート側で対応する方法を行った方が良いかもしれません。

 
0 votes
Written by:Joomler! 27687 hits Thursday, 13 December 2007 18:41

Fireboardのログインの件でJoomla!じゃぱんのフォーラムに投稿しましたが、もう少しコードを変えてみます。


ROOT/components/com_login/login.php の22行目あたり...

コード:
global $mosConfig_live_site, $mosConfig_frontend_login, $mosConfig_db;

コード:
global $mosConfig_live_site, $mosConfig_frontend_login, $mosConfig_db, $Itemid;
に。

同じく38行目あたりを..

コード:
$params->def( 'login', $mosConfig_live_site );

コード:
if($Itemid == あなたの飛ばしたいメニューID番号){
$params->set('login', sefRelToAbs('index.php?option=com_fireboard&Itemid=あなたの飛ばしたいメニューID番号'));
} else {
$params->def( 'login', $mosConfig_live_site );
}

などとすれば可能なようです。


まずは、ROOT/components/com_fireboard/template/default/plugin/profilebox/profilebox.phpの110行目あたり
これは、もしかするとコミュニティビルダーなどのプラグインの使用状況により位置がことなるかもしれません。
(うちの環境ではプラグインは使用していません。)

に変更し、さらにROOT/comoponents/com_login/login.phpの38行目あたり


のように変更すれば、ログイン後表示していた記事に戻れます。


 
5 votes
Written by:Joomler! 35432 hits Monday, 10 December 2007 17:08

Joomla!のエクステンションで一番簡単に作成できるのがモジュールだと思います。もちろん、複雑な処理をするものも作成できるのですが簡単なものならすぐにできます。簡単なモジュールを作ってみましょう。

用意するもの

  • テキストエディタ
    PHPコードとXMLをUTF-8(BOMなし)で書けるものなら何でも良い。

mod_example.jpg<h1>Joomla! Module</h1>と出力するだけのmod_example.phpを作成します。
(右ができあがりイメージ)

1.テキストエディタで新規作成し、適当な場所にmod_example.phpと名前をつけて(UTF-8のBOMなし)で保存してください。

2.1.と同様mod_example.xmlを作成してください。

3.現在あるモジュールを開いてみる。たとえば、mod_latestnews.phpを開く。

目につくのは、

// no direct access
defined( '_VALID_MOS' ) or die( 'Restricted access' );

これは、直接このファイルにアクセス(http://yoursite.com/modules/mod_latestnews.php)してもこのファイルを見ることができないようにします。これは必要です。

作成したmod_example.phpに


<?php

// no direct access
defined( '_VALID_MOS' ) or die( 'Restricted access' );

?>

と書きます。コピーペーストでOK。

4.?>の後で改行して

<h1>Joomla! Module</h1>

と書きます。

5.mod_examlple.xmlにmod_latestnews.xmlの内容をすべてコピーします。
(コピーが一番簡単に作成できる方法です。)

変更必須のところ

  • <filename module="mod_xxxxxxxx">mod_xxxxxxxx.php</filename>

ここだけです。他は、名前が重複したりしても構わないならそのままでOK。

<filename module="mod_example">mod_example.php</filename>

モジュール名を考えるとき(プラグインもコンポーネントも同じ)大文字を使わないでください。大文字を使っても呼び出されるのは、小文字の名前で呼び出されます。

6.完成しました。え!

mod_example.php


<?php

// no direct access
defined( '_VALID_MOS' ) or die( 'Restricted access' );

?>

<h1>Joomla! Module</h1>


mod_example.xmlは、mod_latestnews.xmlの内容を一行変更しただけ。

<filename module="mod_example">mod_example.php</filename>

7.作成したmod_example.phpとmod_example.xmlをそのままzip圧縮します。
(二つのファイルを選択して圧縮)

8.インストールして公開。
xmlファイルのname部分を変えていないのでlatest newsという名前のモジュールが二つあるはずです。公開されていない方が今回作成したmod_exampleなので注意してください。

今回はmod_latestnewsをそのまま流用しましたが、パラメータの受け渡しを説明したかったからです。

インストールしたmod_example.phpの<?php ~ ?>の間に下記の行を加えてください。

var_dump($params);

ページを開くとどのようにパラーメータが保持されているかわかります。

パラメータ(設定値)を呼ぶ。

$params->get( 'パラメータ名', デフォルト値 );

または、

$params->get( 'パラメータ名' );

など。

パラメータの指定方法は、xmlファイルをみればわかるでしょう。

今回は、ただ出力するだけのものを作成してみました。 う~んこれなら1分て書いても良かったかな。

 

JContentPlus for Joomla!1.5 powered by Joomler!.net

joomler.net is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla!(R) name is used under a limited license from Open Source Matters in the United States and other countries.
joomler.net is not affiliated with or endorsed by Open Source Matters or the Joomla! Project.