MTOS LOVE!

スマホより メール投稿プラグイン

スマホより メール投稿プラグイン

成功しました!

posted by KetaiPost

****************
こちらに詳しい設置方法載ってます。
https://github.com/takeyuweb/KetaiPost/
この前の記事の、「perlモジュールの追加方法」もご参照ください。

私のサーバではcronが使えなかったので、コチラのプラグインも入れました。
RunPeriodicTasks_2_30
http://www.h-fj.com/blog/archives/2010/01/20-094755.php

perlモジュールの追加方法

よく、プラグインを入れたけど、なんとかのモジュールが足りませんなどのエラーが出て断念してしまうことはないですか?

シックスアパート株式会社のMovable Type News Letterというメルマガをとってるんですが、今朝の記事に「メール投稿プラグイン」が紹介されていたので、早速設置してみたんです。
プラグインのインストールは上手く行ったのですが、いくつかのperlモジュールがたりないというエラーが出てしまいました。

この、perlモジュール。
きっと、私のようなHTMLからスタートした文系デザイナにとっては、まったくワケの分からない代物で。
ネットで検索してみても、理系プログラマさんたちの常識からスタートした説明文は、タイトルにどんなに「超初歩的な」とか書いてあったとしても、途中で理解が迷子になるのが常。。。

