2006年5月25日

mt-xsearch.cgi導入時に「Got an error: Can't call method "build" without a package or object reference at mt-xsearch.cgi line 42.」が出る場合

MT-XSearch.cgi に対して .htaccessでリダイレクトして

https://yu-hi.sakura.ne.jp/hinabita/tag/hoi2

のようにアドレスをダイレクトに開けるようにする方法が
http://as-is.net/blog/archives/001020.html

などに載っているのですが

Got an error: Can't call method "build" without a package or object reference at mt-xsearch.cgi line 42.

のエラーが出て詰まってる人を見かけます

RewriteEngine on
RewriteRule ^tag/(.*)$ /mt/mt-xsearch.cgi?blog_id=1&search_key=Tagwire&search=$1 [QSA,L]

で、これの一因で、たとえばこのブログは実験用のテンプレートを残して
追加で作成したために上の設置例「blog_id=1」では駄目で
id=2にしなくてはなりません

これはMovableTypeのmt.cgiから設置したいblogを選んだ時に出る
mt.cgi?__mode=menu&blog_id=2 のid部分を使えば解決します

2006年5月21日

細かいリンクタグ修正

いい加減何とかしてほしいが

ヘッダ部分の先頭に

   <link rel="alternate" type="application/rss+xml" title="RSS 2.0" href="<$MTBlogURL$>index.xml" />
   <link rel="alternate" type="application/rss+xml" title="RSS" href="<$MTBlogURL$>index.rdf" />

バナー部分にトップページへ

<div id="banner">
<h1><a href="<$MTBlogURL$>" accesskey="1"><$MTBlogName encode_html="1"$></a></h1><br />
<h2><$MTBlogDescription$></h2>
</div>

タイトル部分に個別リンク行き?

<h3 id="a<$MTEntryID pad="1"$>"><a href="<$MTEntryPermalink valid_html="1"$>">?</a><$MTEntryTitle$></h3>

文末カテゴリ&タグ表示部分を

| <MTEntryCategories glue=", ">
<a href="<$MTCategoryArchiveLink$>"><$MTCategoryLabel$></a>
</MTEntryCategories>

| <small><small>tag: <MTEntryTags glue=", ">
<a href="<$MTCGIPath$>mt-xsearch.cgi?blog_id=<$MTBlogID$>&search_key=Tagwire&search=<$MTTag encode_url="1"$>"><$MTTag$></a>
</MTEntryTags></small></small>

この辺で統一した

2006年5月21日

tagsをつけてみたんだけど…

これの有効利用ってどうなんでしょうか?
カテゴリと違って気ままにキーワードを足していけるのが強みですが
反面管理が難しいような

http://www.koikikukan.com/archives/2005/08/30-125555.php

カテゴリツリーを使わずにタグを使ってる感じですね…

2006年5月21日

RSS News Ticker Tape (Konfabulator Yahoo! Widgets 3.1) でサムネイルがでるニュースがあったので

Widgetの紹介はまた次回に回すとして…

navy000689

すごい気になって延々とMovableTypeのRSS(index.xml index.rdf atom.rdf)の
テンプレートとにらめっこしてしまった、その途中でいくつか情報がわかった

古いMovableTypeから上書き上書きでアップグレードしていると
一部テンプレートが古いままになって最新の機能が使えない

atom index.xml rdf は複数あってもあまり意味が無い
その上古いディフォルトメインページテンプレートではrss1準拠へのリンクだったりする

概要<description>でXMLタグ(CDATA[ ])を使う設定にしないと上手くいかない

index.xmlにて

<?xml version="1.0" encoding="<$MTPublishCharset$>"?>
<rss version="2.0">
   <channel>
      <title><$MTBlogName remove_html="1" encode_xml="1"$></title>
      <link><$MTBlogURL$></link>
      <description><$MTBlogDescription remove_html="1" encode_xml="1"$></description>
      <language><$MTBlogLanguage ietf="1"$></language>
      <copyright>Copyright <$MTDate format="%Y"$></copyright>
      <lastBuildDate><MTEntries lastn="1"><$MTEntryDate format_name="rfc822"$></MTEntries></lastBuildDate>
      <generator>http://www.sixapart.com/movabletype/?v=<$MTVersion$></generator>
      <docs>http://blogs.law.harvard.edu/tech/rss</docs>
     <MTEntries lastn="15">
      <item>
         <title><$MTEntryTitle remove_html="0" encode_xml="1"$></title>
         <description><$MTEntryExcerpt encode_xml="1"$></description>
         <link><$MTEntryPermalink encode_xml="1"$></link>
         <guid><$MTEntryPermalink encode_xml="1"$></guid>
         <category><$MTEntryCategory remove_html="1" encode_xml="1"$></category>
         <pubDate><$MTEntryDate format_name="rfc822"$></pubDate>
      </item>
      </MTEntries>
   </channel>
