お知らせ

WordPressで学ぶPHPとMySQL2009年9月23日

WordPressで学ぶPHPとMySQL」を発売しました。
「WordPressをカスタマイズしたいけど、PHPやMySQLが分からなくて躓いている」という方のための、PHPとMySQLの入門書です。
WordPressでWeb製作をされている方などにお勧めです。
PDFによる販売で、当サイトでのみ購入できます(書店では購入できません)

他にも多数書籍を執筆しています。
こちらもぜひご覧ください。

エントリーの関連付けを行うプラグイン・プチバージョンアップ4

| コメント(19) | トラックバック(0)

「エントリーの関連付けを行うプラグイン」に対して、以下のようなご要望がありました。

<MTIfNonZero tag="MTEntryRelatedEntriesCount">を利用して関連エントリーがある場合のみ見出しと合わせて一覧が表示されるようにしているのですが、複数ブログの関連付けにおいて関連元のエントリーからの関連付けが他ブログのエントリーに対してのみの場合、 MTEntryRelatedEntriesCountはforceアトリビュートを使用しない限り0となるために表示がされなくなってしまいます。

そこで、この件に対応するために、プラグインをプチバージョンアップしました。
「MTEntryIfRelatedEntries」というタグを追加して、エントリーに関連するエントリーがあるかどうかを判断できるようにしました。

#コードを1行追加しただけです(笑)。

RelatedEntries_1_14.zip

タグの書き方等の詳細については、元のエントリーに追加しましたので、そちらを参照してください。

トラックバック(0)

トラックバックURL: http://www.h-fj.com/mt/mt-tb.cgi/756.

コメント(スレッド19件,コメント19件)

コメントはスレッド表示になっています。
また、スレッドの先頭のコメントに対する返信には、先頭に矢印を表示しています。

No.1 日下部理恵 : (無題)

いつもお世話になっています。
本日(2007/01/24)MT-3.34にバージョンアップして、RelatedEntriesプラグインも1.13から1.14にバージョンアップして使ってみました。その結果、以下が画面に表示され、関連づけの画面に入ることが出来ません。プラグインを1.13にもどすと、関連づけが出来ます。

Got an error: Can't locate Locale/Maketext.pm in @INC (@INC contains: ./extlib ../../lib lib /usr/local/lib/perl5/site_perl/5.005/i386-freebsd /usr/local/lib/perl5/site_perl/5.005 . /usr/libdata/perl/5.00503/mach /usr/libdata/perl/5.00503) at ../../lib/MT/L10N.pm line 9.
BEGIN failed--compilation aborted at ../../lib/MT/L10N.pm line 9.

No.2  : (無題)

>日下部理恵さん
こんにちは。

「Maketext.pmが見つからない」というエラーが出ていますが、これはMovable Typeの配布ファイルの中に含まれているものです。
Movable Typeのディレクトリ→「extlib」ディレクトリ→「Locale」ディレクトリの中に、「Maketext.pm」があるかどうかをご確認ください。
また、あるのであれば、そのファイルをアップロードしなおしてみてください。

なお、当方では、MT3.34+RelatedEntries1.14の組み合わせで動作しています。

No.3 日下部理恵 : (無題)

プラグインの中に、cgi ファイル(MT-Related-Entries.cgi)が入っていたことをすっかり忘れていました。私のサーバーでは、
#!/usr/local/bin/perl -w
としなければなりませんでした。お騒がせしました。

それから、プラグインの問題ではないのですが、関連付けるエントリーを多く、例えば、8つほどの場合、Internal Server Error が出てしまいます。MT-3.33では直っていたものがMT-3.34ではエラーになってしまいます。

確かめる方法は、「エントリー」の画面で、8つほどエントリーにチェックをつけて「再構築」するとエラーになります。私の借りているサーバーだけの現象でしょうか?

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, support@stepserver.jp and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

Apache/1.3.36 Server at fishmountain.accela.jp Port 80

No.4  : (無題)

