人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

MovableType4.2 でウェブページ、ブログ記事に特定のタグがある場合にcss切り替えたいが、
指定方法が上手くいかない。どう直せば切り替えうまくいきますか?

コードが長いので、以下よりテキストダウンロードして下さい。
(URLは、7/14?21日までです。21日を過ぎた場合、コメントにて新URL記載します)
http://firestorage.jp/download/4ec35edaed383cd5b0bcb4ee1f88b3b3f460f21a


import1.css→1段組css
import2.css→2段組css

ヘッダーでcssの指定を書いています。


●質問者: sakuma1
●カテゴリ:インターネット ウェブ制作
✍キーワード:CSS URL ウェブページ コメント コード
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● うぃんど
●30ポイント

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

http://www.movabletype.jp/blog/mtelse41.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>


2 ● kaz
●50ポイント ベストアンサー

アップされているテキストを拝見しましたが、すみませんがやりたい内容がよく分かりません。

ただ、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を読み込むという指定方法がわかりません・・

随分サイトや本など調べましたがわからずじまいで質問しました;


3 ● kaz
●0ポイント

> ●●のタグの時に?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>

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