でもなんとか「CPAN」(http://search.cpan.org/)というサイトでダウンロードできるらしいという情報をゲットしました。

たとえば
Mail::POP3Client
というモジュールが足りませんというメッセージが出てしまった。というとき。

SPANのトップページのサイト内検索窓に「Mail::POP3Client」と入力します。
それらしいものが並んだ一覧が出るので、該当のページを開きます。
右側にダウンロードできるリンクがあるので、そこから
Mail-POP3Client-2.19.tar.gz
をダウンロードします。
ちなみに
.tar.gzは「Lhaz」というソフトで解凍できます。

そのファイルを、サーバのMTをインストールした階層のlibやextlibなどのフォルダにアップロードします。

以上です。

ちなみに、メール投稿プラグイン、まだ動きません。
何が悪いのか。。。何かの設定をすっ飛ばしているのか。。。

成功のご報告が出来る様に、頑張ってみます!

MTをMTOSに変えました。

アドレスを変えずにMTをMTOSにするには。

まず、MTの記事をエクスポートします。(超重要)

まず、MTのアドレスのところがサイトのルートになるように、MTOSをインストールします。
インストールしたMTOSの、インデックスページのindex.htmlを仮に別の名前にリネームします。(これも重要)

エクスポートしたMTの記事を、メニューの「ツール」で新しいMTOSにインポートします。

ここで注意。
カテゴリが旧MTと新MTOSで同じだと、ログインできなくなります。
MTOSへのインポートのあと、再構築する前に(ウルトラ重要)、カテゴリ名をMTと重複しないように、変更します。
とにかく、同じでなければ大丈夫なので。

後は、カスタマイズした各ソース(インデックス・アーカイブ・モジュール等々のテンプレート)を旧からコピーして新へペースト。

旧でプラグインを入れていれば、新へも入れないと再構築エラーが出るので、それも。

満を持して新MTOSのメインページをindex.htmlに戻して、再構築!

旧MTをFTPで削除。

そしてできたのが、現在見えているページです。
もちろん、MT→MT、MTOS→MTOSでも通用すると思います。

何で変えたかというと、
MTOSカスタマイズする記事がほとんどなのに、MTで構築してたから。
理不尽な自分が許せず。。。
(´・ω・`;)

特定のカスタムフィールドの特定の値を集めて表示

MTOSでカスタムフィールドを手動で設定しているのですが、
ある、フィールドの中でも特定の値だけ、抜粋して表示させたい場合に
以下でOKです。
<mt:Entries>
<mt:If tag="フィールド" eq="特定の値">
カスタムフィールドに入力した特定の値だけ絞って表示
</mt:If> 
</mt:Entries>
たとえば
<mt:Entries>
<mt:If tag="sukinatabemono" eq="たこ焼き">
たこ焼き好きな人の声をたくさん表示~
</mt:If> 
</mt:Entries>
tag=""にはフィールド名、eq=""は日本語で大丈夫です。
カンタンで嬉しいですね。

そのブログ記事以外の記事一覧をページに表示させたい場合

ブログ記事ページで
そのブログ記事以外の記事の一覧もページに置きたい場合

参考にしたのはコチラです。

Movable Typeで表示中の記事を記事一覧から除外する方法

ブログ記事テンプレートをいじります。
記事の前に以下を置きます。

<$mt:EntryID setvar="hyojikiji"$>

記事のIDを取得して、"hyojikiji"に代入してます。


続きまして

<mt:entries>
直下に
<$mt:EntryID setvar="article"$>
    <mt:If name="article" ne="$hyojikiji">
を記述。

変数"article"と、変数"hyojikiji"が一致しない場合に、
その下に記述したものが表示されます。

--------
これで、このカテゴリ以外のものは表示しない分岐も入れたい。
来週のお仕事になりますな。

別のブログ記事テンプレートを動かす

今回のお仕事は、同じ情報を別の見せ方の2ページで表示したいという物。
しかも、個別のブログ記事テンプレートで生成させると言うものです。
以下手順です。

①アーカイブテンプレートの作成:+ブログ記事 をクリックして生成。
②新しいアーカイブマッピングをつくる。
今回私は、「category/sub-category/entry-basename.html」にしました。
③別のページからどうリンクするかというのが、一番の心配でしたが、以下の記述でOK!
<a href="<$mt:BlogArchiveURL$><$mt:FileTemplate format="%c/%-f"$>"><$mt:EntryTitle$></a>

aタグのなかに<$mt:FileTemplate format="%c/%-f"$>">を入れるんですね。
format=""の記述についてはアーカイブマッピングの種類によってかわります。
その記述についてこちらのサイトを参考にしました。
「アーカイブマッピングで利用するアーカイブファイル名の定義」
http://www.movabletype.jp/documentation/appendices/archive-file-path-specifiers.html

これで別の個別ブログ記事ページが生成されて、リンク先の設定もできた~!!
成長したなぁ。自分。
成長したね~キミ。って誰かに誉めて欲しい。。。

RSSで数件表示、そこからメインページのページ内リンク飛ばす

各ブログ、xmlファイルの「リンク先」の指定を、
<$MTEntryPermalink$>ではなく、
<$MTBlogURL$>#<$MTEntryID$>にします。 

 一方で メインページ
<mt:Entry>
の中に
<a name="<$MTEntryID$>"></a>のアンカーを埋め込んでおきます。 

これで、記事ごとに記事IDのアンカーが入ります。
 RSS一覧から、各記事へページ内リンクで飛べるというわけです。 

思いついて、仕事で使ってみたら成功しました。 
どうぞ、お試しください。

MT生成のアーカイブリストを折りたたむJQ

月別アーカイブリストを年ごとに折りたたむjqueryにトライしました。
このサイトのサイドバーにも反映してみました。


参考にした本は、「Movable Type 4.x クリエイターが身につけておくべき100の法則。」(発行:インプレスジャパン)です。
4.xなので、もう使えない機能もたまにありますが、今回は5.04にも使えました。

ソースは以下です。

<dl>
<dt></dt>
<dd>
<ol>
<MTArchiveList archive_type="Yearly">
<li class="yearlyList"><$MTArchiveTitle$>の記事を見る
<ol>
<MTArchiveList archive_type="Monthly">
<li><a href="<$MTArchiveLink$>"><$MTArchiveTitle$></a></li>

</MTArchiveList></ol>
</li>
</MTArchiveList></ol>
</dd>
</dl>

基本は上記ですが、
今回、今年度のは別に記載したので、去年から過去の表示が欲しい。
と言うことで、ちょっとつけたし。


<dl>
<dt></dt>
<dd>
<ol>
<MTArchiveList archive_type="Yearly"><MTArchivePrevious>
<li class="yearlyList"><$MTArchiveTitle$>の記事を見る
<ol>
<MTArchiveList archive_type="Monthly">
<li><a href="<$MTArchiveLink$>"><$MTArchiveTitle$></a></li>

</MTArchiveList></ol>
</li></MTArchivePrevious>
</MTArchiveList></ol>
</dd>
</dl>
------------

<MTArchivePrevious>タグを使います。

さて、

jqueryが入ってなければダウンロードして<head>内で読み込みます。
その下に新たにjavascriptを書くか、別ファイルにして読み込みます。

$(document).ready(function(){
$(".yearlyList ol").css("display","none")
$(".yearlyList").click(function(){
$(this).children().slideToggle("slow");
});
});


---------

スタイルシートは適宜入れてください。
1点。

.yearlyList{
cursor:pointer;
}

は記述したほうがいいです。しないと、オンマウスでもカーソル形状がかわりませんので、リンクなのかわかりづらいです。

さらに、注意。

「<$MTArchiveTitle$>の記事を見る」

の記述のところにスタイルを入れると、とたんにうまく行かなくなります。
「<$MTArchiveTitle$>の記事を見」る、は残ってて欲しいのに、表れた下層リストに押し出されて消えてしまうんです。

そこに背景バーイラストをおきたかったので、いろいろ試しました。
で、行き着いたのでが、
.yearlyListに背景画像をいれて、下のolにその分マージンを取るスタイルを入れました。
それで、なんとかうまく行きましたよ。

よく分からないけど、
js記述内の
.css("display","none")
が反映されちゃうんじゃないかと思うんですが、、、どうでしょうか。
詳しい人にめぐり合えたら聞いてみます。

カテゴリごとの条件分岐

忘れやすいので、覚書です。

<MTEntryIfCategory name="A">
カテゴリページ条件分岐
</MTEntryIfCategory>



<MTIfCategory label="A">
インデックスページ条件分岐
</MTIfCategory>


こんなことで時間とりたくない~

カスタムフィールドで改行を反映させる

<$カスタムフィールド名  nl2br="xhtml"$>

で、カスタムフィールドに入力した改行が反映されます。
この作業は、MT構築の最初のほうに行ったほうがいいですよね。

グループでMTを触って作業していると、担当者のクセで<br />を多用したりする人なんかいたりすることもあり、

途中で設定すると、えらくスカスカで縦のエントリーになってしまうので。
ケンカのもとです。

本文に載せたデカ画像を制御するCSS

Entrybodyに入る画像に最大幅を設定します。

divでくくり、idやclassに、以下設定。

img{ 
 width: auto; 
 max-height: 300px;
 }


img{ 
 max-width: 300px;
 height: auto;
 }

など。

大きな画像をリサイズするのって、慣れてない人にはきついですよね。
説明するのも大変だし。
これで解決。CSSの神様ありがとう!


前に、
img{
 width: auto;
 height: 300px;
 }

で設定したことがあって、
そしたら、絵文字アイコンまで300ピクセルででかでか表示されて、
超ウケました~。
脇役のはずが、すごい存在感だった!

InsertIconプラグインでアイコン管理

あるサーバにMTを構築したのですが、
お気に入りのエディタプラグイン「CKEditer」が機能しません。
インストールすると500エラーになってしまいました。。。。

なんとかせねば。。。
ということで、第一弾絵文字アイコンを入れるためのプラグインをインストールしました。

InsertIcon_1_20.zip

http://www.h-fj.com/blog/archives/2007/08/10-105920.php

藤本壱さまのサイトですね。
ファンです!!

使う絵文字を設定するのには手間がかかりますが、カスタマイズして載せられるので。
いいですね。

新規MT構築時の500エラー

仕事で新しくサーバにMTOSをインストールしました。
自動インストールでしたが、構築まではうまくいくのに、ブログのindex.htmlを表示させると、

Internal Server Error

File "/home/ドメイン/public_html/MT構築フォルダ/index.html" is writeable by group


suPHP 0.7.1

が出てしまう。。。

これは、サポートいわく、MT構築フォルダ/index.htmlのパーミッションに問題があるんだそうな。
FTPで確認すると「666」になってた。
これを「644」にしてみたら。

表示できました~。

良かったよ~~。
その先に、山のような作業目白押しの第一歩で、このようなつまづき。
胃がきりきりしましたさ。


【追記】
FTP触っただけでは再構築のたびに「666」に戻ってしまうので、
mt-config.cgiを書き換えました。

DBUmask 0022
HTMLUmask 0022
UploadUmask 0022
DirUmask 0022

をどこでもいいので追加しときます。コレで完璧。

カスタムフィールドに入力があったら表示

すごく、今さらな感じのエントリーですが、
あれ、どうだっけ。。。となることが多いので覚書

カスタムフィールドに入力があったら表示
なければブロックごと非表示

<mt:If tag="Entrymarumaru">
<img src="./img/marumaru.gif" alt="まるまる" />
<p><$mt:Entrymarumaru$></p></mt:If>

エディタプラグインCKEditerはいいゾ。

TinyMCEで emoddyを使う方法」という記事を前述しましたが、もっと良いプラグインを見つけました。



ckeditor.gif

このプラグインいろんなWEBアプリ版がでてるので、間違えないようにしてください。

実は、仕事で別サーバのデータ引っ越しがあり、MTOS4からMTOS5へ移行したのですが、やっぱり動かなくなるプラグイン続出で。。。

TinyMCEも不具合がでました。


CKEditerは絵文字も搭載してるので、emoddyプラグインの必要もなくなって、シンプルな使用感がうれしいです。


UTF8版 お薦めメールフォームCGI

知る人ぞ知るKENT-WEBさんのメールフォームCGIフリープログラムに、UTF8対応のがでました!!!

KENT-WEB
http://www.kent-web.com/
POST MAIL cgi
http://www.kent-web.com/data/postmail.html
今までのは、MTからだと必ず文字化けしてましたが、
もう大丈夫!
しかも、シンプルで、簡単設置、美しい!!
KENTさん、いつも本当にありがとうございます。
<(_ _)>

検索結果を分割するプラグイン「DivPages 」のMT5対応

前述の「DivPages」ですが、
藤本 壱さんの「MTOS活用テクニック」で書かれているのはMT4対応のようで、
MT5で動作させると、再構築中は何も起きませんが、検索ボタンを押したときに以下のようなエラーがでます。

---------
再構築に失敗しました。 : Can't locate object method "_hdlr_entries" via package "MT::Template::Context" at /home/ドメイン/www/mt/plugins/RealtimeRebuild/../../plugins/DivPages/DivPages.pl line 165.
---------

どうも
plugins/DivPages/DivPages.pl
の165行目あたりが問題のようです。

なので、「DivPages.pl エラー」で検索をかけたところ、以下の記事を見つけました。

http://50.lilulela.com/blog/archives/plug-in/index.php

---------------

165行目の
$res = $ctx->_hdlr_entries($args, $cond);を
$res = $ctx->invoke_handler('entries', $args, $cond);と書き換え、
433行目の
return 'http://' . $ctx->_hdlr_blog_host($args) . $uri;を
return 'http://' . $ctx->invoke_handler('bloghost', $args) . $uri;と書き換えれば5.0では動くそうなので・・・・


---------------

管理者の方はうまくいかなかったようですが、だめもとで上記の修正を行ってみたところ、うまくいきました!!!!
よかった~。


他にも別のプラグインを使う方法もあるらしいです。
試してませんが参考まで。

ArchivePage
http://www.boundless-ocean.ne.jp/2007/02/archivepage.html

カスタムフィールドを検索するプラグイン「SearchEntries」

MT標準の検索プログラム、<$mt:SearchScript$>では、カスタムフィールドの検索はできません。
プラグインが必要になります。

検索するとまず上がってくるのは、ToI企画さんの「CustomFieldsSearchだと思います。結構有名ですね。
しかし、MTOSでカスタムフィールドをプラグインで作った場合、上記プラグインは使えないようです。
エラーが出ます。

私は藤本 壱さんの「MTOS活用テクニック」を参考にカスタムフィールドを作っています。
mtosbook.jpg

この本の中に、この本を参考に作ったカスタムフィールドを検索するプラグインを紹介しています。
それが「SearchEntries」です。

ダウンロードは以下からできます。
http://www.h-fj.com/blog/archives/2010/04/03-102819.php

ただし、サイトに載っている情報は、MT標準のカスタムフィールドにしか対応していません。
「MTOS活用テクニック」を使っている人は、この本に出てくるタグを使わないとエラーが出ます。

素晴らしいプラグインです!
そして素晴らしい参考書です!!
激お薦め。

PostTweetでハッシュタグを入れる

ツイッターに連動させたので、ツイートにハッシュタグを入れたいというご要望にお応えし、方法を考えてみました。

新しくハッシュタグ用の<$mt:entryhash$>というカスタムフィールドを作ります。そこに前のつぶやき通り、大文字で#を入れた後にタグを入力してPostTweetを再投稿します。

これだけでは反映されないので、pluginsフォルダ内、「PostTweet/tmpl/message_format.tmpl」をエディタで開いて修正します。

---------
<mt:setvar name="title_len" value="100" />

<mt:setvarblock name="title"><mt:entrytitle remove_html="1" /></mt:setvarblock>

<mt:setvar name="category_len" value="100" />

<mt:setvarblock name="category"><$mt:CategoryLabel cutfirstchar="3"$></mt:setvarblock>

<mt:setvarblock name="link"> | <mt:entryshortenedpermalink /></mt:setvarblock>

<mt:setvarblock name="link_len"><mt:var name="link" count_characters="1" /></mt:setvarblock>

<mt:setvar name="entryBody_len" value="50" />

<mt:setvarblock name="entryBody"> | <$mt:EntryBody$></mt:setvarblock>

<!--これを追加-->
<mt:setvar name="entryhash_len" value="20" />

<mt:setvarblock name="entryhash"><$mt:Entryhash$></mt:setvarblock>
<!--これを追加 おわり-->

<mt:setvar name="title_len" op="|" value="$link_len" />

<!--ここもentryhashを入れて修正-->
<mt:var name="title" trim_to="$title_len" /><mt:var name="category" />&nbsp;<mt:var name="entryhash" /><mt:var name="link" /><mt:var name="entryBody" trim_to="38"$>...
<!--ここも修正 おわり-->

----------


最後の一文で<mt:var name="entryhash" />の前に&nbsp;を入れないと、ハッシュタグは機能しません。ご注意を。

PostTweetでmessage_format.tmpl書き換え時の微注意

EntryBodyはそのままだと、htmlタグも入れてしまいますので、
以下のようにします。
 
pluginsフォルダ内、「PostTweet/tmpl/message_format.tmpl」をエディタで開きます。

タイトルと短縮URL、本文を38文字まで表示、以降は...が表示される。
-----------------------

<mt:setvar name="title_len" value="140" />
<mt:setvarblock name="title"><mt:entrytitle remove_html="1" /></mt:setvarblock>
<mt:setvarblock name="link"> - <mt:entryshortenedpermalink /></mt:setvarblock>
<mt:setvarblock name="link_len"><mt:var name="link" count_characters="1" /></mt:setvarblock>
<mt:setvar name="entrybody_len" value="50" />
<mt:setvarblock name="entrybody"> | <$mt:EntryBody remove_html="1" $></mt:setvarblock>
<mt:setvar name="title_len" op="-" value="$link_len" />
<mt:var name="title" trim_to="$title_len" /><mt:var name="link" /><mt:var name="entrybody" trim_to="38"$>...


-------------------

<$mt:EntryBody remove_html="1" $>
ですね。

お薦めメールフォームプラグイン

MTにメールフォームを組み込むプラグインです。

http://www.h-fj.com/blog/archives/2007/01/25-085911.php

とても簡単に設置できました。
ダウンロードすると、ファイルが4つ現れます。
インデックステンプレートと、テンプレートモジュールを新規で作って、ファイルの内容をコピペで置くだけの簡単さ。
スタイルシートで、体裁を整えればできあがりです。

ブログ記事をFacebookに連動させる

Facebookって面白いですね~。ログインしてびっくり!
「友達かも」の欄に知り合いの顔がずらーっと並んでいます。
わー5年前派遣でお世話になった会社の上司がいる!Fさんお元気ですか。その節は大変お世話になりありがとうございました。


というわけで、ブログ記事の更新をFacebookと連動させる記事を探しました。
「むらごんの思い込みWeblog」の記事の中の、My Blog Postsを試しました。

http://muragon.boo.jp/blog1/2011/03/03_2226.html

むらごんさんありがとうございます。

プラグイン「PostTweet」でtwitter連動

PostTweetの導入方法はこちらをご覧ください。
http://m-logic.co.jp/mt-plugins/posttweet/docs/1.0.3/posttweet.html

結構簡単に、組み込めるプラグインです。

ディフォルトだと、ツイッターにはタイトルとURLしか表示されません。
そこに、カテゴリと、カスタムフィールドのテキストを表示するよう、カスタマイズしてみました。

FTPで、mtルートのpluginsフォルダ内、「PostTweet/tmpl/message_format.tmpl」をエディタで開きます。

**デフォルトでは、以下です。**

------------------------
<mt:setvar name="title_len" value="140" />

<mt:setvarblock name="title"><mt:entrytitle remove_html="1" /></mt:setvarblock>

<mt:setvarblock name="link"> - <mt:entryshortenedpermalink /></mt:setvarblock>

<mt:setvarblock name="link_len"><mt:var name="link" count_characters="1" />
</mt:setvarblock>

<mt:setvar name="title_len" op="-" value="$link_len" />

<mt:var name="title" trim_to="$title_len" /><mt:var name="link" />
------------------------



**カテゴリと<$mt:Entry006$>を表示できるようにしたのが以下です。
<$mt:Entry006$>は40文字以降は...で省略します。**

------------------------
<mt:setvar name="title_len" value="100" />

<mt:setvarblock name="title"><mt:entrytitle remove_html="1" /></mt:setvarblock>

<mt:setvar name="category_len" value="100" />

<mt:setvarblock name="category"><$mt:CategoryLabel></mt:setvarblock>

<mt:setvarblock name="link"> | <mt:entryshortenedpermalink /></mt:setvarblock>

<mt:setvarblock name="link_len"><mt:var name="link" count_characters="1" /></mt:setvarblock>

<mt:setvar name="entry006_len" value="50" />

<mt:setvarblock name="entry006"> | <$mt:Entry006$></mt:setvarblock>

<mt:setvar name="title_len" op="|" value="$link_len" />

<mt:var name="title" trim_to="$title_len" /><mt:var name="category" /><mt:var name="link" /><mt:var name="entry006" trim_to="40"$>...
------------------------



**カテゴリと<$mt:Entry006$>か<$mt:Entry001$>を表示できるようにしたのが以下です。
<$mt:Entry00n$>は40文字以降は...で省略します。
カテゴリは頭に3けたの連番をつけてソートしているので、その番号を消して表示します。**

------------------------
<mt:setvar name="title_len" value="100" />

<mt:setvarblock name="title"><mt:entrytitle remove_html="1" /></mt:setvarblock>

<mt:setvar name="category_len" value="100" />

<mt:setvarblock name="category"><$mt:CategoryLabel cutfirstchar="3"$></mt:setvarblock>

<mt:setvarblock name="link"> | <mt:entryshortenedpermalink /></mt:setvarblock>

<mt:setvarblock name="link_len"><mt:var name="link" count_characters="1" /></mt:setvarblock>

<mt:setvar name="entry006_len" value="50" />

<mt:setvarblock name="entry006"> | <$mt:Entry006 blog_id="6"$></mt:setvarblock>

<mt:setvar name="entry001_len" value="50" />

<mt:setvarblock name="entry001"><$mt:Entry001 blog_id="5"$></mt:setvarblock>

<mt:setvar name="title_len" op="|" value="$link_len" />

<mt:var name="title" trim_to="$title_len" /><mt:var name="category" /><mt:var name="link" /><mt:var name="entry006" trim_to="40"$><mt:var name="entry001" trim_to="40"$>...
------------------------
上記は、MTの中に複数のブログが入っていて、同じツイッターに連動させる時にこのような設定をします。

ツイッターに記事が現れると、最初めっちゃ感動します。


一つ置きに記事のスタイルシートを変えてみる

div class="styleA<MTIf name="__even__">  styleB</MTIf>">
以下でもOKです。
<div class="<mt:if name="__even__">styleA</mt:if><mt:if name="__odd__">styleB</mt:if>">

画像を一つ置きに変えるなどの応用にも。
<MTIf name="__odd__"><img src="/img/imageA.gif" alt="" /></MTIf>
<MTIf name="__even__"><img src="/img/imageB.gif" alt="" /></MTIf>


覚書までに。

__first__
初回の繰り返しであれば1

__last__
最後の繰り返しであれば1

__odd__
奇数回の繰り返しであれば1

__even__
偶数回の繰り返しであれば1

__counter__
現在の繰り返し回数

<mt:Entries>で最新記事を除いて表示する

<mt:Entries offset="1">

offsetモディファを使います。
"0"は全件表示になります。
lastnモディファと組み合わせて使えます。

<mt:Entries lastn="10" offset="1">

最新記事1件を除いて、10件まで表示、
というようなふうに。

べんり。

TinyMCEで emoddyを使う方法

TinyMCEはWYSIWYGエディターのプラグインです。MTで記事投稿の際エディタソフトのような使用感があります。スマイリー(顔アイコン)が挿入出来ますが、絵文字の挿入はありません。
そこで、絵文字を使用可能にするプラグイン「emoddy」を、TinyMCEの中に追加する方法を調べたので、レポートします。


参考サイトはコチラです。
http://www.web-consul.biz/consul/2010/10/tinymce-emoddy.html


<1>まず、TinyMCEをインストールします。(すでにしてある場合は飛ばして下さい)
http://tec.toi-planning.net/mt/tinymce/
このページからダウンロードページへ誘導してくれます。

<2>次に、emoddyをインストールします。
http://css-happylife.com/archives/2008/0823_1830.php
からダウンロード、フォルダ名を「emoddys」に変えます。
「mt-static/plugins/TinyMCE/lib/jscripts/tiny_mce/plugins」にそのフォルダをアップします。

<3>
すでにあるTinyMCEの設定ファイルにemoddyを認識させる作業をします。
「mt-static/plugins/TinyMCE/js/initialize.js」のファイルをダウンロードしてエディタで開きます。
「plugins : "safari・・」という記述にemoddys,を追加します。
→「plugins : "emoddys,safari・・」

<4>
MTのシステムのプラグインの設定画面で「TinyMCE」を開き、「エディターに表示するボタンの設定 」をカスタムに変更、
既存のボタンの名前が羅列しているのでカンマ(,)をおいて「emoddys」を追記します。で完了です。
system_plugin.gif

新規投稿などで確認してください。おひさまマークがemoddyです。
btn.gif
emojipanel.gif

ブログの振り分け~PC版とモバイル版~

プラグインやサービスを使う手もありますが、PC版のページと携帯版のページを作るのが面倒でないなら、それぞれのテンプレートを作るのもシンプルで良いです。

<1>携帯版インデックスページを作る
MTで「インデックステンプレートを複製」(ファイル名の左側のチェックボックスを入れて、アクションのプルダウンからテンプレートの複製を選択)します。
Dreamweaverなどでざっとhtml組んで(手打ちでももちろんいいですが)複製したインデックステンプレートにコピーペーストし、テンプレートの設定画面でファイル名をPC版とは別の名前にしたあと、保存・再構築をかけます。

<2>携帯版のブログ記事ページを作る。
以下のサイトを参照しました。
http://webdesigner.hikonet.net/mt/20090110.php
アーカイブテンプレートで、PCのブログ記事のテンプレートを複製します。
テンプレートの設定で新しいアーカイブマッピングを作成にし、種類を「ブログ記事」パスのところは私は「m/%y/%m/%d-%s%x」としました。最初のm/はmディレクトリに携帯関係のファイルを入れる決まりにしたからです。
保存をクリックします。

携帯インデックスページに戻り、プログ記事へのリンクを
<a href="<$mtBlogURL$>m/<$MTEntryDate format="%Y/%m/%d-%S"$>.html"><$mt:EntryTitle$></a>
と設定します。再構築をかけます。
これで、携帯版ブログ記事が
http://ドメイン/m/2011/08/12-09.html
などのように生成されます。

<3>同じ要領で携帯月別ブログ記事リストを作成する
月別ブログ記事を複製し、アーカイブマッピングは「m/%y-month/%m/%d-%s%x」、種類が月別、インデックスページじ記述するリンクは、
<a href="<$mt:BlogURL$>m/<$MTArchiveDate format="%Y-month/%m/%d-%S"$>.html"><$mt:ArchiveTitle$>(<$mt:ArchiveCount$>)</a>
にしました。

これで、各プログ記事と、月別記事のページが生成されます。

さて、うまく行かなかったのが、カテゴリ別ブログ記事のページです。
考え方は同じはずなのに、何がいけないのか、ページ生成されないし。
この仕事にいつまでもかかりっきりになってる訳にもいかないし。
そこで。

いや、大したことしてません。すみませんもったいぶって。
カテゴリ用にMT新規で作りました。別のMTにカテゴリ関係だけ飛ばして、記事はインクルードで対応しました。
長くなってしまったので、詳しくは、次回にて。m(_~_)m

MTOSで、カテゴリに画像を割り当てる

カテゴリごとに画像を割り当てます。
正確に言うと、カテゴリの管理画面に、カスタムフィールドを追加します。
カテゴリと対になるもので、テキスト入力出来るものを作ります。ここに画像のファイル名を入力して、テンプレート側で画像が表示できるHTMLタグを設定しておきます。

参照ページはこちらです。(感謝)
Under the Bridge
MT4.1:プラグイン作成におけるDBへのフィールド追加について(カテゴリ編)
http://www.apstars.com/blog/215/mt41db_1.php


具体的には以下です。

<1>プラグイン作成
---------------------------
package MT::Plugin::SubitemCat;
use base 'MT::Plugin';

use strict;

use MT;
use MT::Plugin;
use MT::Template::Context;
use MT::Entry;

# register plugin
my $plugin = __PACKAGE__->new({
    name => 'SubitemCat',
    key => 'SubitemCat',
    version => '1.00',
    author_name => 'your name',
    description => 'Sub item of Cat',
    schema_version => '1.00',
});
MT->add_plugin($plugin);

# initialize registry
sub init_registry
{
    my $plugin = shift;
    $plugin->registry({
        object_types => {
           'category' => {
              'sort_index_custom' => 'string(255)',
           },
        },
        tags => {
            function => {
                'CategorySortIndex' => sub{&_hdlr_sort_index_custom;},
            },
        },
    });
    
}

sub _hdlr_sort_index_custom {
    my ($ctx, $args) = @_;
    my $tag = 'CategoryIndexAdd';
    (my $category = $ctx->stash('category')) || return $ctx->_no_category_error('MT' . $tag);
    return $category->sort_index_custom || '';
}

1;
-----------------------------

これで CategorySortIndex というMTタグが存在するようになります。
SubitemCat.plとして、mtフォルダ直下「plugins」ディレクトリに入れます。
任意で「SubitemCat」などの名前のフォルダに入れます。

次に管理画面にカスタムフィールドを表示させるためのファイルを作ります。
mt直下「tmpl」内「cms」内の「edit_category.tmpl」をダウンロード、以下ソースを追加します。


------------------------------
(省略)
    <fieldset>
        <h3><__trans phrase="Outbound TrackBacks"></h3>
<mtapp:setting
    id="ping_urls"
    label="<__trans phrase="Trackback URLs">"
    hint="<__trans phrase="Enter the URL(s) of the websites that you would like to send a TrackBack to each time you create an entry in this category. (Separate URLs with a carriage return.)">"
    help_page="categories"
    help_section="categories_urls_to_ping">
    <textarea name="ping_urls" id="ping_urls" cols="" rows="" class="full-width short"><mt:var name="ping_urls" escape="html"></textarea>
</mtapp:setting>
    </fieldset>



<!-- ここから追加部所 Category Sort Add -->
    <fieldset>
    <h3>Input Category Sort Index</h3>
<mtapp:setting
    id="sort_index_custom"
    label="Category Sort Index Input">
    <div class="textarea-wrapper">
        <input name="sort_index_custom" id="sort_index_custom" class="full-width" maxlength="100" value="<mt:var name="sort_index_custom" escape="html">" class="wide" />
    </div>
</mtapp:setting>
    </fieldset>
<!-- ここまで追加部所 Category Sort Add -->







<mt:setvarblock name="action_buttons">
    <button
        type="submit"
        accesskey="s"
        title="<__trans phrase="Save changes to this category (s)">"
        class="save action primary-button"
        ><__trans phrase="Save Changes"></button>
</mt:setvarblock>
<mt:include name="include/actions_bar.tmpl" bar_position="bottom" hide_pager="1" settings_bar="1">
</form>

</div>
<mt:include name="include/footer.tmpl">

------------------------------

保存したら、mt直下「alt-tmpl」内「cms」内にアップします。そうすると、MTが優先的にそちらを読みに行きます。

管理画面「.../mt/mt.cgi」に再度サインインすると、バージョンアップを知らせる画面が現れると思います。そうしたらまずは成功。
カテゴリの管理画面を見てみると「Category Sort Index Input」というタイトルのカスタムフィールドが新しくあると思います。

テキストも入力できますが、今回は画像のファイル名を入力しておきます。
画像もアイテムやFTPを使ってアップしておきます。

最後にテンプレートのカテゴリ表示に以下のようなHTMLタグを追加します。。
--------------------------------

<mt:Entries>

<mt:IfNonEmpty tag="EntryCategories">
<mt:EntryCategories>

<img src="<$mt:BlogURL$>/img/<$mt:CategorySortIndex$>" alt="<$mt:CategoryLabel$>" />

</mt:EntryCategories>
</mt:IfNonEmpty>
                            
</mt:Entries>

--------------------------------

上記で、指定した画像にカテゴリ名のaltが入って表示されます。

利用方法としては、カテゴリのリスト表示などで個別のアイコン画像を頭につけたりとか、リスト自体を画像で組んだり出来ますね。

長くなってすみません。

別ブログの特定のカテゴリをインクルード

別のブログの、あるカテゴリだけ表示したい。

以下の要領で組みます。
-------
<mt:Entries include_blogs="ブログID" category="表示したいカテゴリ">

<$mt:EntryTitle$>
<$mt:EntryBody$>
などの内容

</mt:Entries>
--------
大元のページでは</mt:Entries>をh2にしてたけど、インクルードのページでは別のカスタムフィールドをh2で表示、なんてこともできますね。

特定のタグのエントリーを表示

管理画面のタグのところに任意のタグを入力します。

テンプレートのソースで、

<MT:Entries tag="任意のタグ">
 任意のタグの記事
</mt:Entries>

でそのタグだけピックアップさせて表示できるのですが、

今回仕事で、「おすすめ記事を選んでランキング形式で表示させたい」との要望あり、タグフィールドに「ranking01」~「ranking05」までのタグをそれぞれの記事に入れ、

<MT:Entries tag="ranking01">
ranking01のタグの記事
</mt:Entries>

<MT:Entries tag="ranking02">
ranking02のタグの記事
</mt:Entries>

<MT:Entries tag="ranking03">
ranking03のタグの記事
</mt:Entries>

<MT:Entries tag="ranking04">
ranking04のタグの記事
</mt:Entries>

<MT:Entries tag="ranking05">
ranking05のタグの記事
</mt:Entries>

と言う感じで表示させました。

なんかソート的な方法はないか、かなり調べましたが。よくわかんない。

特定のカテゴリを非表示(プラグイン編)

プラグインをみつけました。
やっぱり記述が楽ですね。

staggernation.comの「FilterCategories」からファイルをダウンロードします。
mtがインストールしてあるフォルダの「plugins」にアップします。

システムで、プラグインの中にあるか確認して下さい。

次に

<mt:EntryCategories>
<MTFilterCategories exclude="表示したくないA|表示したくないB|表示したくないC">

<$mt:CategoryLabel$>
</MTFilterCategories>

</mt:EntryCategories>

のように記述します。

ちなみに特定のカテゴリを表示したい場合はexclude を includeに変えます。
少ない記述で済む方を選べばよいですね。

カテゴリ一覧表示で、特定のカテゴリを非表示

中古車販売のサイトで、メーカーと車種のカテゴリを作りました。

トップページでメーカーで選べるエリアと、車種で選べるエリアと作りたかったので、カテゴリ表示の表示・非表示を設定できるプラグインをさがしましたが、サイトのリンクが切れていてダウンロードできません。

いろいろ調べたら、MTタグに書き込める方法もあったので、試したらうまく行きました。

以下です。

------------------

<mt:TopLevelCategories>
<mt:SubCatIsFirst><ul></mt:SubCatIsFirst>
      <mt:SetVarBlock name="catname">
      <$MT:CategoryLabel$>
      </mt:SetVarBlock>
      <mt:Unless name="catname" like="カテゴリ名">


<li>
<mt:IfNonZero tag="CategoryCount">
<a href="<$mt:CategoryArchiveLink$>"><$mt:CategoryLabel$>
</a>
<mt:Else>
<$mt:CategoryLabel$>
</mt:Else>
</mt:IfNonZero>
<$mt:SubCatsRecurse$>
</li>
      </mt:Unless>
<mt:SubCatIsLast></ul></mt:SubCatIsLast>
</mt:TopLevelCategories>
-----------------

これは、使えます!

複数のカテゴリを非表示にしたいときは

<mt:Unless name="catname" like="カテゴリA|カテゴリB|カテゴリC">

| で区切って書きます。

最新記事をテーブルで表示

中古車サイトのトップページに、最新の商品を6件、テーブル表示できるエリアを作りました。

a_auto.jpg

ソースは以下です。

--------------

<mt:Entries lastn="6">
<mt:EntriesHeader>
<mt:SetVar name="max" value="3">
<mt:SetVar name="no" value="1">
<div align="center">
<table width="640" border="0" cellspacing="0" cellpadding="6">
</mt:EntriesHeader>

<mt:If name="no" eq="1"><tr></mt:If>
<td class="topnewtb" valign="top">
表示させたいMTタグ
</td>
<mt:If name="max" eq="$no">
</tr>
<mt:SetVar name="no" value="1">
<mt:Else>
<mt:SetVar name="no" value="1" op="+">
</mt:Else>
</mt:If>

<mt:EntriesFooter>
<mt:If name="no" gt="1">
<mt:If name="max" ne="$no">
<mt:for from="$no" to="$max" increment="1">
<td> </td>
</mt:for>
</mt:If>
</mt:If>
</tr>
</table>
    </div>
</mt:EntriesFooter>
</mt:Entries>

--------------

 

冒頭のmt:SetVar で、<tr>と<td>を判別しています。

MTで英語サイト

前述の中古車輸出サイト案件。

先方は英語サイトをご希望です。
それだけなら lang="en"だけ気をつければいけそうな気がしていました。
昔、医療機関の英語サイト作った時、わりと英語サイトのほうが作りやすかった記憶があるので。

しかし、問題はMTのインターフェイス自体を英語にしてほしいと要望が来たこと。

やったこと無かったので、ネットで検索。
すると、最初のインストールの時に、基本Englishを選択すればよいだけでした。

かくして、英語インターフェイスのMTインストールOK。

しかし、ところどころに日本語が混じっています。
ファイルをカスタマイズしようと「Design」を開くと、ソースの中にも日本語が混ざっています。

テンプレート名は日本語で生成されるので、それが混ざってしまっているんですね。
これ、出力した時絶対問題おきると思う。

そこで、テンプレート名を英語に直すところからスタート。
それだけだと、エラーが出てしまうので、インデックステンプレート等の中に記述されてる読み込みテンプレートファイル名も日本語から変更した英語名のものへ変更。

どんどん、英語だけのインターフェイスになっていく。

なんか、かっこいいぞ。

メインページの文字数を一定以上でカットする

これは前にプラグインをいれてやったことがありましたが、もっと簡単な方法がありました。

以下、まずソースです。

-------------------

<mt:SetVarBlock name="charaCount"><$mt:EntryBody count_characters="1"$></mt:SetVarBlock>
<mt:If name="charaCount" gt="30">
    <p><$mt:EntryBody trim_to="30"$>...</p>
    <p align="right"><a href="<$mt:EntryPermalink$>">続きをみる</a></p>
   
<mt:Else>
    <p><$mt:EntryBody$></p>
    </mt:If>

------------------

<p><$mt:EntryBody trim_to="30"$>...</p>
で、30文字でカットするようにしてます。で...をつけているのですが、
30文字以内なら...が出ないように、その前の記述で代入、条件分岐させます。

後は「続きをみる」で、ブログ記事へリンクさせます。

ページを分割するプラグイン

PageButeというプラグインで、ページを分割して表示させました。

pagebute.jpg

これはずっと標準搭載の機能だと思っていましたが、プラグインが必要だったんですね。

ダウンロードページはこちらです。

スカイアークシステム
http://www.skyarc.co.jp/engineerblog/entry/2642.html

導入方法は、
解凍ファイルPageBute.pl を plugins ディレクトリにアップロードします。

システムのプラグインに「PageBute」が表示されていれば大丈夫です。

次にテンプレートソースを書き換えます。
私は以下のように書き換えました。

---------------

<mt:pageContents count="5">
<mt:Entries>

~ブログ記事(省略)~

<mt:pageSeparator />

</mt:Entries>

</mt:pageContents>

<div class="content-nav">
<mt:ifPageBefore>
  <span><$MTPageBefore delim="&#65308;"$></span>
</mt:ifPageBefore>
<mt:pageLists />
<mt:ifPageNext>
  <span><mt:pageNext delim="&#65310;" /></span>
</mt:ifPageNext>
</div>

---------------

5件づつ区切ってます。

また、ページ分割の表示は11件づつがデフォルトで、表示数を変えるなら

<mt:pageContents count="5" navi_count="6"> ~ </mt:PageContents>

で6件ずつになります。

注意点は、<mt:Entries>にlasten="n"を設定しないこと。
それと、ブログの設定で表示件数を設定しないことです。

 

カテゴリごとに表示スタイルを変える

制作中のサイトで、「交渉中」と「交渉可能」のステイタス分けをしてほしいとクライアントさんから要望がありました。

カスタムフィールドを作って、一度表示可能にしたのですが、これ「交渉中」ならそれだけ集めた表示ができるようにしたいなと思い、カテゴリー機能を使う事にしました。カテゴリ別ページが使えますから。

さて、カテゴリー分けするのは簡単ですが、「交渉中」と「交渉可能」が同じスタイルで表示されるのは分かりづらいですね。そこで、「交渉中」は赤、「交渉可能」は青で表示できるように、スタイルシートを設定しました。

以下、その部分のスタイルシート

--------------

.catstyleka {
 font-size: 0.75em;
 line-height: 150%;
 color: #005890;
}
.catstyletyu {
 font-size: 0.75em;
 line-height: 150%;
 color: #ff0000;
}
--------------

そして、以下はテンプレートに記述した分岐部分

---------------

<MTIfCategory name="交渉可能">
<span class="catstyleka"><$mt:CategoryLabel$></span>

<MTElse>
<MTIfCategory name="交渉中">
<span class="catstyletyu"><$mt:CategoryLabel$></span>
<MTElse><span class="catstyle"><$mt:CategoryLabel$></span>
</MTElse>
</MTIfCategory>
</MTElse>
</MTIfCategory>
---------------------

で、どれにも当てはまらない場合のスタイルを<MTElse>で設定しましたが、当てはまらないカテゴリーが存在しないとエラーが出ます。
ダミーでもカテゴリーを何か作っておく必要がある模様。

MTOSカスタムフィールドを一つのプラグインにまとめる

進行中のサイト、カスタムフィールドに入力したデータが、ページでテーブルにいれ込んで表示するようにしました。
項目が15くらいあるんだけど、プラグイン15個つくってインストールしていました。バカ真面目だな私。
(プラグインの作成方法についての参考書:藤本 壱著「MTOS活用テクニック」ラトルズ発行)

でも、このタイプのページが二つあって、さすがに二つ目の時はうんざりしてしまい、参考書をみてたら、あるではないですが。「一つのプラグインで複数のフィールドを作成する」(う~ん。早く気付こうよ。)

超楽でした!

以下、自作マルチプラグイン「UKMulti.pl」

---------------------

package MT::Plugin::UKMulti;
use base 'MT::Plugin';

use strict;

use MT;
use MT::Plugin;
use MT::Template::Context;
use MT::Entry;


# register plugin
my $plugin = __PACKAGE__->new({
    name => 'MultiField',
    key => 'multi_field',
    version => '1.02',
    author_name => 'Yuko Watase',
    description => 'Add multi fields.',
    schema_version => '1.02',
});
MT->add_plugin($plugin);

# initialize registry
sub init_registry {
    my $plugin = shift;
    $plugin->registry({
        object_types => {
            'entry' => {
                'uk_gyousyu' => 'string(255)',
                'uk_area' => 'string(255)',
                'uk_mensekimini' => 'string(255)',
                'uk_mensekimax' => 'string(255)',
                'uk_otime' => 'string(255)',
                'uk_ctime' => 'string(255)',
                'uk_tenpof' => 'string(255)',
                'uk_sekiminif' => 'string(255)',
                'uk_sekimax' => 'string(255)',
            },

        },
        tags => {
            function => {
                UKgyousyu => \&uk_gyousyu,
                UKarea => \&uk_area,
                UKmensekimini => \&uk_mensekimini,
                UKmensekimax => \&uk_mensekimax,
                UKotime => \&uk_otime,
                UKctime => \&uk_ctime,
                UKtenpof => \&uk_tenpof,
    UKsekimini => \&uk_sekiminif,
    UKsekimax => \&uk_sekimax,


                },
        },
        callbacks => {
            'cms_pre_save.entry' => {
                priority => 9,
                code => \&save_entry_field,
            },
           
        }
   });
}

sub save_entry_field {
    my ($eh, $app, $entry, $orig_entry) = @_;

    $entry->uk_gyousyu($app->param('uk_gyousyu') || '');
 $entry->uk_area($app->param('uk_area') || '');
    $entry->uk_mensekimini($app->param('uk_mensekimini') || '');
    $entry->uk_mensekimax($app->param('uk_mensekimax') || '');
    $entry->uk_otime($app->param('uk_otime') || '');
    $entry->uk_ctime($app->param('uk_ctime') || '');
    $entry->uk_tenpof($app->param('uk_tenpof') || '');
    $entry->uk_sekiminif($app->param('uk_sekiminif') || '');
    $entry->uk_sekimax($app->param('uk_sekimax') || '');
 
    1;
}

 

 


sub uk_gyousyu {
    my ($ctx, $args) = @_;

    my $entry = $ctx->stash('entry')
        or return $ctx->_no_entry_error();
    $entry->uk_gyousyu || '';
}

sub uk_area {
    my ($ctx, $args) = @_;

    my $entry = $ctx->stash('entry')
        or return $ctx->_no_entry_error();
    $entry->uk_area || '';
}

sub uk_mensekimini {
    my ($ctx, $args) = @_;

    my $entry = $ctx->stash('entry')
        or return $ctx->_no_entry_error();
    $entry->uk_mensekimini || '';
}

sub uk_mensekimax {
    my ($ctx, $args) = @_;

    my $entry = $ctx->stash('entry')
        or return $ctx->_no_entry_error();
    $entry->uk_mensekimax || '';
}

sub uk_otime {
    my ($ctx, $args) = @_;

    my $entry = $ctx->stash('entry')
        or return $ctx->_no_entry_error();
    $entry->uk_otime || '';
}

sub uk_ctime {
    my ($ctx, $args) = @_;

    my $entry = $ctx->stash('entry')
        or return $ctx->_no_entry_error();
    $entry->uk_ctime || '';
}

sub uk_tenpof {
    my ($ctx, $args) = @_;

    my $entry = $ctx->stash('entry')
        or return $ctx->_no_entry_error();
    $entry->uk_tenpof || '';
}

sub uk_sekiminif {
    my ($ctx, $args) = @_;

    my $entry = $ctx->stash('entry')
        or return $ctx->_no_entry_error();
    $entry->uk_sekiminif || '';
}

sub uk_sekimax {
    my ($ctx, $args) = @_;

    my $entry = $ctx->stash('entry')
        or return $ctx->_no_entry_error();
    $entry->uk_sekimax || '';
}

1;

 

---------------------

美容室APRISサイト 完成!

apris.jpg

http://apris.jp

総Movable Type OSサイトです。
いろいろ勉強になりました。
店舗の撮影から関わったので、とても面白かったです。

9月は、一時期8案件掛け持ち状態になってしまい、本当にきつかったです・・・。
月末になってやっと、3件までになりました。

カテゴリを希望の順序で表示

ブログを構築中のサイトのお客様から電話あり。「カテゴリの順番って変えられませんか?」

このブログは、スタッフをカテゴリで分けていて、スタッフ名のカテゴリにチェックを入れると記事の見出しに自動的にそのスタッフ名が表示されるようにしてあります。

それで、カテゴリを役職順に並べたいところですが、MTのカテゴリはアルファベット順にならんでしまうので、通常管理画面では変更できません。

そこで、検索すると、いいプラグインがありました。

http://www.h-fj.com/blog/archives/2004/12/19-113315.php

カテゴリー名の先頭に番号をつけて、それを表示する際に番号をカットする、という手法です。

まず、cutfirstchar.pl ファイルをダウンロードします。
そのままmtのインストールしてある階層のpluginsディレクトリにアップしていいらしいのですが、他のプラグインはフォルダで囲ってあるので、これも「Cutfirstchar」というフォルダを作ってそこに入れ、それごとアップしました。

次に、カテゴリの編集画面で、表示したいカテゴリ順に連番を振ります。私は一番上から001、002、003・・・としました。

これだけで、希望の順番にカテゴリが並びますが、連番はカッコ悪いので消したい。

で、<$MTCategoryLabel cutfirstchar="桁数"$>と設定してやると、先程のプラグインのおかげで、頭から"桁数"分だけが表示されなくなります。

例として、私は以下のように記述しました。

-----------------------

<h2>カテゴリー</h2>
<mt:TopLevelCategories>
<mt:SubCatIsFirst><ul></mt:SubCatIsFirst>
<li>
<mt:IfNonZero tag="CategoryCount">
<a href="<$mt:CategoryArchiveLink$>"><$mt:CategoryLabel cutfirstchar="3"$>
</a>
<mt:Else>
<$mt:CategoryLabel cutfirstchar="3"$>
</mt:Else>
</mt:IfNonZero>
<$mt:SubCatsRecurse$>
</li>
<mt:SubCatIsLast></ul></mt:SubCatIsLast>
</mt:TopLevelCategories>

別のブログから、記事のインクルードに成功!

MTOSでカスタムフィールドを作っています。

画像をアップロードするフィールドがJavaScriptの関係で設置できなかったので、本文の「画像挿入」の仕組みを使うことにして、他は全部テキストフィールドを作りました。

こんなかんじ

なかなかうまくいきました。

これで、MTタグを作れたので、次は表示ページにスタイルシートを適用させ、各記事が行儀よく並ぶようにしました。

で、そのページは完成したのですが、今度、その記事の更新が別のブログに反映出来るようにしたい。ということで、やってみました。インクルード。

まず、元のブログにインデックステンプレートを新たに作成し、他の表示先のブログに表示できるよう、スタイルシートで体裁を整えます。この時、スタイルシートも、別に新しく専用の物をつくると混乱しないかなと思います。

それから、そのインデックステンプレートのファイル名を「.inc」にして、「shtml」のインクルードとして処理するにチェックを入れます。

で、表示先のテンプレートの中に、

<!--#include virtual="ファイル名.inc"-->

といれます。

後は、そのファイルの拡張子を.shtmlに変えればOK。 ばっちりうまくいきました。

参考書はこちら。


100423_142333.jpg  

MTOSカスタムフィールドでつまづく。

昨日に続きまして、MTOSにカスタムフィールドをいれ込んでいます。

スタッフ紹介ページにだけ、名まえ、役職、出身地、すきなものを入力できるフィールドを、それぞれプラグインを作って増やしていきます。

しかし、つまづきました。画像挿入のフィールドが動作しません。あーここにスタッフ写真が簡単にいれられたら、お客さんの更新がすごく楽なのに。

何時間か費やしましたが、ダメ。
何か情報が無いかと検索してみたところ。

ありました。
http://www.mycupoftea.cc/archives/2010/02/26/customfield_on_mtos5.html

 

「MT5では管理画面のJavaScriptがjQueryベースに変更されました。そのため、JavaScriptに依存するフィールド追加は、MT5では正しく動作しなくなります。具体的には、画像型のフィールドと、日付/時刻型フィールドが正しく動作しなくなるはずです。」

この人はなんとか動くようにしたらしい。どうやったんだろう。聞いてみたら教えてくれるだろうか・・・。

納期も納期なので、とりあえず、本文に元からついている画像挿入ボタンを使用する方法で行くことに。苦肉の策。まさに。

MTOSで、特定のブログにカスタムフィールドを付け足す

5案件掛け持ちしてて、常に「仕事しなきゃ」という強迫観念に駆られていましたが、

1件完納。
3件チェックバックで修正指示待ち

今日は残りの1件のみ考えていればいいんだ。あ~ちょっぴり解放感。幸せ。

mtosbook.jpgその残りの1件はMovable Type Open Sourceでサイトを構築しています。

スタッフのページを、一つのブログとして独立させて、店員さんの入ったの辞めたのに対応できるようにしたいのですが、管理画面のカスタマイズをすると、他の「料金ページ」だの「スタッフブログ」だのの管理画面にも同じカスタムフィールドがでてしまう。

さくらインターネット、MTOSは複数インストール出来ないし。(どこでも普通はしないであろう)

ちなみにMTOSはMTと違って、カスタムフィールド気楽に追加できる機能はありません。
参考書みながら、プログラムに直接手を加えています。

で、参考書に載ってました。特定のブログだけにフィールドを反映させる方法。
以下です。

<mt:if name="blog_id" eq="5">
<p>たとえばテスト</p>
</mt:if>

 <mt:if></mt:if>で囲んでやるんですね。
eq="5"の5には、ブログIDをいれてやります。ブログIDはそのブログの管理ページを触っている時、常にブラウザのアドレスバーに..../mt.cgi?__mode=view&_type=entry&blog_id=5 みたいな感じで表示されてます。

結構面白いです。MTOSのカスタマイズ。
このサイトもそのうち「Movable Type (吹き出しカッコ)Open Source(吹き出しカッコ閉じ)カスタマイズ中です(-_-)v」にいつか改名してるかもしれません。ご期待を。