タグ:MT

MTのプレビューでエラー

MT5.2.2にて、記事のプレビューを見るとMTのエラーが表示されてしまうという現象が発生しました。

エラーは

再構築エラー: ~
~~~~~~~
~~~~~~~
~~~~~~~
<mtEntryCategories>タグでエラーがありました:
<mtCategoryArchiveLink>タグでエラーがありました:
カテゴリアーカイブを公開していないので<$MTCategoryArchiveLink$>は使えません。

というもの。

一応この部分は

<MTIf tag="EntryCategory">
<MTEntryCategories type="primary">
<a href="<$MTCategoryArchiveLink$>"><$MTCategoryLabel$></a>
</MTEntryCategories>
</MTIf>

という風に条件分けしたのですが、やっぱりプレビューでエラーが出てしまいます。

もちろん再構築では問題ありませんし、プレビューをしない場合はちゃんと保存もできるのですが、一度プレビューでこのエラーが出てしまうとまともに保存もできなくなってしまいました。

解決方法は、プレビューかどうかの条件文を追加すること

<mt:Unless name="preview_template">
<MTIf tag="EntryCategory">
<MTEntryCategories type="primary">
<a href="<$MTCategoryArchiveLink$>"><$MTCategoryLabel$></a>
</MTEntryCategories>
</MTIf>
</mt:Unless>

<mt:Unless name="preview_template">~</mt:Unless>でプレビューではない場合という条件文になります。

 

参考サイト

MovableType プレビュー画面判別用変数について|ホームページ制作のプラルトweb

nandani | 2013年02月26日 | コメント(0) | トラックバック(0) | CMS関連

MT5.2.3にて記事が無いカテゴリーアーカイブが出力されない【バージョンアップに注意!】

メモ。

MT4系からMT5.2.3にバージョンアップしたところ、ブログ記事が存在しないカテゴリーアーカイブページが無くなってしまいました。

どうもMT5.2.2からこんな仕様になってしまったらしいです・・・(仕様というかバグというか)

これは困った。

親カテゴリーには記事が無くても、サブカテゴリーには記事があるというようなこともあるので、親カテゴリーページがなくなったら辿れなくなってしまいます。

パンくずリストだってリンク切れちゃうし。

MT5.2.2では以下のような解決方法が紹介されてました。

ブログ記事がないカテゴリアーカイブが出力されない(MT5.2.2) - The blog of H.Fujimoto

しかし環境の問題なのか、バージョンが違うせいなのか、プラグインの相性問題なのか、上記の方法ではどうにもならず・・・

完全にお手上げ状態\(^o^)/

仕方ないから、本文が空のエントリーを作って、該当カテゴリーに所属させ、テンプレートで

<MTEntries include_subcategories="1">
<MTIf tag="EntryBody">

</MTIf>
</MTEntries>

という風にして対応しました。(include_subcategories="1"はサブカテゴリの記事も表示するというもの。)

しかし何とかしてほしい・・・

MT5.2.2または5.2.3にバージョンアップする際はご注意ください!

nandani | 2013年01月25日 | コメント(0) | トラックバック(0) | CMS関連

「ブログ」を更新したとき、「ウェブサイト」のインデックスも再構築する【MT】

MTはバージョン5からウェブサイトをまず作成し、その中にブログを構築するという仕組みに変わったわけですが、ウェブサイトのトップページにブログの新着一覧などを表示する場合()、新着用ブログを再構築した時点で、ウェブサイトも再構築する必要があります。

たとえば、ウェブサイトの「メインページ」テンプレートに以下のような記述がある場合

<ul>
<MTBlogs include_blogs="x">
<MTEntries>
<li><a href="<$MTEntryLink$>"><$MTEntryTitle$></a></li>
</MTEntries>
</MTBlogs>
</ul>

 

デフォルトではブログで再構築する場合は、そのブログのみの再構築となるので、ウェブサイトの再構築は行われません。

これをウェブサイトの表示にも反映させる方法は3つあります。

(さらに…)

nandani | 2012年04月16日 | コメント(0) | トラックバック(0) | CMS関連

MTOS 5.1リリース!

