image

02-21-10

IE 8 CSS フッター動くって。

こまごまとCSSをいじったりしているわけですが、
どうにもフッターが記事の真ん中あたりにうごくという現象が。
#footer自体は動かないのだけど、#footer-innerと#footer-contentが飛び出しちゃう感じ。
アーカイブによっては#footer-contentだけが飛び出たり。
しかもそれが毎回ではなく、たまに。
結構あれこれ追ってみてCSSをいじってもうまくいかない。
てか、IEでしかこの現象はおきない。
結局のところバグなのかな?
minimalist-redをベースにカスタムしているので、
body,div,
ul,ol,li,dl,dt,dd,
form,fieldset,input,textarea,
h1,h2,h3,h4,h5,h6,pre,code,p,blockquote,hr,
th,td {
margin: 0;
padding: 0;
}
のところにzoom: 1;を追加してやることでなおったっぽい。多分。

02-16-10

ウェブサイトとの連携2

ウェブサイトの連携に対する対処の走り書き。あくまで自分の環境での話。
現状、website/blog/archives/の中に全てのアーカイブが納まっている。
その中で各カテゴリ毎のフォルダとmonthフォルダがありそれぞれなかにアーカイブファイルがある。
何をどうしたいか。そしてそれに対する問題点など。
1.あくまで一つのウェブサイト。その中のブログというコンテンツ、という一体感というかが欲しいので
共通のメニュー項目を用意したい。
2そのメニュー項目を変更した際の再構築の手間をできるだけ省きたい。(可能なものはphpでインクルードしたい)
特にブログの個別記事は量が膨れ上がっていくのでPHPインクルード化は必須。
・・・分割の関係でメインインデックスはhtml。また、システムテンプレートはphpインクルード不可。
mt:includeとの共存が必要。
3.変更があったときにいじるファイルはできるだけ少なく、できれば一つであるのが望ましい。
・・・blogからwebsiteのモジュール読み込みはちと仕様上面倒。ブログのテンプレートの中に
指定されたモジュールやらウィジェットが無かった場合、システムのテンプレートを探しに行く。
この際ウェブサイトのテンプレートは無視。これってどうよ?とつくづく…
4.FTPソフト等は使わない。
などを踏まえまして。
うちではバナーヘッダーにメニューをおいてをすべてのコンテンツで共用することに。
メニュー部分はシステムのテンプレートウィジェットとして作成。これを50menuとする。
ウェブサイトのインデックステンプレートで<$mt:Include widget=”50menu”$>という内容だけの
テンプレートを作成(PHP読み込み時のファイルを作成することになる)。
これをbanner.phpとする。
それでブログのバナーヘッダーモジュールの中の読み込みたい部分に以下のように記入。
<mt:if name=”archive_template”>
<mt:If name=”search_results”>
<$mt:Include widget=”50menu”$>
<mt:ElseIf name=”page_archive”>
<$mt:Include widget=”50menu”$>
<mt:Else>
<?php
include(“../../../banner.php”);
?>
</mt:If>
<mt:Else>
<$mt:Include widget=”50menu”$>
</mt:If>
正規表現の仕方がわからなかったのでまぁ、こんな感じ。
mt:ifでよく使われることになるアーカイブの種類ごとの予約変数に関してはこちら
本来なら2行目のsearch_resultsは不要なはずだけど、分割とページ送りの関係で、
こうしないとうまくいかなかった。
全てのアーカイブが同じ階層にあり読み込むphpファイルへのパスは共通なので
こんな感じでできたが、違った場合どうしたもんだろ。
まぁ、それぞれの条件でまた絞り込む形になるのかな。
これでまぁ、大体目的は達した、はず。

02-16-10

モジュールPHP化の注意点

モジュールと同じ内容でインデックステンプレートを作り、それをphpで読み込む、ということを
前のバージョンからしていましたが、ちょっと注意点が。
mt:ifという4から実装されたタグが非常に便利なのですが、
上記のようなモジュール化をした際、その分岐が働かなくなります。
例えばアーカイブタイプごとに違う画像を表示させたいなど、
標準のモジュールならばmt:ifで簡単にできるのだけど、
それをそのまま移してしまうと、あくまでインデックステンプレートという判断をしてしまい、
うまくいかないのですよ。
ですので、PHPモジュールとするのは全てのアーカイブで共通のものに限った方がよさそうです。

