2011年08月

マークアップエンジニアとかWEBディレクターとかをやってる僕が、自分が詰まって、解決したことをここに残しておきますよ。

MTでカスタムフィールドにいれた数字の順番に記事を表示させる

記事の順番は、日付順にしたりタイトル順にしたり、といったことはこれまでもできたんだけど、企業サイトのCMSとしてMTを使っていると、お客さんの側で順番をコントロールしたい、という要望がたいてい出てくる。

こういうときはプラグインを使うしかなかったのかもしれないけど、
MT5になってからは、標準でお客さんのコントロールしたいように順序をコントロールできるようになった。

カスタムフィールドを使って、その入力値を順序のバロメータにできるんすね。


■やりかた

①まずカスタムフィールドを新規作成しましょう。
 種類はなんでもいいけど、使いやすいのは「テキスト」だと思う。
 「トップ記事順序」などと名前をつけ、
 テンプレートタグも「topentryorder」などと名前をつけます。

②つぎに、ページのテンプレートをひらき、記事を吐き出していた部分

<MTEntries>
  <a href="<$MTEntryLink$>"><$MTEntryTitle$></a>
</MTEntries> 

を次のようにします。

<MTEntries sort_by="field:topentryorder">
  <a href="<$MTEntryLink$>"><$MTEntryTitle$></a>
</MTEntries>  

まぁ見ればわかると思いますが、カスタムフィールドの値を順序のキーとして使うには

sort_by="field:◯◯◯◯"

という書き方をします。
◯◯◯◯の部分にはテンプレートタグが入る。


③ そのままだと降順になっている。降順ってのは大きいほうが上になる。
それだとちょっと使いにくいよね。

表示順のフィールドには、「001」と入れたり「015」と入れたりするとおもうんだけど、普段使うときは、数が小さいほうが上になったほうが直感的で使いやすい。

なので、表示順序は昇順にしてあげる。

sort_order="acsend"

ということで、完成版はこちら 

<MTEntries sort_by="field:topentryordersort_order="acsend">
  <a href="<$MTEntryLink$>"><$MTEntryTitle$></a>
</MTEntries>   
便利になりました。 

MTでページ分割プラグインpagebuteを使ったときに1を出さない

MTをやるなら、絶対に必須のプラグインのひとつ

pagebute
http://www.skyarc.co.jp/engineerblog/entry/2642.html

とても便利なので、もし知らない人がいたなら、知ってほしい。

使うときのちょいコツで、

<MTPageContents count="10">

などと設定して、10記事ごとにページを分割する場合、

10記事以下しかなければ、一覧ページのページ分割部分に

「1」

とだけ出てしまう。

お客さんにとっては、見栄えが悪いということによくなるので、

<$MTPageLists show_always="0"$>

というように

show_always="0"

というアトリビュートを付けるのが◎です。

MT5の管理ページがIEで崩れるのの直し方

お客さんに指摘されて初めて知った。

MT5はIE7以下をまったく考慮しないで管理画面などもマークアップされている。

お客さんがIE7環境なので、ちゃんと崩れないようにしてほしい、
という要望があったので、直した。

一番ひどかったのがカテゴリの表示

↓こんな風につぶれちゃう。

mtcategorykuzure

見た感じ、これ、floatの解除で失敗してるときによく見るやつだね。


なので、この部分をcssで表現している部分を探してきてなおすことにします。

クロムの右クリックで「要素を検証」を使うとそのcssがわかりやすい。


んで、見てみると、この部分は、

main.cssの

.sortable-item

という部分らしいことがわかる。


そこで、FTPで

mt-static/css/main.css

を落としてきて、

126行目にあった.sortable-itemの中に

/zoom:1;

を追加。

 
cssを見てみると案の定、floatの解除をafter擬似クラスを使ってやっていた。
(IEの古いのではafter擬似クラスが使えない)

なので、同様の崩れがあったら、

①そこのcssを見つける
②/zoom:1;を入れる

で解決できるよ。

phpでエラー表示

お客さんがphpで作ったサイトにアクセスしたらまっしろになっていた。

どっかエラーになってると思うんだけど、
まっしろじゃぁわからない。

でもphpは便利でして、どこがエラーなのか教えてくれる。

エラーを表示させる命令を1行追加するだけです。

追加するのは以下

ini_set( 'display_errors', 1 ); 

php構文内じゃないとこに入れるときは↓こっちですね。

<?php
 ini_set( 'display_errors', 1 ); 
?> 
 
そうしたら、何行目がおかしいよっていうのを英語で教えてくれるので、
その英文をコピーしてググったりすると解決できたりできなかったり。
記事検索

リモキュー

お仕事のご依頼・お問い合わせはこちら

コーディングのお仕事が得意です。

https://twitter.com/tacshock
タグクラウド
QRコード
QRコード
  • ライブドアブログ