MT5.1ベータ版公開!の記事を書いて以来、実はまったく触ってなかったのですが^^;、仕事で使用するためMTOSをダウンロードしに行ったら、MTOSのバージョンも5.1になっていました。

MTOSダウンロードページ

今日一日触ってみた感想として、なんか早く(軽く)なってる?

以前までのMT(MTOS)といえば、管理画面のページ間を移動するだけでも時間がかかってイライラしていたものですが(しょぼサーバだと特に)、なんか体感的に1.5倍くらい早くなってる気がします。

 

カテゴリ管理について

「カテゴリの管理」は一番進化しましたね。

パッと見はなんか地味になったな~って感じでしたが(↓こんな感じ)

その軽さたるや!すばらしい!

これまでは、カテゴリをひとつ追加するたびに、データベースに保存される仕組みでしたが、今回からはとりあえず追加を先にしておき(この段階ではまだ保存されない)、すべての追加を終えたのち一括して変更を保存する仕組みになってます。

追加はページ移動もないし、データベースアクセスも存在しないため、驚くほどサクサク登録できます。(ちなみに「名前」変更だけなら、同じくページ移動&DBアクセスが存在しないため、快適に編集が行えます。)

最終的な保存もそれほど時間はかかりません。

そして「カテゴリの管理」といえばもう一つ、大きな変更点があります。

それは並び替え機能!

ようやく標準でついたかって感じですが、この並び替え機能はドラッグ&ドロップで並び替え&レベル(階層)の移動ができるため、かなり使い勝手がよくなってます。

ちなみに並び替えも同じく最終的に一括保存する仕様です。

これまではカテゴリ並び替えプラグイン「SortCatFld」が手放せない存在となっていましたが、とうとう使用しなくても大丈夫になりましたね。そう考えると少しさみしい気もします・・・

とかいいつつ、なぜかいまだにMT4で構築する案件とかもあるので、これからもお世話になると思いますが^^

 

フォルダ管理

フォルダ管理もカテゴリ管理と同じ仕様になってます。

並び替えも同じくドラッグ&ドロップで可能。

 

テンプレート管理について

さて、続いてテンプレート管理。

ついにハイライトオフ機能が復活しました!

なぜこれが必要かというと、ハイライトオンの状態だと、タブスペースを勝手に取り除いてしまうのです。

インデントをタブで行っている人種としてはこれは致命的。

しかしハイライトオフの状態だと、タブをそのまま放置してくれます。

表示速度も若干があるし、あからじめDreamWeaverで作成したテンプレートをコピペで張り付ける自分にとっては願ったりかなったり。

早速オフの状態にして(お、ちゃんとタブインデント生きてる^^)保存!

保存が完了し、画面切り替わる

タブインデント全滅・・・( ゚д゚)ポカーン

(つд⊂)ゴシゴシ

見間違いか?もう一度ハイライトオフの状態でテンプレートを張り付けてリトライ!

・・・

やっぱりタブインデント全滅・・・

なんじゃそりゃ!

どうやら保存時にタブが取り除かれている様子・・・orz

バグですね、こりゃ。

しかもテンプレートを開くとき、ハイライトオフだとオンの時より表示が遅いような(一回オンになってからオフに切り替えてるみたいなんだよね・・・表示速度すら失ったか。)

いずれ直していただくことを期待しつつ、ちまちまとタブインデントを半角スペースインデントに直すのでありました・・・。

nandani | 2011年05月26日 | コメント(0) | トラックバック(0) | CMS関連

【MT】カスタムフィールドのテンプレートタグ名によるバグ【PostgreSQL・SQLite】

  • MTのバージョン:5.04
  • データベース:PostgreSQL
  • サーバ:独自の専用サーバ

 

おこったバグ現象

まずカスタムフィールドにて、テンプレートタグ名「EntryProductImageData」という「画像」用フォームを作成。

次にテンプレートにて

<mt:If tag="EntryProductImageData">
<mt:EntryProductImageDataAsset><$MTAssetThumbnailLink width="200" $></mt:EntryProductImageDataAsset>
</mt:If>

と記述したところ、再構築時に以下のようなエラーが出ました。

エラー内容:EntryProductImageDataAssetタグを正しいコンテキストで使用していません。

もちろんMTEntriesタグの中で使ってますし、変な記述もしてないはずなんですが、記事作成・編集にて「EntryProductImageData」のカスタムフィールドに画像を登録すると必ずこのエラーが表示されてしまいます。

※ちなみに普通のレンタルサーバなどではこの現象は起きません。独自に専用サーバを立てているところに設置すると、まれにこのようなことが起きます。

 

解決方法

原因は全く分からなかったのですが、「そういえば以前も確か似たようなことあったなぁ。あの時は確かカスタムフィールドのテンプレート名に大文字を入れたのに勝手に小文字に変換されたんだっけ・・・」というのを思いだし、以下の対処方法を試しました。すなわち

テンプレートタグに大文字は使わない。

カスタムフィールドのテンプレートタグ名を「entry_product_image_data」に変更し、テンプレートの記述を

<mt:If tag="entry_product_image_data">
<mt:entry_product_image_dataAsset><$MTAssetThumbnailLink width="200" $></mt:entry_product_image_dataAsset>
</mt:If>

に変更したところ、正常に再構築され、サムネイルも表示されるようになりました。

ググってもなかなか原因が出てこないので焦りましたよ。

改めて「MT テンプレートタグ名 大文字」でググったらこんなページが。

カスタムフィールドのテンプレートタグを使うと、再構築でエラーが発生する | Movable Type 4 FAQ

そういえば以前発生した時はSQLiteで、今回のサーバはPostgreSQLだった・・・

なんてやっかいな・・・

カスタムフィールドのテンプレートタグ名を付けるときは大文字は使わないほうがよさそうですね。

nandani | 2011年05月09日 | コメント(0) | トラックバック(0) | CMS関連

MT5.1ベータ版公開!

MTのサイトを覗いてみたら、MT5.1ベータ版が公開されていました。

まだ全然試してませんが、以下の機能が追加されているそうです。

  • カテゴリー、フォルダの並び替え
  • 一覧画面のソートやフィルタ機能の強化と、Ajaxによる速度向上
  • 投稿画面のユーザビリティ向上
  • マルチブログ環境でのテンプレート編集と、MTタグの強化
  • Internet Explorer 8, Safari 最新版, Firefox 最新版をサポート

「カテゴリー、フォルダの並び替え」はようやくか・・・って感じですね。

とりあえずテストサーバに放り込んで試してみよっと^^

nandani | 2011年02月15日 | コメント(0) | トラックバック(1) | CMS関連

サムネイルのデフォルトサイズを設定する(MT)

画像ファイルをアップロードして記事に張り付ける際、あらかじめ「サムネイルを利用」にチェックを入れ、その画像幅を決めておく方法です。

そんな必要があるのは稀かもしれませんが、必要になったのでやり方をメモ。

使用したMTは「MTOS version 5.031」

1.「MT設置フォルダ/tmpl/cms/dialog/asset_options_image.tmpl」をダウンロードする。

2.メモ帳以外のテキストエディタで開き、以下の2か所を変更

■116行目

<input type="checkbox" name="thumb" id="create_thumbnail" value="1" <mt:if name="make_thumb">checked="checked" </mt:if>/>

を以下のように変更

<input type="checkbox" name="thumb" id="create_thumbnail" value="1" checked="checked" />

 

■119行目

<input type="text" name="thumb_width" id="thumb_width" class="smaller-text" value="<mt:var name="thumb_width" escape="html">" onkeypress="widthKeyPress(event)" onchange="adjustWidthHeight(this.form, 1)" size="4" /> <__trans phrase="pixels">)

を以下のように変更

<input type="text" name="thumb_width" id="thumb_width" class="smaller-text" value="(設定したいサイズを半角数字で入力)" onkeypress="widthKeyPress(event)" onchange="adjustWidthHeight(this.form, 1)" size="4" /> <__trans phrase="pixels">)

 

スマートなやり方ではありませんが、とりあえずは何とかなります。

nandani | 2010年12月10日 | コメント(0) | トラックバック(0) | CMS関連

MTで画像一括アップロード!

メモ

大量に画像をアップロードしなくてはならない場合、FTPで一気にアップロードする方法と、MTで1つ1つアップロードする方法の2つがありますが、前者は後々管理画面から削除ができなくなるし、後者は時間がかかる。

そんなとき便利なプラグインが「MultiFileUploader」です。

ダウンロードは以下のサイトから

複数ファイルを一括でアップロードできるMovable Typeプラグイン:MultiFileUploader(スカイアークシステムさんのサイト)

解凍すると

  • plugins
  • mt-static

のフォルダができるので、それぞれアップロードするだけ。

プラグインが正常に導入されると「アイテム」メニューに「複数アップロード」が追加されますので、そちらから複数ファイルをアップロードしてください。

特に対応バージョンが書いていなかったので不安でしたが、MT5.031にて正常に動作しました。

スカイアークシステムさんのサイトのコメントを見てみると、パスエラーが発生しているようですが、自分のところでは特に問題なしでした。
MTのバージョンのせい?

nandani | 2010年11月24日 | コメント(0) | トラックバック(0) | CMS関連

MTにてカテゴリを絞り込んで検索する方法2

前回はこちら「MTにてカテゴリを絞り込んで検索する方法

今回はプラグインを使用します。

この方法のメリットは複数のカテゴリで絞り込めることです。

たとえば以下のようにカテゴリ構成されているとします。

ジャンル
  SF
  アニメ
  クライム
  コメディ
  ホラー
メディア
  DVD
  VHS
  ブルーレイ
  レーザーディスク

「SF×DVD」や「コメディ×VHS」のように複数カテゴリで絞り込みたい場合、前回の方法では実現不可能でした。(一見<input category="SF AND DVD" />で可能そうですができませんでした。)

そこでこちらのサイトで配布しているプラグインを使用します。

CategorySearch(Technology on Informationさんのサイト)

上記のサイトの「リリース>ダウンロードページ」から最新版をダウンロードしてください。

インストール方法は、ダウンロードしてきたファイルを解凍したのち、「plugins」の中にアップロードすればOKです。

使用方法についても上記のサイトに記述しております。

では以下使用例です。

※なお、以下で使用しているテンプレートはMT5標準で用意されているテーマ「クラッシックブログ」のテンプレートです。

 

1.検索ウィジェットを編集する

MTブログ管理画面の「デザイン>ウィジェット>検索」を開いてください。

その中のformタグで囲まれている部分を、まるごと以下のように書き換えてください。

<form method="get" action="<$mt:CGIPath$><$mt:SearchScript$>">
   
    <MTTopLevelCategories>
    <MTSetVarBlock name="tcid"><MTCategoryID></MTSetVarBlock>
    <div>
        <input type="hidden" name="CategorySearchSets" value="<MTCategoryID>" />
        <select name="<MTCategoryID>">
            <option value="0">すべての<MTCategoryLabel></option>
               
    <MTSubCategories>
        <MTSetVarBlock name="clabel"><MTCategoryLabel></MTSetVarBlock>
        <MTCategorySearchLink type="absolute" set="$tcid" value="$clabel" op="replace" text="ignore" >
        <MTIf name="selected">
            <option value="<MTCategoryLabel>" selected="selected"><MTCategoryLabel></option>
        <MTElse>
            <option value="<MTCategoryLabel>"><MTCategoryLabel></option>
        </MTIf>
        </MTCategorySearchLink>
    </MTSubCategories>
               
        </select>
    </div>
    </MTTopLevelCategories>
   
    <div>
        <input type="text" name="search" value="<$mt:SearchString$>" />
        <input type="hidden" name="CategorySearch" value="1" />
        <input type="hidden" name="CategorySearchIgnoreText" value="1" />
        <input type="hidden" name="IncludeBlogs" value="<$mt:BlogID$>" />
        <input type="hidden" name="limit" value="<$mt:SearchMaxResults$>" />
        <input type="submit" accesskey="4" value="検索"  />
    </div>
   
</form>

■追記(2010/10/27)
MTCategorySearchLinkのtypeを「relative」から「absolute」に変更しました。

 

2.「検索結果」テンプレートを編集する

MTブログ管理画面の「デザイン>テンプレート>検索結果」を開いてください。

「<$mt:SearchString$>」と一致するもの

の部分を

<MTSetVarBlock name="search_string"><$mt:SearchString$></MTSetVarBlock>
<mt:CategorySearchSets glue=" と ">
    「<mt:CategorySearchCategories>
    <mt:CategoryLabel>
    </mt:CategorySearchCategories>」
    <mt:CategorySearchSetsFooter>
        <MTIf name="search_string">
        と「<$mt:SearchString$>」
        </MTIf>
        の検索結果
    </mt:CategorySearchSetsFooter>
</mt:CategorySearchSets>

に変更してください。

この段階でとりあえず再構築をかけてください。

ここまでで、2種類のカテゴリによる絞り込み検索ができるようになりました。

しかし、テキストフォーム(name="search")のところに検索ワードを入力してもスルーされてしまうと思います。

これは

<input type="hidden" name="CategorySearchIgnoreText" value="1" />

が記述されているためで、「CategorySearchIgnoreText」のvalueに値が入っていると、検索ワードが入っていなくても検索結果を返してくれるという利点がある代わりに、検索ワードは無視されてしまうという欠点があります。

できれば検索ワードが入っていない場合はカテゴリのみで検索し、入っている場合はそのワードでも検索するという風にしたいところです。

そこで、今回もJavascriptを使用します。

 

3.Javascriptを追記する。

読み込めればどこでもいいんですが、とりあえず「デザイン>ウィジェット>検索」を開いてください。

一番上に下記のソースを追記します。

<script type="text/javascript">
function searchTextCheck(){
    var searchText = document.getElementById("searchText").value;
    if(searchText != ""){
        document.getElementById("CategorySearchIgnoreText").value = "0";
    }
}
</script>

要するに、検索ボタンをクリックした瞬間、テキストフォームに検索ワードが入っていなければそのままにし、入っていればCategorySearchIgnoreTextのvalueを"0"にする、というわけです。

 

4.Javascriptで使用するためタグを修正する。

最後に1.で追加したform内のタグの値を少し変更します。

<form me\thod="get" action="<$mt:CGIPath$><$mt:SearchScript$>">
   
    <MTTopLevelCategories>
    <MTSetVarBlock name="tcid"><MTCategoryID></MTSetVarBlock>
    <div>
        <input type="hidden" name="CategorySearchSets" value="<MTCategoryID>" />
        <select name="<MTCategoryID>">
            <option value="0">すべての<MTCategoryLabel></option>
               
    <MTSubCategories>
        <MTSetVarBlock name="clabel"><MTCategoryLabel></MTSetVarBlock>
        <MTCategorySearchLink type="absolute" set="$tcid" value="$clabel" op="replace" text="ignore" >
        <MTIf name="selected">
            <option value="<MTCategoryLabel>" selected="selected"><MTCategoryLabel></option>
        <MTElse>
            <option value="<MTCategoryLabel>"><MTCategoryLabel></option>
        </MTIf>
        </MTCategorySearchLink>
    </MTSubCategories>
               
        </select>
    </div>
    </MTTopLevelCategories>
   
    <div>
        <input type="text" name="search" id="searchText" value="<$mt:SearchString$>" onkeypress="searchTextCheck();" />
        <input type="hidden" name="CategorySearch" value="1" />
        <input type="hidden" name="CategorySearchIgnoreText" id="CategorySearchIgnoreText" value="1" />
        <input type="hidden" name="IncludeBlogs" value="<$mt:BlogID$>" />
        <input type="hidden" name="limit" value="<$mt:SearchMaxResults$>" />
        <input type="submit" accesskey="4" value="検索" onclick="searchTextCheck();" onkeypress="searchTextCheck();" />
    </div>
   
</form>

■追記(2010/10/27)
MTCategorySearchLinkのtypeを「relative」から「absolute」に変更しました。

検索ワードを入力するテキストフォームのタグに
id="searchText"
onkeypress="searchTextCheck();"

CategorySearchIgnoreTextのタグに
id="CategorySearchIgnoreText"

検索ボタンに
onclick="searchTextCheck();"
onkeypress="searchTextCheck();"

をそれぞれ追加し、再構築してください。

これで、複数のカテゴリによる絞込み検索ができるようになったかと思います。

いや~、それにしてもすばらしいプラグインですね。

感謝感謝です。

Copyright(c) 2010 - 2017 ダリの雑記