>日下部理恵さん
こんにちは。

関連付けするエントリーを多くすると、再構築する対象も多くなります。
そのため、サーバーによってはCGIの実行時間制限等にひっかかってしまい、Internel Server Errorになることもあり得ます。

関連付けの情報を保存する時点で自動再構築するだけでなく、後で手動で再構築することを選択できるようにする機能が必要なようです。

No.5 uzuki : (無題)

こんにちは、以前別のプラグインではお世話になりました。
今のサイトをリニューアル予定でその時に、このプラグインを利用させて貰おうと自分のMTで色々見ていて感じた点を。

所属していないブログと関連付ける場合、関連付けるブログを指定が出来るといいな~と思いました。

再構築の関係で、ある程度ブログを分けて運用しようと思っているのですが、現在のプラグインですと、全ブログ・全エントリーが表示されてしまいますので、500件を超えると関連付けが毎回大変そうな気がしてます。
(表示件数を増やせば済む話かも知れませんが…)
もし、今後バージョンアップする機会がありましたらご検討を頂けると幸いです。

No.6 Hoso : (無題)

初めまして。このプラグインを使わせていただき、大変お世話になっています。
いくつか質問、要望をさせていただきたいと思います。お忙しいところ恐れ入りますがよろしくお願いします。
使っているプラグインはver1.14です。

(1)関連付け後の自動再構築について
関連付けを保存したあとに、「関連付けを設定したエントリーと、それに関連するアーカイブ等を再構築しました」と表示されますが、そのエントリーの個別ページを更新して見ても、関連付けが反映していません。
手動でエントリーアーカイブを再構築して初めて反映されます。
これは私だけの特異な症状でしょうか。

また、私の場合インデックスページでも各エントリーのフッターの前に関連付けを表示するようにカスタマイズしているのですが、インデックスページも手動で再構築する必要があります。自動的には再構築されない仕様でしょうか。

(2)関連付け設定のページで、エントリー一覧が複数ページにわたる場合
複数ページにまたがって設定をしたい場合、各ページごとに保存をしないと、最後に開いた一覧ページでの設定しか保存されません。移動する前の一覧ページで行った設定も同時に保存することはできないでしょうか。

(3)設定保存後に戻るページについて
「エントリー編集画面に戻る | メイン・メニューに戻る 」の2つのリンクがありますが、「エントリー一覧」に戻るリンクを作っていただけないでしょうか。
関連付けの作業を次々に行う場合、エントリー一覧に戻るために2クリック必要なのが面倒に感じています。
これは自分で改造することは可能でしょうか?

長くなりましてすみません。

No.7  : (無題)

>Hosoさん
こんにちは。プラグインご利用ありがとうございます。

(1)について
あるエントリーAから他のエントリーBやCに関連付けを設定したときに、エントリーAが再構築されないということでしょうか。
こちらではそのような現象は起こっていません。そちらの環境でプラグインの動作を追ってみないと、原因は分からないです。

また、インデックス・テンプレートは再構築しないようになっています。

(2)について
ご希望のような動作にすることは不可能ではありませんが、手間がかかります。
また、エントリーが多くなるにつれて、動作が重くなるという問題もあります。

(3)について
「tmpl」ディレクトリにある「rel_entries.tmpl」の8行目を、以下のように書き換えれば可能です。

書き換え前:
<a href="<TMPL_VAR NAME=MT_URL>?__mode=view&_type=entry&id=<TMPL_VAR NAME=ENTRY_ID>&blog_id=<TMPL_VAR NAME=BLOG_ID>">エントリー編集画面に戻る</a> | <a href="<TMPL_VAR NAME=MT_URL>">メイン・メニューに戻る</a>