02-14-10

ウェブサイトとの連携

MT5からできたWebsiteという概念事態は割りといいと思うのですが、
どうにもブログとの連携がいまいち。
例えばうちだとヘッダーのメインメニューはサイト全体として共通のものにしたいので、
一つのモジュールにしてそれを読み込むようにしたいと思ってもそれがうまくいかない。
やたら長いタグを書いたり。それを回避するためのプラグインもみつかったが、どうにもいまいちな様子。
デフォルトでは読み込みたいモジュールがブログテンプレートの中にない場合、
ウェブサイトのテンプレートを飛ばしてシステムのテンプレートを探しに行くらしい。
それをブログ→ウェブサイト→システムという本来あるべき順序にしてくれるらしいのだが、
結局読み込みたいテンプレートモジュールやらウィジェットにウェブサイト独自のタグが含まれていると
次のようなエラーになる。
テンプレート「メインページ」の再構築中にエラーが発生しました: <mtInclude>タグでエラーがありました: error in module 50ヘッダー: テンプレート「50ヘッダー」の再構築中にエラーが発生しました: <mtWebsiteURL>タグでエラーがありました: mtWebsiteURLをコンテキスト外で利用しようとしています。MTWebsitesコンテナタグの外部で使っていませんか?
であればウェブサイト、ブログ、共通に問題なく使えるように書いたテンプレートを
システムにおいておく、という方がスマートに思える。
いずれにせよ、おかしな話に思う。

02-13-10

PreviousNextInCategory-同一カテゴリ内で移動

以前はあれこれ細かいことをやっていたのだけど、プラグインがあるみたいなので使わせてもらうことに。
PreviousNextInCategory
ただ、このプラグインはバグを含んでいるらしいのでそれに対応した方の
互換プラグインをダウンロード。プラグインフォルダにいるだけ。
で、表示させたいところに
<MTEntryPreviousInCategory>
<a href=”<$MTEntryPermalink$>”>≪ <$MTEntryTitle$></a> |
</MTEntryPreviousInCategory>
<a href=”<$MTEntryPermalink archive_type=”Category”$>”>
<$MTEntryCategory$></a>
<MTEntryNextInCategory>
| <a href=”<$MTEntryPermalink$>”><$MTEntryTitle$> ≫</a>
</MTEntryNextInCategory>

02-11-10

スタイルシートを弄る2

方針を変えることに。
結構テンプレートが多く混乱が多い。
それでいてある程度のブラウザで表示が崩れないようにとなると、
やはり標準のテンプレートをカスタムしていったほうがはやそうだ。
それでいてまとめられるところはまとめたいところだけど。

02-11-10

スタイルシートを弄る

なんとなく機能面ではある程度カスタムできた感じなので
そろそろデザインを変えて行きたいと思う。
サブドメイン対応のところでも書いたけど、MT5の(4からかもしれんけど)インデックステンプレートの
スタイルシートは外部ファイルを読み込むだけのファイルでしかない。スタイルでの切替の関係だろう。
直接スタイルシートをいじっていってもよいのだけど、せっかくなのでスタイル管理に対応した
かたちにしていこうかと思う。
MTインストールフォルダ/mt-static/themes-base/blog.cssで基本的な設定をして
MTインストールフォルダ/mt-static/themes/の中に各スタイルのフォルダがあり
その中にスタイルで使われている画像とscreen.cssがある。
ここでちょっと面倒というか。
Movabletypeの標準のcssはinnerもしくはcontentという2重(場合によっては3重)構造で設計されている。
これはおそらくブラウザ毎の表示の違いを可能な限り防ごうということかと思われる。
しかし、おかげで非常にみにくいというか、カスタムするのが面倒な感じになってしまっている。
そこをどうするか。
なんだかんだ標準のスタイルに切り替えることは無いと思う。
それにこんな個人サイトでそこまでシビアにブラウザ間の違いを気にすることも無いだろう。
そう考えるとやはり自分でわかりやすいように作り変えておいた方がよさそうだ。
しかし。面倒だけど。

