Movable Type初心者ででアフィリエイトサイトを作っています。


ページ数が多いため、テンプレートファイルである程度制御したいと思い
MTSetVarタグを用いて自動的に吐き出せるようにしたいと考えています。

まず
<MTSetVarTemplate name="price">
<$MTEntryBasename$>
</MTSetVarTemplate>
とセットし、

<mt:If name="price" eq="hoge">
12,000円
<mt:ElseIf eq="hogehoge">
12,500円
</mt:If>
として分岐をさせてみましたが
上手く表示されませんでした。

※hogeはウェブページのファイル名

どこが間違っているかを指摘していただければと思います。

よろしくお願いいたします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:2009/09/27 21:00:43
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:kaz No.1

回答回数200ベストアンサー獲得回数42

ポイント35pt

http://www.movabletype.jp/documentation/appendices/tags/setvarbl...

MTSetVarTemplate は、その名の通り

「テンプレートの状態」が代入されるため、希望の動作にはなりません。

「price」に「<$MTEntryBasename$>」が代入され、呼び出された先で実行されます。


それじゃ <MTIf name="price" ...> で呼び出した時に実行されるんじゃ

....と思いがちですが、このような場合には実行されません。



<MTSetVarBlock name="price">

<$MTEntryBasename$>

</MTSetVarBlock>


にすると良いかと思いますが、MT のバージョンが 4.1 以降であれば、

グローバルモデファイア setvar を使い、


<MTEntryBasename setvar="name">


だけで「name に MTEntryBasename の値を代入」が可能です。

※ setvar グローバルモデファイアを使った場合、

  該当のタグは表示(出力)されないので、

  コメントアウトする必要などもありません。


※ おそらく上記で可能だと思いますが、検証を行っていません。

  できないようでしたら、修正いたしますのでコメントをお願いします。

id:mne_hate

この方法で試したのですが、どうも上手くいかなかったです。

今回はMTを諦め、WPでもう一度試してみたいと思います。

ありがとうございました。

2009/09/27 20:59:58
id:rouge_2008 No.2

回答回数595ベストアンサー獲得回数351

ポイント35pt

やりたい事は、任意のテキストを条件(ファイル名)によってウェブページに表示させたいということで間違いありませんか?

1.ウェブページのアーカイブテンプレートに記述しましたか?

2.条件の「eq="hoge"」の部分ですが、拡張子「.html」は必要ありません。

上記の点が問題なければ表示されるはずです。

こちらはversion 4.25で問題なく動作します。

上記が間違いなく出来ているのでしたら、どのように上手く表示されないのか、問題点を詳しく教えてください。


※コメント欄を開けてくださるとやり取りしやすいです。

※URLはダミーです。

http://www.movabletype.jp/documentation/appendices/tags/setvarte...

http://www.movabletype.jp/documentation/appendices/tags/entrybas...

id:mne_hate

この方法で試したのですが、どうも上手くいかなかったです。

今回はMTを諦め、WPでもう一度試してみたいと思います。

ありがとうございました。

2009/09/27 21:00:19
  • id:kaz
    「rouge_2008」さんの回答によると、MTSetVarTemplate でも
    問題ないとの事で失礼いたしました。

    過去に MTSetVarTemplate で動作しない事がありましたので、
    そちらが原因かと早とちりして書き込んでしまいました。
    大変失礼いたしました。
    ※特定のタグ・タグの組合せなど、理由はわかりませんが
     うまく展開されないケースがありますので、
     (MTSetVar〜 の配置場所にもよりますが)値を利用する場合は
     MTSetVarBlock をおすすめします


    ページが設計通り動かない場合、特に代入を行っている場合は、

    ・代入した「箱」の中身
    ・代入するつもりの値

    の両方を表示させると原因を探しやすくなります。
    今回の例であれば、判定を行う部分の前に以下のタグを作ります。

    代入:<MTGetVar name="price"><br />
    元 :<MTEntryBasename>

    多いのが代入したつもりの変数が希望の内容になっていないケースで、
    次いで、そもそも代入予定の変数が希望の値をとらないケースです。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません