2009年6月22日月曜日

nucleus 条件分岐の書き方

<%if(skintype,item)%><%endif%><%if(skintype,index)%><%if(category)%><%else%><%Counter%><%endif%><%endif%>


と書くことでトップのindex のみにcounterを表示するとなる。
endifをちゃんと数書かないと変になる。 スペースをなまじ入れるとCSSおかしくなる。

↑その後 match を使うともっと楽なことがわかった…
<%if(match,blogid=8)%>  でブログidで表示

<%if(match,REQUEST_URI=/)%><div id="flashue"><%else%>
<div id="menuue"><%endif%>

と書くとトップページとそれ以外で分岐できる。
<%if(match,REQUEST_URI=^(/hogehoge/hoge2/|/hoge3/)$,ereg)%>
こんな風に複数指定できます。  こちらにも詳しい情報あり 便利っす!

吹田まごの手サービス様のブログ

ちなみに…カテゴリーごとのbody を変更

<%if(category,catid,1)%>
<body id="dogran">
<%elseif(category,catid,2)%>
<body id="trimming">
<%elseif(category,catid,3)%>
<body id="train">
<%elseif(category,catid,4)%>
<body id="hotel">
<%elseif(category,catid,5)%>
<body id="charge">
<%elseif(category,catid,6)%>
<body id="staff">
<%else%>
<body id="home">
<%endif%>

ここのロールオーバーjavaを使って簡単にメニューの色を変更できます。

大阪のドックランぷらすわん様

ちなみに…
<%if(item,itemid,アイテムID)%> というような書き方は単純にはできないのでCSSで工夫するか… /nucleus/libs/actions.phpの
function checkConditionを改造する方法があるようです。スキンにおいてしか条件分岐できません。

function checkCondition($field, $name='', $value = '') {
global $catid, $blog, $member, $itemidnext, $itemidprev, $manager, $archiveprevexists, $archivenextexists,$itemid;

$condition = 0;
switch($field) {
case 'category':
$condition = ($blog && $this->_ifCategory($name,$value));
break;
case 'blogsetting':
$condition = ($blog && ($blog->getSetting($name) == $value));
break;
case 'loggedin':
$condition = $member->isLoggedIn();
break;
case 'onteam':
$condition = $member->isLoggedIn() && $this->_ifOnTeam($name);
break;
case 'admin':
$condition = $member->isLoggedIn() && $this->_ifAdmin($name);
break;
case 'nextitem':
$condition = ($itemidnext != '');
break;
case 'previtem':
$condition = ($itemidprev != '');
break;
case 'archiveprevexists':
$condition = ($archiveprevexists == true);
break;
case 'archivenextexists':
$condition = ($archivenextexists == true);
break;
case 'skintype':
$condition = ($name == $this->skintype);
break;
case 'hasplugin':
$condition = $this->_ifHasPlugin($name, $value);
break;
case 'item':
$condition = ($itemid == $value);
break;
default:
$condition = $manager->pluginInstalled('NP_' . $field) && $this->_ifPlugin($field, $name, $value);
break;
}
return $condition;
}
↑上記ネタ元:<%if(item,itemid,itemID)%>を実現する/nucleus/libs/ACTIONS.phpの改造


またプラグインもありますが、NP_match.phpでスキンにしか対応していません。 この場合文法が少し変わります。<%if(match,itemid=256)%> などど書きます。

このプラグインでテンプレート内でも条件分岐が可能になります。 正し上記のmatch.phpにしか対応しません。

また複数カテゴリー設定による条件分岐を実現するnucleus/libs/ACTIONS.php の改造

お問合せフォーム

お名前 :
Email: (必須)
メッセージ: (必須)


0 コメント :

コメントを投稿



連絡フォーム

名前

メール *

メッセージ *

サイト内検索