</rss>

index.rdfにて

<?xml version="1.0" encoding="<$MTPublishCharset$>"?>
<rdf:RDF

xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:admin="http://webns.net/mvcb/"
xmlns:cc="http://web.resource.org/cc/"
xmlns="http://purl.org/rss/1.0/">

<channel rdf:about="<$MTBlogURL$>">
<title><$MTBlogName encode_xml="1"$></title>
<link><$MTBlogURL$></link>
<description><$MTBlogDescription encode_xml="1"$></description>
<dc:language><$MTDefaultLanguage$></dc:language>
<dc:creator></dc:creator>
<dc:date><MTEntries lastn="1"><$MTEntryDate format="%Y-%m-%dT%H:%M:%S" language="en"$><$MTBlogTimezone$></MTEntries></dc:date>
<admin:generatorAgent rdf:resource="http://www.movabletype.org/?v=<$MTVersion$>" />
<MTBlogIfCCLicense>
<cc:license rdf:resource="<$MTBlogCCLicenseURL$>" />
</MTBlogIfCCLicense>

<items>
<rdf:Seq><MTEntries lastn="15">
<rdf:li rdf:resource="<$MTEntryPermalink encode_xml="1"$>" />
</MTEntries></rdf:Seq>
</items>

</channel>

<MTEntries lastn="15">
<item rdf:about="<$MTEntryPermalink encode_xml="1"$>">
<title><$MTEntryTitle encode_xml="1"$></title>
<link><$MTEntryPermalink encode_xml="1"$></link>
<description><$MTEntryExcerpt encode_xml="1"$></description>
<dc:subject><$MTEntryCategory encode_xml="1"$></dc:subject>
<dc:creator><$MTEntryAuthor encode_xml="1"$></dc:creator>
<dc:date><$MTEntryDate format="%Y-%m-%dT%H:%M:%S" language="en"$><$MTBlogTimezone$></dc:date>
</item>
</MTEntries>

</rdf:RDF>

これで概要にHTMLタグが使えるようになる、元々なってるものらしいが
アップグレードで来てると微妙におかしい場合があるみたいです

あとRSS整形サービスに
http://www.feedburner.jp/fb/a/home

こういうのがあってRSSフィードを単体でも見られるように加工してくれる

http://feeds.feedburner.jp/hinabita

どのrssタイプでも判断して整形しなおすので1でも2でも良いらしい
…むしろこのページをダイレクトに読んだ方がここより軽い?

2006年5月12日

Movable Typeでトップページをphp 化した状態で lastModified を得る

んあ、最後に詰まった

indexlastmodified.shtml
などの適当な名前でshtmlファイルを制作、中身を適当に

<html>
<title>index lastModified</title>
<STYLE TYPE="text/css">
<!--
body{
 margin:   0px;
}
-->
</STYLE>
<body>
lastModified :
<!--#config timefmt="%m/%d/%Y %H:%M:%S"-->
<!--#flastmod file="cgi-bin/mt/db-sqlite/dbfile"-->
</body>
</html>

赤部分MovableTypeのデータベースのファイルパスを書いておく
sqlite化して無い場合は…どこか再構築のたびに書き換わるファイルを探す

で、メインページテンプレートのlastModifiedを差し込みたい部分に

<iframe name="lastmodified" src="https://yu-hi.sakura.ne.jp/indexmodified.shtml" width="320" height="48" scrolling="NO" frameborder="0" marginwidth="0" marginheight="0"></iframe>

と書いておく、これでOK.、色とかフォントとかスタイルとかは自分で調整して!

2006年5月12日

個別アーカイブに日別アーカイブへのリンク 日別アーカイブに月別アーカイブへのリンクを付ける

んあー
パーマリンクを開いた際に出口が分からんので作った!

「環境設定>テンプレート>アーカイブ>個別エントリーアーカイブ」の中の
<div class="content">の後ろ、 <h3><$MTEntryTitle$></h3>の前
日付タイトルタグ<h2></h2>の間の部分を

<h2><$MTEntryDate format="%x"$>
<small><small>
<a href="<MTBlogURL>archives/<MTArchiveDate format="%Y/%m/%d/">">
<MTArchiveDate format="%d">日
</a></small></small>

</h2>

