はじめまして、masuと申します。
どうぞよろしくお願いいたします。
テンプレート変数を下記のようにつくってDittoでカテゴリわけをしています。
テンプレート変数名:cate(ドロップダウンリスト形式)
Aカテゴリ==a||Bカテゴリ==b||Cカテゴリ==c||Dカテゴリ==d
カテゴリわけは問題なく動くのですが、所属カテゴリを表示させたいと思い、
Dittoで指定したテンプレートに
カテゴリ:[+cate+]
とすると実際に表示されるのは
カテゴリ:a
となってしまいます。
これを
カテゴリ:Aカテゴリ
のように表示させるにはどのようにすれば良いでしょうか?
MODxを触り始めて間もないため非常に馬鹿な質問をしているかもしれませんが
何卒ご回答のほどよろしくお願いいたします。
Aカテゴリ==Aカテゴリ とかじゃ駄目ですか??
バリューとして登録されるのが右辺側の値になっちゃうので、取り出すとaが入ってきてしまいます。
aをAカテゴリと変換しなおすスニペットをかぶせるか、もし、バリュー値が同じでもかまわないのであれば同じ値を設定しちゃうのが楽です。
ほかにやり方あるかも知れません・・・が、とりあえず。
ZeRoさん
お返事ありがとうございます。
>>Aカテゴリ==Aカテゴリ とかじゃ駄目ですか??
事情でデータベースにいれるのは英数字にしたいと思ってまして、
>>aをAカテゴリと変換しなおすスニペットをかぶせるか
これを試そうと思い、下記のようなスニペットを作ってみましたが、
$cate = ’[+cate+]’;
if ($cate==’a’){
echo ’Aカテゴリ’ ;
}
$cateにテンプレート変数のaが入るのでなく、「[+cate+]」という文字列が入ってしまいます。
冷静に考えればあたりまえの話なのですが、$cateにテンプレート変数の値をいれることは可能でしょうか?
スニペットやチャンクの使い方がまだ十分把握できていないので、色々試行錯誤している段階ですが、
お時間のあるときで結構ですのでヒントやアドバイスをいただけないでしょうか。
こんばんわ。chobiです。
スニペット中でテンプレート変数を参照するのでなく、テンプレート変数をスニペットに渡してケース分けすればいいんでないでしょうか?
スニペット側は
if (isset($categ)){
switch($type){
case ’a’:
$result = "カテゴリA";
break;
case ’b:
$result = "カテゴリB";
break;
default:
$result = "テンプレート変数のない場合";
}
return $result;
}else{
return "";
}
くらいな感じにしておいて、
[[スニペット名?categ=`[*cate*]`]]
でコールすればいいかと思いますが…いかがでしょう?
(物凄い冗長なかんじがしますが ^^;)
外してたらごめんなさい。
chobiさん
アドバイスありがとうございます。
>>テンプレート変数をスニペットに渡してケース分けすればいいんでないでしょうか?
なるほどこういうこともできるんですね。
少し質問させていただきたいのですが、
[[スニペット名?categ=`test`]]
のようにすればそのスニペットの$categにtestという文字列が入るのでしょうか?
[[スニペット名? &categ=`test`]]
などもためしてみましたが、$categには何も入っていないようです。
何か記述等間違っておりますでしょうか?
よろしければ引き続きアドバイスをお願いできればと思います。
chobiさんの方法でよいっすぅ
あと、呼び出しもそれでいけるはずですね
[[xxxx?categ=`test`]]
xxxで、簡単なスニペットでチェックみてください。
たとえば
if (isset($categ))
{ return $categ;
}
return "no set";
とかで、設定されていれば設定したものが表示されます、セットしてなければno setが表示されます。
呼び出しパラメタのcategがそのままPHPの変数になりますので、$categをハンドリングしてください。
ではでは♪
ZeRoさん
お返事どうもありがとうございます。
if (isset($categ))
{ return $categ;
}
return "no set";
で試したところうまく動いたので、記述に間違いはないと思い、
キャッシュをクリアしてみたところ正常に動きました。
これで色々試していこうと思います。
皆様どうもありがとうございました。