≪HOME(21世紀のアフィリエイト通販生活)
各ニュースサイトなどで提供されているRSSフィードを使って、サイドメニューにニュースの最新記事を表示してみました。参考にしたのはこちら、
├ mt-rssfeedでニュース表示
└ mt-rssfeed.pl & mt-list.pl
What's RSS
RSSとは簡単に言うと、他サイトの更新記事を自分のサイトに取り込んで表示させる機能の事です。基本的に更新記事タイトルだけを公開しておいて、それを取り込んだサイトには更新記事タイトルのみを表示させます。実際の記事内容は本サイトへ飛んでもらって読む仕組みです。
RSSは、XMLという相互にデータを受け渡すのに便利なフォーマットで提供されていて、MovableTypeでも標準でRSSを書き出すテンプレートが用意されています。これを使えば自分のブログの更新記事をRSSとして提供することができます。さらにプラグインを使えば自サイトに他のブログの更新記事を表示させるのも簡単です。
今回はニュースサイトの更新記事を表示させてみました。利用したのはこちらのプラグインです。
├ mt-rssfeed
└ mt-list
RSSフィードはUTF8で提供されるのが殆どなので、ブログがEUC環境だと文字化けします。
設置手順
まずはプラグインを使って取得する事になるRSSのキャッシュファイルの書き込み先となるフォルダを指定します。mt-rssfeed.plから15行目、
# my $RSSFEED_DATA_DIR = "./db/";
を編集します。基本的にどこでも良いようですが、私の場合はこんな感じです。コメント記号#を外すのを忘れずに。
my $RSSFEED_DATA_DIR = "/home/ユーザー名/public_html/cgis/mt/rssfeed/";
これが終わればmt-rssfeed.pl、mt-list.plをpluginsフォルダにアップします。さらにmt-rssfeed.tar.gzを解凍して得られるLP.pmを以下のフォルダにアップします。RSSフォルダは多分ないので作ります。フォルダには書込み権限を付与。
/MT/extlib/XML/RSS/
次にMovableTypeのテンプレートに以下のコードを追加します。<MTList name="feeds">には実際に利用するRSSフィードのURLをコピペします。このあたりて取得できます。
├ rss-jp.net
└ Bulknews
<MTList name="feeds">
http://bulknews.net/rss/rdf.cgi?ITmedia
http://japan.cnet.com/rss/index.rdf
http://pcweb.mycom.co.jp/haishin/rss/index.rdf
</MTList>
<MTListLoop name="feeds">
<MTRSSFeed>
<h3>
<a href="<$MTRSSFeedLink$>" target="_blank"><$MTRSSFeedTitle $></a>
</h3>
<ul>
<MTRSSFeedItems lastn="6">
<li><a href="<$MTRSSFeedItemLink>" target="_blank"><$MTRSSFeedItemTitle></a></li>
</MTRSSFeedItems>
</ul>
</MTRSSFeed>
</MTListLoop>
恐らくニュース記事以外の部分が文字化けする筈なので、新たにPHPモジュールを作ってincludeさせます。よく分からない方はこちら、よく使う部分をモジュール化
表示させるだけならこれで完了です。しかしモジュールを更新しない限りニュース記事も更新されません。なので自動更新用の設定を施します。詳しくはこちらから、mt-rebuildを使ってcron jobを実行
※こちらで解説したものはUTF8用の手順です。EUCの場合は他のサイトを参考にして下さい。
これで簡単に自分のブログに新たなコンテンツを加える事が出来ました。自分のお気に入りのニュースサイトやブログがRSSを提供していたら、その更新状況をいちいち閲覧しに行かなくても済みます。インデックス・テンプレートを使って注目ブログやニュースサイトの更新情報を一覧できるページを作ってみるのも面白いかもしれません。
なにかアフィリエイトとは全く関係ない事をやってるような。まぁひまつぶしに付けただけなので、近い将来おそらく外しているでしょう。
≪ 続きを隠す
投稿者 Locutus : 2005年01月07日 00:07
| コメント (0)
| トラックバック (0)
ひと通りPHP化を終えた所で将来的な事を考えてみました。記事の数が増えれば増えるほどアーカイブの数は増えるわけで、今は良くてもこの先困らない為にはどうするべきか、と考えているとこんな記事を発見。
MTがサーバーにかける負荷を減らす方法
▽Berkeley DBではなくMySQLを使う。
▽“Rebuild this template automatically…” にチェックを入れるテンプレートの数を減らす。
▽MTIncludeの代わりにPHPのIncludeを使う。
▽MTCalendarやMTArchiveListのような負荷のかかるタグを使わない。
▽Archive-Related Templatesの種類を減らす。
PHPIncludeの「自動的に再構築オフ」は当然として、やはりというか当然というかアーカイブの扱いが肝らしいです。エントリーが貯まれば貯まるほどArchiveListで呼び出される内容は増えますからこればっかりは致し方がないのかも。
ただこのサイトはアフィリエイト・サイトでもあるので、古いエントリーをいつまでも放ったらかしにするというのは考え辛いです。将来的にはエントリーに入る日付も外す予定なので、やたらと新エントリーが増えていく事もないでしょう。
また月別アーカイブの有無についても一考の価値あり。アフィリエイト・サイトである以上は、個別記事と各カテゴリへ案内できれば済む話で、膨大な量の月別アーカイブは殆ど意味を成しません。
それからカレンダーですが、うちのサイトでは要らないような気がします。他のブログサイト見に行ってもあれ使う事って殆どないんですよね。思い切って外すのも負荷対策として有効かもしれません。だいたいカレンダーがあるとブログっていうのが丸わかりでアフィリエイトには逆効果もいいとこです。
まぁとにかく試行錯誤しながらも続けていければと思います。
≪ 続きを隠す
投稿者 Locutus : 2005年01月02日 19:09
| コメント (0)
| トラックバック (0)
うちのブログ(MovableType)は各テンプレートを外部ファイルで同期させて、Dreamweaverからテンプレ編集できるようにしています。しかし編集したテンプレートをDreamweaverからアップすると、どういう訳か本文下のコメントやらトラックバックのリンクがエラーになってしまいます。
何でっ!Why not!
意味が分からず元のテンプレートと比較してみました。
が、分からない(>.<)
しかし絶対にどこか違う筈、でなければエラーになる訳ないっ!
激しく見比べる事10分余。ありましたっ!
<a href="<$MTEntryPermalink archive_type="Individual"$>#comments">コメント (<$MTEntryCommentCount$>)</a>
これがこんな風にDreamweaverによって書き換えられていました。
<a href="<$MTEntryPermalink archive_type="individual"$>#comments">コメント (<$MTEntryCommentCount$>)</a>
よりによって属性値が小文字にっ!これではエラーになること必至です。Dreamweaverは便利この上ないツールですが、時にこういうポカやります。ってちゃんと設定しておかなかった自分が悪いんですけども。
早速、環境設定 - コードフォーマットで問題解決。
「常に無視する」を両方ともオフに。これで既存ファイルを開いても大文字、小文字を書き換えません。
↓こんな便利なテキストエディターありました。
「NoEditor」
テキスト比較やGREP検索・置換機能を搭載しています。窓の杜で賞も取ってる有名ソフトらしいです。
≪ 続きを隠す
投稿者 Locutus : 2005年01月02日 14:10
| コメント (2)
| トラックバック (1)
MovableTypeの出力ファイルをPHPしたのはつい昨日の事ですが、参考にさせて頂いたサイトさんの多くで必ず話題にされてるのが、本文(MTEntryBody)部分のモジュール化です。
確かにエントリー部分はメインページもアーカイブも同じものを利用しています。各ページで共通した部分は外部ファイルとしてモジュール化する事で、ファイルサイズも小さくなるし、再構築時間も短縮できる筈です。今はまだMovableTypeを始めたばかりなので気にする程ではありませんが、最初にちゃんとしとかないと後から困ってしまうのが世の常、さっそく取り掛かることに。
ちなみに今回参考にしたのはこちらです。
└ リビルドなんて怖くない
└ あなたのmovabletype、重たくないですか?
新しいアーカイブ・テンプレートを作る
「新しいアーカイブ・テンプレートを作る」から、エントリー本文用のテンプレートを作成します。名前は適当に(うちはEntryBody)つけます。テンプレートの中身には、
<$MTEntryBody$>
とだけ記述します。
※「追記」を多用する人はMTEntryMore用のテンプレートも用意します。追記用の説明はこれ以降省きます。
個別アーカイブに追加
新たに作ったアーカイブテンプレート(EntryBody)を個別アーカイブに追加します。アーカイブの設定 - 「新しく、テンプレートとアーカイブを関連付ける」から以下の設定で追加!
アーカイブの種類 : 個別
テンプレート : EntryBody
出力ファイル名を設定
EntryBodyが個別アーカイブとして書き出すファイル名を指定します。
私の場合はこんな感じです。
<$MTArchiveDate format="%Y/body/%m%d-%H%M_body"$>.php
ここで設定するEntryBodyは何をするかと言いますと、メインページや各アーカイブページが共通で読みに行くファイルを作成する事になります。
読込み文を入れる!
メイン、アーカイブの各ファイルに読み込みコードを挿入します。うちのサーバーでは以下のように設定しました。
メイン
<?php include("archives/<$MTArchiveDate format="%Y/body/%m%d-%H%M_body"$>.php"); ?>
個別
<?php include("../../../archives/<$MTArchiveDate format="%Y/body/%m%d-%H%M_body"$>.php"); ?>
日付け
<?php include("../../../archives/<$MTArchiveDate format="%Y/body/%m%d-%H%M_body"$>.php"); ?>
カテゴリ
<?php include("../../archives/<$MTArchiveDate format="%Y/body/%m%d-%H%M_body"$>.php"); ?>
再構築すれば完了です。
どうなんでしょ?
これで全ページで同じ<$MTEntryBody$>を読み込んで共通利用する事になりました。しかしだからどうした的な感じがします。たしかにファイルサイズは少し小さくなった気がしますが、うちみたいにサーバー容量が1G以上もあると、メリットは感じません。それでもリビルド時間が短縮できるなら意味があるんですが、今の所は特に変わらず。将来的に劇的な変化があるんでしょうか?
それより新たに個別アーカイブ(EntryBody)を追加した事により、出力ファイル数がエントリー分だけ増えてしまうのはどうなんでしょ。暫く使ってみてメリットがなければ元に戻す事にします。
≪ 続きを隠す
投稿者 Locutus : 2005年01月01日 22:19
| コメント (0)
| トラックバック (3)
MovableTypeの出力ファイルをPHPにした(MovableTypeのPermalinkでのURL変更)のを契機に、各ページで共通利用できる部分をモジュール化する事に。
参考にしたのはCROSSBREEDさんのMTのPHP化とページ分割 です。
まず各インデックス、アーカイブ共に使い回せそうな部分はどこかと考えると、バナー、サイドメニュー、フッターです。これらをそれぞれモジュール化!と言ってもテンプレート・モジュール(MTInclude)を使うのではなく、インデックス・テンプレートで新たに出力ファイルを作成し、各ページで読み込ませます(PHPInclude)。こうする事で全体のファイルサイズを相当軽量化できます。
PHPモジュールを作る!
早速バナー部分をまるごと新たに作ったインデックス・テンプレートにカット&ペースト。ファイル名は適当で良いのですが、この時、"自動で再構築する"を切っておくのがポイント。モジュール単独でリビルドかけられる様になるので、記事を投稿する時の時間を短縮できます。これが一番のPHPメリットでしょうか。またモジュールファイルは一括りに同じフォルダに入れたいので、出力ファイル名はmodule/banner.phpとします。
読込み文を入れる!
メインページの該当箇所に以下のコードを挿入。
<? include("module/banner.php"); ?>
メイン以外にもアーカイブページに挿入する場合はパス名を調節します。こんな感じ、(あくまでうちの場合)
↓カテゴリページ
<? include("../../module/banner.php"); ?>
↓個別&月別ページ
<? include("../../../module/banner.php"); ?>
以上の作業で、PHPモジュールファイルだけを編集&再構築する事が可能で、尚かつ編集結果が全ファイルに反映されます。後のファイルは再構築不要です。
外部ファイルをhtml にした場合は以下のコードを挿入します。
<$MTInclude file="module/banner.html"$>
似たような機能にテンプレート・モジュール(MTInclude module)がありますが、こちらは利便性はあってもファイル軽量化には殆ど役に立ちません。あくまでテンプレートタグの関係でPHPモジュールで対応できない場合のもしも用です。
↓追記)
実際にモジュール化してみて気付いたのですが、"自動で再構築する"を切っておくと確かに再構築時間は短縮できます。がしかし今度は最近の記事やカレンダー、最近のトラックバックなどが入っているサイドメニューなどをモジュール個別にリビルドしないといけません。そうしないと例えば新しい記事を書いてもサイドメニューに新記事がリストアップされません(悲)。要は更新させたい部分はチェックしときなさい、という事です。
≪ 続きを隠す
投稿者 Locutus : 2005年01月01日 11:34
| コメント (0)
| トラックバック (2)
MovableTypeデフォルトの設定ではMTEntryPermalinkで個別アーカイブへと飛ぶようになっています。しかしPermalink(永久的なリンク)とは名ばかりで、デフォルト設定での出力ファイル名は、
http://www.55link.com/archives/2005/1/post_1.html
などの記事番号によるファイル名になります。
先達のMovableTypeサイトさんによると、どうやらこれではまずいらしい。
デフォルトの記事番号によるPermalinkは、サーバーの引っ越しなどで、exportしてimportすると、記事番号がずれることがあるため、自分でPermalinkの名前をつけられるようにしたほうがいいのです。
ARTIFACT ―人工事実― - MovableTypeのページ分割-Permalinkの変更
サーバーの引っ越し、これは大きな問題です。
実際に最近エックスサーバー(Xserver)にサーバー移転した私にとっては人ごとではありません。サーバー移転の際にファイル名が変わってしまわないように手直しする事に。
拡張子をPHPに変更!
その際に、どうやら出力拡張子をPHPに変更した方が宜しいとの事。PHPの方がサーバーにかかる負荷は軽くなるようです。またPHPにする事で各アーカイブで共通利用できる部分をモジュール(外部ファイル)化できるとの事で、こちらもサーバー負荷の軽減、再構築時間の短縮、さらにファイルサイズの節約が期待できます。この手の事はサイトの作り始めにちゃんとやっとくのが肝腎です。
善は急げ!さっそくブログの設定からアーカイブファイルの拡張子をphpに変更。またテンプレートの編集画面でインデックス・テンプレートから、使っているインデックスページに対しても出力ファイルをphpに変更します。
再構築後FTPでローカルサイトパスに接続、index.phpが生成されているのを確認します。この時、元のindex.htmlは削除しておきます。残しておくとスラッシュエンドのURLでindex.htmlを先読みしてしまい、index.phpにアクセスしません。またアーカイブ・ディレクトリの中にあるhtmlファイルも削除しておきます。
個別アーカイブのファイル名を変更!
最終段階です。個別アーカイブのファイル名を変更します。アーカイブの出力フォーマット設定から個別エントリーアーカイブを以下のように変更。
<$MTArchiveDate format="%Y/%m/%d-%H%M"$><$MTEntryKeywords dirify="1"$>.php
これは一体なにかと言いますと、個別アーカイブとして出力されるファイル名をここで指定している訳です。
これで出力される個別ファイル名は、
http://www.55link.com/archives/年/月/日-時分.php
となります。ファイル名の設定では途中にスラッシュを入れると自動的にフォルダを生成してくれます。しかしアーカイブに余分なフォルダは作りたくありません。上のように記述すると、元々存在する月別アーカイブ用のフォルダに個別記事を入れてくれます。まぁ標準の設定でもそうなってるんですがね。
最後に付いてるMTEntryKeywordsは、エントリー投稿時にキーワードを設定する事により個別ファイル名に付け足して生成してくれます。SEOやアーカイブファイルの管理に役立つかもしれません。
キーワードを設定しなければキーワードなしで表示されるだけです。キーワード投稿欄は、エントリー投稿画面の下に方にある「この画面の表示をカスタマイズする」で出せます。
取り敢えずこれで、サーバー引っ越しやMovableType再インストなどのアクシデントがあっても、記事名が変わらないのでリンク切れを防げます。MovableTypeではリンク切れが一番困りますよね。
参考にさせて頂いたのはこちらです。
└MovableTypeのページ分割/Permalinkの変更
└MTのPHP化とページ分割
└Permalinkを変更
追記↓
個別アーカイブの拡張子をphp から html へと変更しました。どうもSEO的には、html の方が宜しいようなので。
≪ 続きを隠す
投稿者 Locutus : 2004年12月31日 18:58
| コメント (0)
| トラックバック (1)
エントリー投稿時に<textarea>~</textarea>を使うと出力ページで<br>、<p>タグが挿入されてしまいます。こういう時の為にテキストフォーマット「なし」が用意されてる訳ですが、これが面倒くさいという方は多いようですね。この辺が参考になりそうです。
小粋空間~エントリーにpタグとbrタグが入る仕組み
投稿者 Locutus : 2004年12月31日 17:19
| コメント (0)
| トラックバック (0)
このページの手順よりスマートなリンク挿入が可能です。
└ リンク挿入をよりスマートにカスタマイズ!~ MovableType
MovableType Ver3.20以降用です。
エントリー投稿画面のリンクボタンを利用した時に「target="_blank"」を自動的に入れるように改造しました。
参考にしたのはこちら、
└ (MT3.2)リンクを別ウィンドウで開く設定 <target="_blank">
└ URLボタンの手直し
mt-static/mt_ja.jsを開き、function insertLink の中の、setSelectionの行を探します。
setSelection(e, '<a href="' + my_link + '">' + str + '</a>');
これに差し替え!
setSelection(e, '<a href="' + my_link + '" target="_blank">' + str + '</a>');
これでエントリー投稿画面からのリンクは全てtarget="_blank"がつきます。
投稿者 Locutus : 2004年12月31日 16:43
| コメント (0)
| トラックバック (10)
タグやコードを紹介する時の< >を変換してくれるDecodeボタンを投稿画面に付けてみました。MovableType 3.2以降用です。
参考にしたのはこちらです。
└ 3.17でのDecodeボタン
└ Decodeボタンをつける
MovableTypeをインストしたフォルダにあるtmpl/cms/edit_entry.tmpl、bm_entry.tmplを開いて、次の箇所を探します。
write('<a title="<MT_TRANS phrase="Bold">"
edit_entry.tmpl でふたつ、bm_entry.tmpl でひとつ見つかる筈です。
これの上に以下の行を挿入します。
write('<a title="<MT_TRANS phrase="Decode">" href="#" onclick="return Decode(document.entry_form.text)"><img src="<TMPL_VAR NAME=STATIC_URI>images/html-decode.gif" alt="<MT_TRANS phrase="Decode">" width="22" height="16" border="0" /></a>');
edit_entry.tmplの二つ目だけは青字部分を、document.entry_form.text_more に変更します。
因みにedit_entry.tmpl は通常のエントリー投稿画面で使うもので、二つあるのは一つめが通常投稿する部分で(body)、二つ目は追記(more)に使われるものです。bm_entry.tmpl の方はクイック投稿(クイックポスト、QuickPost)の投稿ウィンドゥで使います。
次にmtフォルダのmt-static/mt_ja.jsを開き、
function formatStr (e, v)
がある辺りに次の関数をペースト!
function Decode(e) {
if (!canFormat) return;
var str = getSelected(e);
if (!str) return;
str = str.replace(new RegExp("&","g"), "&");
str = str.replace(new RegExp("<","g"), "<");
str = str.replace(new RegExp(">","g"), ">");
str = str.replace(new RegExp('"',"g"), """);
str = str.replace(new RegExp(' ',"g"), " ");
str = str.replace(new RegExp(' ',"g"), " ");
setSelection(e, str);
return false;
}
最後にDecodeボタン画像をインストフォルダのmt-static/imagesにアップして完了です。自分で画像作る場合は、アップする時に画像の名前間違えないようにね!
これでエントリー編集画面にデコードボタンが追加されます。
デフォルトのボタンが気に入らないのでアップとリンク、blockquoteボタンも変更してみました。こんなのです。
≪ 続きを隠す
投稿者 Locutus : 2004年12月31日 16:20
| コメント (0)
| トラックバック (3)
この手順よりもっとスマートな方法に変更しました。
└ BetterFileUploaderプラグインで画像アップロードの手間を省く!
「ファイルをアップロード」ボタンを押した時に出る別ウィンドゥを以下のように変更しました。
archivesディレクトリの中に画像をアップしている人にとっては、デフォルトのままで問題ありませんが、そうでない人にとっては変更しておく事をお薦めします!
また、アップロード先を自分が普段アップするディレクトリに変更しておくと分かりやすいかもしれません。ただこちらはオートコレクトが働くので、実用上必須という訳でもありませんが。
参考にしたのは、
└ ごみのやま Upload先を指定です。
mt/tmpl/cms の中にあるupload.tmplの20行目あたりを以下のように変更すればOKです。value="~"の中は自分の利用しているディレクトリ名に変えて下さい。
<input type="radio" name="site_path" value="0" />
<<MT_TRANS phrase="Local Archive Path">>/
<input name="extra_path_archive" /><br />
<input type="radio" name="site_path" value="1" checked="checked" />
<<MT_TRANS phrase="Local Site Path">>/
<input name="extra_path_site" value="images" />
≪ 続きを隠す
投稿者 Locutus : 2004年12月31日 12:00
| コメント (0)
| トラックバック (1)
≪HOME(21世紀のアフィリエイト通販生活)