指定方法が上手くいかない。どう直せば切り替えうまくいきますか?
コードが長いので、以下よりテキストダウンロードして下さい。
(URLは、7/14~21日までです。21日を過ぎた場合、コメントにて新URL記載します)
http://firestorage.jp/download/4ec35edaed383cd5b0bcb4ee1f88b3b3f460f21a
import1.css→1段組css
import2.css→2段組css
ヘッダーでcssの指定を書いています。
アップされているテキストを拝見しましたが、すみませんがやりたい内容がよく分かりません。
ただ、MT タグに関して、基本的な部分に誤解があるような気がします。
そもそも MTIf の tag="" は、エントリーで使う「タグ」ではありません。
※MTIf の tag="" は「MTEntryDate」等の MTタグのこと
また、MTIf そのものに関しても誤解があるようです。
name="" / tag="" ともに「どの値を判断するか」という指定なので、
それぞれ組み合わせるのは、like="" や eq="" など「どんな値か」等になります。
強引な例え話をすると「name="" tag=""」というのは「あなたの身長 あなたの体重」と書いているだけで、
いくつ以上、いくつ以下といった判断基準が書いていない状態なのです。
条件分岐させるなら「あなたの身長 170cm以上」や「あなたの体重 60kg以下」でなくてはいけません。
このあたりは、MT の強み・面白味ではありますが、
ややこしい部分なので、リファレンスをチェックすると良いかと思います。
MTIf | テンプレートタグリファレンス
http://www.movabletype.jp/documentation/appendices/tags/if.html
ブログ記事に特定のタグが使われているか否かを判別する
MT タグに「MTEntryIfTagged」がありますが、
ここでの tag="" はブログ記事に指定したタグとなります。
MTIf でも、記事についたタグの判別は可能ですが、専用タグであるこちらを使った方が簡単です。
また、MTIf を用いた条件分岐を行う場合、実際の動作を行う前に、
単純な結果表示などで、目的の分岐が行われるかを検証する事をおすすめします。
<MTEntryIfTagged tag="テストタグ">
テストタグがついてるよ
<MTElse>
テストタグはついてないよ
</MTEntryIfTagged>
こういったものを使い、ひとまず自分が意図した分岐が行われているかをチェックし、
その後、目的の処理を実装すると、動かない場合の問題点を見つけやすくなります。
MT使いこんでないから間違ってるかもしれないけど、こんな感じでいけるんじゃないかな
<MTIf name="entry_template"> エントリーテンプレートの場合 <MTIff tag="bone"> 変数boneが存在の場合 <link rel="stylesheet" href="<$mt:Link template="import1.css"$>" type="text/css" /> <MTElse tag="btwo"> 変数boneが無くて変数btwoが存在の場合 <link rel="stylesheet" href="<$mt:Link template="import2.css"$>" type="text/css" /> </MTElse> </MTIf> </MTIf>
http://www.movabletype.jp/documentation/appendices/tags/if.html
回答ありがとうございます。
うーん、、MTIfの中にMTIfが二重になっていたので、まとめて少し修正して以下のようにしてみました。
しかし上手くいきませんでした・・orz どうしてもimport1と2両方読み込んじゃいます。
<MTIf name="entry_template" tag="bone"> エントリーテンプレートで、tagにboneが存在の場合
<link rel="stylesheet" href="<$mt:Link template="import1.css"$>" type="text/css" />
<MTElse name="entry_template" tag="btwo"> エントリーテンプレートで、MTIfの条件が成立せず、tagにbtwo存在の場合
<link rel="stylesheet" href="<$mt:Link template="import2.css"$>" type="text/css" />
</MTElse>
</MTIf>
<MTIf name="page_template" tag="one"> ウェブページテンプレートで、tagにoneが存在の場合
<link rel="stylesheet" href="<$mt:Link template="import1.css"$>" type="text/css" />
<MTElse name="page_template" tag="two"> ウェブページテンプレートで、MTIfの条件が成立せず、tagにtwo存在の場合
<link rel="stylesheet" href="<$mt:Link template="import2.css"$>" type="text/css" />
</MTElse>
</MTIf>
恐らく「entry_template」「page_template"」で、
もうそれぞれ「記事ページ」、「ウェブページ」を指すのでそれで固定になっていて、
その後のtagがきかないのかも・・?
tagに、andをいれて、以下のようにしてみましたがこれまたむりでしたorz and自体使用できないのかもです。
<MTIf tag="bone and one">
<link rel="stylesheet" href="<$mt:Link template="import1.css"$>" type="text/css" />
<MTElse>
<link rel="stylesheet" href="<$mt:Link template="import2.css"$>" type="text/css" />
</MTElse>
</MTIf>
アップされているテキストを拝見しましたが、すみませんがやりたい内容がよく分かりません。
ただ、MT タグに関して、基本的な部分に誤解があるような気がします。
そもそも MTIf の tag="" は、エントリーで使う「タグ」ではありません。
※MTIf の tag="" は「MTEntryDate」等の MTタグのこと
また、MTIf そのものに関しても誤解があるようです。
name="" / tag="" ともに「どの値を判断するか」という指定なので、
それぞれ組み合わせるのは、like="" や eq="" など「どんな値か」等になります。
強引な例え話をすると「name="" tag=""」というのは「あなたの身長 あなたの体重」と書いているだけで、
いくつ以上、いくつ以下といった判断基準が書いていない状態なのです。
条件分岐させるなら「あなたの身長 170cm以上」や「あなたの体重 60kg以下」でなくてはいけません。
このあたりは、MT の強み・面白味ではありますが、
ややこしい部分なので、リファレンスをチェックすると良いかと思います。
MTIf | テンプレートタグリファレンス
http://www.movabletype.jp/documentation/appendices/tags/if.html
ブログ記事に特定のタグが使われているか否かを判別する
MT タグに「MTEntryIfTagged」がありますが、
ここでの tag="" はブログ記事に指定したタグとなります。
MTIf でも、記事についたタグの判別は可能ですが、専用タグであるこちらを使った方が簡単です。
また、MTIf を用いた条件分岐を行う場合、実際の動作を行う前に、
単純な結果表示などで、目的の分岐が行われるかを検証する事をおすすめします。
<MTEntryIfTagged tag="テストタグ">
テストタグがついてるよ
<MTElse>
テストタグはついてないよ
</MTEntryIfTagged>
こういったものを使い、ひとまず自分が意図した分岐が行われているかをチェックし、
その後、目的の処理を実装すると、動かない場合の問題点を見つけやすくなります。
なるほど・・mtIf tag="●"も、てっきりエントリー編集画面にあるタグの事だと思っていました;
@bone、@oneのタグが付いている時に、
import1.css(1段組のレイアウトcss)を適応させ、
同様に、
@btwo、@twoのタグが付いている時に、
import2.css (2段組レイアウトcss)を適応させたいのです。
●アーカイブ ブログ記事
<MTEntryIFTagged tag="@bone">
<mt:Include module="ブログ1段組" />
</MTEntryIFTagged>
<MTEntryIFTagged tag="@btwo">
<mt:Include module="ブログ2段組" />
</MTEntryIFTagged>
●アーカイブ ウェブページ
<mt:PageIfTagged include_private="1" tag="@one">
<mt:Include module="1段組" />
</mt:PageIfTagged>
<mt:PageIfTagged include_private="1" tag="@two">
<mt:Include module="2段組" />
</mt:PageIfTagged>
上記のものは分岐はちゃんとできているのですが、
cssがうまく読み込めていない状態です。
●●のタグの時に~cssを読み込むという指定方法がわかりません・・
随分サイトや本など調べましたがわからずじまいで質問しました;
> ●●のタグの時に~cssを読み込むという指定方法がわかりません
ヘッダの CSS 読み込み部分に同じ仕組みを使えばいけると思うのですが、動かないのでしょうか。
<MTEntryIFTagged tag="@bone">
<link rel="stylesheet" href="<$mt:Link template="import1.css"$>"
</MTEntryIFTagged>
ブログ記事の方、ちゃんとcss読み込み切り替えできました!
<MTEntryIFTagged tag="@bone">
<link rel="stylesheet" href="<$mt:Link template="import1.css"$>" type="text/css" />
</MTEntryIFTagged>
<MTEntryIFTagged tag="@btwo">
<link rel="stylesheet" href="<$mt:Link template="import2.css"$>" type="text/css" />
</MTEntryIFTagged>
しかし↓のだとウェブページの方は、エラーが・・このままでは無理なのですね;
「mtPageIfTagged>タグでエラーがありました:mtPageIfTaggedをPageのコンテキスト外で利用しようとしました。
MtPagesコンテナの外部に配置していませんか?」 と出ました。
うーん・・何か方法ありますでしょうか。。
<mtPageIfTagged tag="@one">
<link rel="stylesheet" href="<$mt:Link template="import1.css"$>" type="text/css" />
</mtPageIfTagged>
<mtPageIfTagged tag="@two">
<link rel="stylesheet" href="<$mt:Link template="import2.css"$>" type="text/css" />
</mtPageIfTagged>
なるほど・・mtIf tag="●"も、てっきりエントリー編集画面にあるタグの事だと思っていました;
@bone、@oneのタグが付いている時に、
import1.css(1段組のレイアウトcss)を適応させ、
同様に、
@btwo、@twoのタグが付いている時に、
import2.css (2段組レイアウトcss)を適応させたいのです。
●アーカイブ ブログ記事
<MTEntryIFTagged tag="@bone">
<mt:Include module="ブログ1段組" />
</MTEntryIFTagged>
<MTEntryIFTagged tag="@btwo">
<mt:Include module="ブログ2段組" />
</MTEntryIFTagged>
●アーカイブ ウェブページ
<mt:PageIfTagged include_private="1" tag="@one">
<mt:Include module="1段組" />
</mt:PageIfTagged>
<mt:PageIfTagged include_private="1" tag="@two">
<mt:Include module="2段組" />
</mt:PageIfTagged>
上記のものは分岐はちゃんとできているのですが、
cssがうまく読み込めていない状態です。
●●のタグの時に~cssを読み込むという指定方法がわかりません・・
随分サイトや本など調べましたがわからずじまいで質問しました;