ありがとう!プラグイン

Pagebuteで分割時に1ページ目だけに表示

カテゴリページでPagebuteを使ってページ分割しています。
その1ページ目だけに表示したいテキストがありました。
そのとき、<mt:Entries>直下に入れ子で下記を追加します。

 <MTEntriesHeader>
 <mt:Entries lastn="1">
 1ページ目だけ表示させてい内容
 </mt:Entries>
 </MTEntriesHeader>

Pagebuteプラグインタグでなんか分岐させるのかなーと思っていましたが、

--ファイルの生成時に動作するため、MTIf などのタグで数値判別するテクニックは使えません--

だそうです。
そうでしたか。

AnotherCustomFieldsプラグインのエラー対処

前述のAnotherCustomFieldsプラグインで、途中でフィールドを増やしたくて、config.yamlをいじっていたら、突然

Got an error: Error reading /アカウント/mt/plugins/プラグイン/config.yaml: Failed to load YAML document from string

と言うようなエラーが出没し、MTにログインすらできなくなりました。
青くなりました.。。

検索してみたところ、.yamlのファイルは、タブや空白が悪影響与えることがあるらしいです。
あと、最後は必ず改行で終わらなくてはいけないということ。
とりあえず、全部空白削除して、最後改行をしっかり確認して、そうしたら元に戻りました。

参考サイトはコチラ
http://www.starlod.net/mt6-mt-tinymce-field-0-60.html

感謝m(_ _)m

カスタムフィールドが簡単に増やせるプラグイン

サーバ移動の仕事が入ったので、元のサーバのタグをそのまま使えるようにカスタムフィールドプラグインを作りました。

今までの方法では、プラグインファイルを作って、alt-tmplのcmsの中に書き換えたedit_entry.tmplを保存する方法だったのですが、
もっと、超簡単なプラグインを見つけたので、使ってみました。

AnotherCustomFieldsプラグイン
http://www.h-fj.com/blog/archives/2011/09/02-143708.php

藤本壱さんのプラグインですね。

今まで、どうしても画像フィールドの設置が難しくて、本文やmoreに入れたものを反映させていたのですが、
、このプラグイン、サンプルに画像アップローダがついてる!
設置してみると、問題なく動きました!
すごい。感動した。
ただ、画像フィールドだけ、テンプレートの書き方が特殊で、検索しまくり、やっと見つけました。


 <mt:If tag="タグ名">
 <mt:タグ名Asset><img src="<$mt:AssetThumbnailURL$>" title="<$mt:EntryDate format="%Y"$><$MTEntryTitle$>"></mt:タグ名Asset>
 </mt:If>

Mt:Ifにしないと、フィールドへの入力がなかった時に「0」を返してしまします。
入力があった場合の処理にします。

あと、config.yamlへの複数行テキストボックスの書き方がわからない。。。
詳しくは、藤本さんのサイトから解説書(有料)がダウンロードできるらしい。
今回は、慣れているedit_entry.tmplへの書き込みを併用させました。

とにかくこのプラグインのすごいのが、フィールドがドラッグ&ドロップで並べ替えできます。
設置超簡単、見た目最高!まだ、わからないところも多いですが、素晴らしいプラグインです。

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

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

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

InsertIcon_1_20.zip

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

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

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

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

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



ckeditor.gif

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

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

TinyMCEも不具合がでました。


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


ページ分割プラグイン「PageBute」のページ送りの記述

分割後の最後のページの取得が簡単に出来たのに感動したので、覚書まで。

スカイアーク
静的ページ用ページ分割プラグイン:PageBute
http://www.skyarc.co.jp/engineerblog/entry/2642.html

okuri.gif
---------------------
<ul>
<MTIfPageFirst><$MTPageFirst delim="&lt;&lt;最初のページ"$></MTIfPageFirst>
<mt:IfPageBefore>


<$mt:PageBefore delim="&lt;&lt;前の10件"$>
</mt:IfPageBefore>
<$mt:PageLists delim="" link_start="<li>" link_close="</li>"$>
<mt:IfPageNext>
<$mt:PageNext delim="次の10件&gt;&gt;"$>

</mt:IfPageNext>
<MT:IfPageLast>
<$MTPageLast delim="最後のページ&gt;&gt;"$>
</MT:IfPageLast>

</ul>
------------
※注意:直接コピペできません。(<は全角です。お使いになる場合は修正してさい。)
※スタイルシートは別途設定してください。

最終ページの取得は

<MT:IfPageLast>
<$MTPageLast delim="LAST&gt;&gt;"$>
</MT:IfPageLast>

の部分です。

検索結果を分割するプラグイン「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

MTの、スマホ対応ページを作る。

インデックスページに、スマホのHTMLを新規で設置すればできるのかと思っていたのですが、なんか、うまくいかないですね。
アーカイブなページの生成も、知識が必要なようですので。

プラグインを入れて必要最小限の表示をさせて、そこから肉付けしていくことにしました。

こちらを参考にさせていただきました。ありがとうございます。
http://www.somaclip.jp/2011/09/iphone_mt5.html

まだ、カスタマイズ中なので、何か困ったことが起こったら追記します。(*^^)v

雑談ですが、iPhone欲しくなりました。
auをiPhone化しようと思っているのですが・・・。
財布と相談。

検索結果ページを分割するプラグイン「DivPages」

「SearchEntries」でできた検索結果ページには、「PageBute」プラグインでのページ分割が効きません。
そこで検索結果ページ用のページ分割プラグインをインストールして設定します。

DivPages 
http://www.h-fj.com/blog/archives/2005/07/08-130132.php 

詳しくは上記制作者のサイトを参照ください。

これも優れたプラグインです!
使いやすい。

カスタムフィールドを検索するプラグイン「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つ現れます。
インデックステンプレートと、テンプレートモジュールを新規で作って、ファイルの内容をコピペで置くだけの簡単さ。
スタイルシートで、体裁を整えればできあがりです。

プラグイン「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の中に複数のブログが入っていて、同じツイッターに連動させる時にこのような設定をします。

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


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

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が入って表示されます。

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

長くなってすみません。

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

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

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

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

次に

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

<$mt:CategoryLabel$>
</MTFilterCategories>

</mt:EntryCategories>

のように記述します。

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

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

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"を設定しないこと。
それと、ブログの設定で表示件数を設定しないことです。