書き換え後:
<a href="<TMPL_VAR NAME=MT_URL>?__mode=view&_type=entry&id=<TMPL_VAR NAME=ENTRY_ID>&blog_id=<TMPL_VAR NAME=BLOG_ID>">エントリー編集画面に戻る</a> | <a href="<TMPL_VAR NAME=MT_URL>?__mode=list_entries&blog_id=<TMPL_VAR NAME=BLOG_ID>">エントリー一覧画面に戻る</a> | <a href="<TMPL_VAR NAME=MT_URL>">メイン・メニューに戻る</a>

No.8 Hoso : (無題)

早速ご丁寧なお返事を下さり、ありがとうございます。
(1)についてですが、
そういう現象です。
例えばエントリーAから、BやCと両方向に関連付けをして保存した場合、保存後に「再構築しました」とのメッセージは出るのですが、Aのエントリーアーカイブページを更新して表示しても、関連付けは反映していません。B、Cも同じです。
エントリーアーカイブの再構築を行って初めて反映されます。
なお、同様のことがカテゴリー・アーカイブついても起きています。

気になるのは、cronジョブとの関係です。
指定日投稿のためにcronジョブを設定しているのですが、echoでジョブの結果を通知するようにしてみますと、関連付けの作業を行ったあとに限っていつもと異なるメールが来ます。
そこには、
No handler exists for tag PingedEntryLink at lib/MT/Builder.pm line 184.
とか、
Use of uninitialized value in string ne at
****(私のブログを置いているサーバのパス)/mt/plugins/RelatedEntries/RelatedEntries.pl line 90.
といった内容がずらずらと何十行にもわたって書かれています。

もし何か思い当たることがございましたら教えていただけるとありがたいですが、おそらく、これだけで原因を突き止めるは難しいですよね。
無理であれば手動で再構築していくしかないと考えています…。

一度、試みにcronジョブを解除して関連付け作業をやってみる必要があるでしょうか…。

No.9  : (無題)

>Hosoさん
こんにちは。

お書きになっていることからすると、エントリーAからエントリーBやCに関連付けを設定した後で、エントリーAを指定日投稿で公開するような使い方をされているということでしょうか。
その方法だと、エントリーAを公開した後にエントリーBやCを再構築しないと、エントリーBやCにエントリーAの情報が表示されないという動作になります。

エントリーAからBやCに双方向または逆方向のリンクを設定した場合、BやCの関連するエントリーの部分にAの情報を表示する必要が出ますので、関連付けの設定を保存した時点でエントリーBやCを再構築します。
しかし、未公開のエントリーの情報が表示されるとまずいので、そのような情報は表示しないようにしています。
そのため、エントリーAを指定日投稿で公開するようにした場合、エントリーBやCが再構築された時点ではまだエントリーAは公開されていないので、BやCのページにはAの情報は表示されないことになります。

その後、エントリーAが指定日投稿で公開されるときには、その際構築の処理はMTが行います。
MTはエントリーAは再構築しますが、MTの再構築処理は関連付けの情報には関知しないので、BやCは再構築されません。
そのため、その時点でもBやCのページにはAの情報は表示されません。

ただ、そちらではエントリーAにBやCの情報が表示されていないということですので、上記の話とはまた別の現象が起こっていることになります。
cronで処理したときにエラーメッセージが出ていることからすると、エラーによって再構築がうまくいっていないのではないかと思われます。

No.10 kojidoi : (無題)

藤本壱さま、はじめまして。kojidoiと申します。
いつもRelatedEntriesを便利に使わせていただいております。ブログ内の検索性を大いに高めてくれ非常に有用だと感じています。

そこで私としては、自ブログ内にもっと縦横無尽に関連付けを張りまくりたいと思うのですが、現状ではエントリー数が多くなると目当てのエントリーを選び出すのがなかなか大変な作業になってしまいます。

そこで思ったのですが、エントリー一覧を表示する際にキーワードでフィルタを掛けるようにはできないでしょうか? たとえば統一地方選に関するブログを書いたとしますと、関連付けの候補には本文に「自民党」を含むエントリーだけを表示しておいて欲しいのです。そこから選挙と関係なさそうなエントリーを目視で外すという流れにできれば非常に効率的になります。こういうことは実現できないでしょうか?