02-07-10

画像投稿テストの結果

100121-1.jpgという、mixiで使った画像を試しにあげてみた。
投稿時は
<アーカイブパス>/フォルダ指定なしにアップロード。
記事の中で投稿するときは指定した大きさのサムネイルも作成できるみたい。
アイテムから投稿するときはアップロード先だけ。
おそらくは記事で使おうとするときにサムネイルを指定したりできるのだろう。
で、その結果。
アーカイブパスの中にオリジナル画像はアップロードされていた。
で、アーカイブパス/assets_c/2010/02/フォルダの中にいくつか画像ができてた。
2010とか02というフォルダはまぁ、日付からだろう。これっていじれるのか?
いじるとなんかうまくないことが起こりそうな気がするのでやめておくけど。
で、最初にできたファイルが
100121-1-thumb-100xauto-1.jpg
100121-1-thumb-450×301-1.jpg
100121-1-thumb-autox70-1.jpg
の3つ。ファイル名が長いので便宜上上からa,b,cとする。
bは投稿するときにサムネイルのサイズ指定をそのままにしたので、投稿時に作られたサムネイルだろう。
その他の二つはサイドバーとかで使われる用のサムネイルかな。
その後アイテムの一覧とかをあれこれ見てるうちにいつの間にか以下のファイルが増えてた。
100121-1-thumb-75×75-1.jpg
100121-1-thumb-240×240-1.jpg
100121-1-thumb-450×301-1-thumb-75×75-2.jpg
100121-1-thumb-450×301-1-thumb-240×240-2.jpg
便宜上上からd,e,f,gとしてとりあえずおいておいて次にアイテムメニューから新規で投稿してみる。
こちらは100121-1.jpgというファイル。同じようにアーカイブフォルダのルートに。すると
100121-2-thumb-75×75-3.jpg
100121-2-thumb-240×240-3.jpgというファイルが上と同じフォルダ内にできている。
さて。
アイテムの中では登校時に作成したサムネイルも一つのアイテムとして扱われる。
そしてアイテムの中での操作のために75×75と240×240のサムネイルが生成される。
そのアイテムを記事の中で使う際100xautoとautox70のサムネイルが生成される。
一つの記事に画像を投稿する際サムネイルを作るとその他に合計6つのファイルが生成されるわけだ。
・・・
これってどうなの?ひどく無駄な気がするのだけど。こんなにいらねーだろ。
つーかアイテムの管理画面で使うからってかってにサムネイル作ってるわけでしょ。これはないわ。
サムネイルのサムネイルとか、いらねーだろ。どうにかできないかなー。

02-07-10

画像投稿のテスト。

100121-1.jpg
確かMT3から4にしたときは画像の扱いで嫌になったのもあり、
MT3にダウングレードしたような・・・
どんな感じになるんだ?

02-07-10

PHPモジュール化

MT5では各モジュール、ウィジェットごとにサイバーサイドインクルードとして処理する設定を選択できるので
それを使って構築していたのだけど、ページの分割、ページ送りの関係で
メインページがhtmlでなくてはならなくなってしまったみたいなので対応することに。
いろいろやり方はあるんだろうけどMT3の頃からやっているやり方が慣れているのでそれでやってみる。
インデックステンプレートを新たに作成してside.phpとし、サイドバーモジュールの中身をまるまるコピーする。
で、それぞれのアーカイブテンプレートで
<$mt:Include module=”サイドバー”$>となっているところを
<?php
include(“../../side.php”);
?>
に変えてやる。
これで多分いけるはず。
追記
大丈夫じゃなかった。
カテゴリページも月別ページも最初のページは大丈夫なのだけど、
2ページ目以降サイドバーが表示されない。
mt-search.cgiなのだから普通にシステムモジュールに沿って、インクルードされるのかと思ったら
そうではないみたい。
仕方ないので
<?php
include(“../../side.php”);
?>
<mt:If name=”search_results”>
<mt:Include module=”サイドバー”$>
</mt:If name=”search_results”>
と併記させることに。ちょっと余計なタグがソースに残るけど
動作は問題ないのでまぁよいでしょ。