に変更、これでパーマリンクから日別アーカイブへ上がれる、同様に
「環境設定>テンプレート>アーカイブ>日別アーカイブ」の中の
<MTDateHeader>タグ内の<h2></.h2>を

<MTDateHeader>
<h2><$MTEntryDate format="%x"$>
<small><small>
<a href="<MTBlogURL>archives/<MTArchiveDate format="%Y/%m/">">
<MTArchiveDate format="%m">月
</a></small></small>
</h2>
</MTDateHeader>

メインインデックス&カテゴリ別は前述のページめくりphpを利用する
これで最小限だけphp化した、以上でMovableType3.2-jaに

個別エントリーアーカイブにその日の日別カテゴリへのリンク
日別アーカイブに前後日めくりリンク+月別カテゴリへのリンク
月別アーカイブに前後月めくりリンク、カレンダに前後月めくりリンク
(+実は当月カテゴリジャンプ付き、フォントタグ弄っているので公開はしませんが)
カテゴリアーカイブ・メインインデックスが多すぎた際にページ分割

が追加されます
あと他に前に足したエントリーの属するカテゴリへのリンク
https://yu-hi.sakura.ne.jp/hinabita/archives/2004/11/post_5.html
を入って欲しいテンプレートに差し込んで保存

ん~~~~~~MT3.2を素から入れたらこの辺の機能は付いているのか?
なんか基本的な機能すぎてなんと言うか、標準で付いていて欲しいんですが…

2006年5月12日

月めくりカレンダーを付ける

毒を食うわらば皿までと言う気分でカレンダーを付けた
3.2-jaではかなりテンプレートが変化しているようで困った

「環境設定>テンプレート>メインページ」のサイドバーのdivタグの中で

<!-- カレンダー開始 -->
<div align="left" class="side">
<iframe name="cal-iframe" src="<MTBlogURL>archives/calendar/<MTDate format="%Y/%m/index">.html" width="160" height="140" scrolling="NO" frameborder="0" marginwidth="0" marginheight="0">
</iframe>
</div>
<!-- カレンダー終了 -->

と配置
「環境設定>テンプレート>アーカイブ>テンプレートを新規作成」で
テンプレート名「カレンダー」とし、テンプレートの内容を

「環境設定>テンプレート>インデックス>テンプレートを新規作成」で
テンプレート名「カレンダー用スタイルシート」 出力ファイル名「calendar.css」とし、テンプレートの内容を

とし、保存、さらに
「環境設定>設定>公開>アーカイブマッピング>マッピングを新規作成」で
アーカイブの種類「月別」テンプレート「カレンダー」を追加

