We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 18591
    • 5 Posts
    はじめまして、masuと申します。
    どうぞよろしくお願いいたします。

    テンプレート変数を下記のようにつくってDittoでカテゴリわけをしています。

    テンプレート変数名:cate(ドロップダウンリスト形式)
    Aカテゴリ==a||Bカテゴリ==b||Cカテゴリ==c||Dカテゴリ==d

    カテゴリわけは問題なく動くのですが、所属カテゴリを表示させたいと思い、
    Dittoで指定したテンプレートに

    カテゴリ:[+cate+]

    とすると実際に表示されるのは

    カテゴリ:a

    となってしまいます。
    これを

    カテゴリ:Aカテゴリ

    のように表示させるにはどのようにすれば良いでしょうか?


    MODxを触り始めて間もないため非常に馬鹿な質問をしているかもしれませんが
    何卒ご回答のほどよろしくお願いいたします。
      • 33488
      • 429 Posts
      Aカテゴリ==Aカテゴリ とかじゃ駄目ですか??

      バリューとして登録されるのが右辺側の値になっちゃうので、取り出すとaが入ってきてしまいます。
      aをAカテゴリと変換しなおすスニペットをかぶせるか、もし、バリュー値が同じでもかまわないのであれば同じ値を設定しちゃうのが楽です。

      ほかにやり方あるかも知れません・・・が、とりあえず。
        • 18591
        • 5 Posts
        ZeRoさん

        お返事ありがとうございます。

        >>Aカテゴリ==Aカテゴリ とかじゃ駄目ですか??

        事情でデータベースにいれるのは英数字にしたいと思ってまして、

        >>aをAカテゴリと変換しなおすスニペットをかぶせるか

        これを試そうと思い、下記のようなスニペットを作ってみましたが、

        $cate = ’[+cate+]’;

        if  ($cate==’a’){
        echo ’Aカテゴリ’ ;
        }

        $cateにテンプレート変数のaが入るのでなく、「[+cate+]」という文字列が入ってしまいます。
        冷静に考えればあたりまえの話なのですが、$cateにテンプレート変数の値をいれることは可能でしょうか?

        スニペットやチャンクの使い方がまだ十分把握できていないので、色々試行錯誤している段階ですが、
        お時間のあるときで結構ですのでヒントやアドバイスをいただけないでしょうか。


          • 5118
          • 14 Posts
          こんばんわ。chobiです。

          スニペット中でテンプレート変数を参照するのでなく、テンプレート変数をスニペットに渡してケース分けすればいいんでないでしょうか?

          スニペット側は

          if (isset($categ)){

          switch($type){

          case ’a’:
          $result = "カテゴリA";
          break;

          case ’b:
          $result = "カテゴリB";
          break;

          default:
          $result = "テンプレート変数のない場合";

          }
          return $result;

          }else{
          return "";
          }


          くらいな感じにしておいて、
          [[スニペット名?categ=`[*cate*]`]]

          でコールすればいいかと思いますが…いかがでしょう?
          (物凄い冗長なかんじがしますが ^^;)

          外してたらごめんなさい。
            • 18591
            • 5 Posts
            chobiさん

            アドバイスありがとうございます。

            >>テンプレート変数をスニペットに渡してケース分けすればいいんでないでしょうか?

            なるほどこういうこともできるんですね。
            少し質問させていただきたいのですが、

            [[スニペット名?categ=`test`]]

            のようにすればそのスニペットの$categにtestという文字列が入るのでしょうか?

            [[スニペット名? &categ=`test`]]

            などもためしてみましたが、$categには何も入っていないようです。
            何か記述等間違っておりますでしょうか?
            よろしければ引き続きアドバイスをお願いできればと思います。
              • 33488
              • 429 Posts
              chobiさんの方法でよいっすぅ

              あと、呼び出しもそれでいけるはずですね

              [[xxxx?categ=`test`]]

              xxxで、簡単なスニペットでチェックみてください。
              たとえば

              if (isset($categ))
              { return $categ;
              }
              return "no set";

              とかで、設定されていれば設定したものが表示されます、セットしてなければno setが表示されます。

              呼び出しパラメタのcategがそのままPHPの変数になりますので、$categをハンドリングしてください。

              ではでは♪
                • 18591
                • 5 Posts
                ZeRoさん

                お返事どうもありがとうございます。

                if (isset($categ))
                { return $categ;
                }
                return "no set";


                で試したところうまく動いたので、記述に間違いはないと思い、
                キャッシュをクリアしてみたところ正常に動きました。
                これで色々試していこうと思います。

                皆様どうもありがとうございました。