No.11  : (無題)

>kojidoiさん
こんにちは。プラグインご利用ありがとうございます。

ご希望のようなことは、作ろうと思えば作ることができますが、それなりに手間がかかります。

代わりといっては何ですが、Movable Typeのタグの機能を使ってエントリーにタグをつけ、同じタグがついているエントリーを一覧表示するようにすれば、似たようなことを実現することができます。

No.12 kawasaki : (無題)

藤本壱さま、はじめまして。
kawasakiと申します。
RelatedEntriesを利用しております。
ひとつ質問があります。

こちらのエントリーをlastn指定をする事はできませんでしょうか?
RelatedEntriesでlasth指定が出来ると、いろいろ出来る事に幅が出てくるのですが・・・。
よろしくお願いします。

No.13  : (無題)

>kawasakiさん
こんにちは。プラグインご利用ありがとうございます。

ご質問の件ですが、ReleatedEntries.plの110行目付近に、以下の赤色の行を追加すれば、MTEntriesRelatedEntriesタグでlastn="○"を使えるようになります。

    @related_entries = sort { $b->$sort_by() cmp $a->$sort_by() } @related_entries;
}

# lastn
if ($args->{lastn} && $args->{lastn} < scalar(@related_entries)) {
    @related_entries = @related_entries[0..$args->{lastn} - 1];
}

# backup stash('entry')
my $entrybackup = $ctx->stash('entry');

No.14 kawasaki : (無題)

藤本壱さま、ご返答ありがとうございます。
頂いた情報を元に設定しました所、無事lastn指定が適用されました。

ありがとうございます。
今後とも、よろしくお願い致します。

No.15 kawasaki : (無題)

藤本壱さま、こんにちは。


RelatedEntriesプラグインなのですが、プラグイン上からエントリーを検索出来る様にする事は難しいでしょうか?
MTを知ってる私からすればいくらでもやり様があるのですが、MTを知らない人が編集を行う事になった関係で今の状況ですと、時間がかかるので対応出来ないと言う話がありまして…。

現在、5ブログ/600位のエントリーを入れてて、かつ一部エントリーはブログ間関連付けを行っている状況がら、有る程度出てくる情報を絞る必要が出ています。

そこで、検索と考えたのですが…
もしくは、プルダウンスイッチで、単一ブログ/ブログ全体のエントリーを表示できる様に出来るだけでも大分変るかな?と思ったのですが、如何でしょうか?

ご検討、よろしくお願いします。

No.16  : (無題)

>kawasakiさん
こんにちは。プラグインご利用ありがとうございます。

ご質問の件ですが、11番のコメントにも書いたように、検索機能は簡単には付けられません。

No.17 kawasaki : (無題)

藤本壱さま、こんにちは。

検索の件、了解しました。
ちなみに、2点目の「リスト表示におけるブログ対象の設定をその場で行う」は難しいでしょうか?
こちらは、MtEntryのDBを見る上でのキー設定をブログIDベースに行う事で出来ると思ったので、検索程対応が大変ではないかな?と思いましたが…。

ご健闘をよろしくお願いします。

No.18 kawasaki : (無題)

藤本壱さま、こんにちは。

すみません、新規で1点ありました…。
・offset値の設定を行える様にする事は難しいでしょうか?
→こちらは、lastn指定と共に感じた事でした。

また、7/4に発売された藤本さまの本、購入していたのですが本日届きました。
PHP+Ajaxは私自身が触ってるプログラムなので、いろいろ勉強して参ります。
ご検討、よろしくお願い致します。

No.19  : (無題)

>kawasakiさん
こんにちは。

offsetおよびブログでエントリーを絞り込む件は、現在作成中のMT4対応版に組み込むことにします。
なお、MT3.3とMT4ではプラグインの作成方法に違う点があり、両対応にするのは大変ですので、今後はMT3.3用のプラグインはバージョンアップしない予定です。

コメントする