http://www.koikikukan.com/archives/2006/03/15-003030.php
上リンクから「dayChecker.js」を拾った後エディタで開き上ページ5の修正3を足して保存(>調理済みミラー
MovableTypeを設置したindex.phpのあるディレクトリにアップロードする

以上?以上で終わり?抜けてない?

2006年5月12日

日別アーカイブに日送り 月別アーカイブに月送りを付ける

何でこんな当たり前の機能が何で付いて無いんだ…

「環境設定>テンプレート>アーカイブ>日付アーカイブ」を丸々コピーする

「環境設定>テンプレート>アーカイブ>テンプレートを新規作成」を選び
テンプレートの内容に全部ペーストし、テンプレート名「日別アーカイブ」で保存
「環境設定>テンプレート>アーカイブ>テンプレートを新規作成」を選び
テンプレートの内容に全部ペーストし、テンプレート名「月別アーカイブ」で保存

「環境設定>設定>公開>アーカイブマッピング>マッピングを新規作成」を選び
「アーカイブの種類>日別 テンプレート>日別アーカイブ」で追加
「アーカイブの種類>月別 テンプレート>月別アーカイブ」で追加
その後それぞれ右のラジオで「日別アーカイブ」から上記二つへ選択を切り替え、保存
それが済んだら「日付アーカイブ」を削除します。それが済んだら

「環境設定>テンプレート>アーカイブ」の「日別アーカイブ」「月別アーカイブ」をそれぞれ

<MTEntries>の手前に

<MTArchivePrevious>
<a href="<MTBlogURL>archives/<MTArchiveDate format="%Y/%m/%d/">">
<MTArchiveDate format="%Y年%m月%d日">
<</a>
</MTArchivePrevious>
 | <a href="<MTBlogURL>">メイン</a> |
<MTArchiveNext>
<a href="<MTBlogURL>archives/<MTArchiveDate format="%Y/%m/%d/">"> >
<MTArchiveDate format="%Y年%m月%d日">
</a>
</MTArchiveNext>

で月別では「%d/」「%d日」部分を消し、日別は上そのままで両者保存

ちなみにうちの「日別アーカイブ」

2006年5月12日

さらにカテゴリ別ページも分割表示する

トップページ以外でもページめくりが必要そうなカテゴリ別ページでも同じ作業
環境設定の「テンプレート>アーカイブ>カテゴリ・アーカイブ」にて同様に
(ページの前後両方にページめくりを付けているので)

<!-- ページ分割開始 -->
<MTPaginate>
<MTPaginateIfMultiplePages>
<div class="paginate">
<MTPaginateIfPreviousPage_>
<a href="<$MTPaginatePreviousPageLink$>#blogtop">&#65308;</a>
</MTPaginateIfPreviousPage_>
<$MTPaginateNavigator style="links" format_all="全部読む" place_all="after" separator="|" name="blogtop">
<MTPaginateIfNextPage_>
<a href="<$MTPaginateNextPageLink$>#blogtop">&#65310;</a>
</MTPaginateIfNextPage_>
</div>
</MTPaginateIfMultiplePages>
<MTPaginateContent max_sections="5">
<!-- ページ分割終了 -->


<!-- ページ分割2開始 -->
<$MTPaginateSectionBreak$>
<!-- ページ分割2終了 -->
</MTEntries>
<!-- ページ分割3開始 -->
</MTPaginateContent>
<MTPaginateIfMultiplePages>
<MTPaginateIfPreviousPage_>
<a href="<$MTPaginatePreviousPageLink$>">&#65308;</a>
</MTPaginateIfPreviousPage_>
<$MTPaginateNavigator style="links" format_all="全部読む" place_all="after" separator="|">
<MTPaginateIfNextPage_>
<a href="<$MTPaginateNextPageLink$>">&#65310;</a>
</MTPaginateIfNextPage_>
</MTPaginateIfMultiplePages>
</MTPaginate>
<!-- ページ分割3終了 -->

を挿入、さらに「環境設定>設定>公開>アーカイブマッピング」の中の
「カテゴリー>カテゴリー・アーカイブ」を

cat_<$MTCategoryID$>.php

にしました

注意
さくらインターネットではphpは書き換え可能ディレクトリ内では実行できないので
archivesフォルダの書き換え属性を外しておく(chmod 755)を忘れずに
旧カテゴリフォルダは消しても大丈夫です

2006年5月12日

MovableTypeでのトップページの分割表示 + MTPaginate への a name="~" 属性の付加

http://rambler.s46.xrea.com/mt/archives/2006/0130-1627.php

とりあえず普通の人ならここだけで十分事足りると思うのですが
うちのページはブログコンテナの外にどっさりタイトルがある構成で
(普通はそう言うのを嫌いそうなんですがあえてこの構成にしてます…)
かつ、インデックスとカテゴリはphp、月別日別カレンダパーマリンクはhtmlという混成なので

「環境設定>テンプレート>インデックス>メインページ」の
出力ファイル名を「index.php」にし保存、その後FTPなどでindex.htmlを削除
(さくらインターネットがindex.htmlがあるとindex.phpを表示しない為)

コンテナのトップのバナー部分の外に

<div id="banner">
<a name="#blogtop">
<h1>日記とかブログとか<h1>
</a>

としてまずネームを付けたあと分割プラグインである「MTPaginate.pl」をエディタで開き
「a href=\\\」で検索、すると3つほど出てくると思うのでそれぞれ

 } else {
  echo "<a href=\\\"\$paginate_self=all#$name\\\"$title$target>$all</a>$separator";
 }

 } else {
  echo "<a href=\\\"\$paginate_self=\$i#$name\\\"$target" $format_title .  sprintf('>$format', \$i) . '</a>';
 }

 } else {
  echo "$separator<a href=\\\"\$paginate_self=all#$name\\\"$title$target>$all</a>";
 }

と#$nameを足し、要素を受け渡す為の変数としてMTPaginateNavigator関数の頭を
「MTPaginateNavigator {」で検索、「my ~~」の塊の中に

 my $separator = $args->{separator} || ' | ';
 my $name = $args->{name} || '';
 my $res = '';

の一行を足して$name属性を付加しておきます
そして上記アドレスの「メインページテンプレート」の一部を変更します

<$MTPaginateNavigator style="links" format_all="全部読む" place_all="after" separator="|" name="blogtop">

これでページめくりの際も毎回ブログ部分に飛びます

使ったプラグイン
 MTPaginate 1.26