2004-08-22 Sun
この記事は随分前、当サイトが 3 人の投稿者で運営されていた時代の記事です。現在は僕一人で細々と続けていますので、この機能(?)は使用していません。ご了承ください。
以前からタイトルの左横に誰の投稿か一目でわかるようにアイコンをつけていたのですが、それを、ニュースや最新の 20 記事や、おすすめ作品にも表示するようにしました。ちょっとうるさくなったと後悔しておりますが、当サイトは複数で投稿している上に、今後も増員が予定されているので管理者的に誰の記事かわかるのはありがたいので。今はほとんど緑(僕ですね)ですが、先日 QUOICHI さんと MEE さんにも Nucleus の投稿方法などを説明したので、徐々にカラフルになるはずです。
以下編集した点のメモ。(というには長すぎるな…)
最新の 20 記事表示や、Heartfield News、おすすめ作品、投稿者別最新 3 記事は、単純に CSS でクラスを定義して実現出来ました。一番苦労したのは最近頂いたトラックバックとコメントの一覧です。というのも、この部分は「NP_CommentTree」というプラグインで実現しているのですが、このプラグインの編集メニューからは「<%author%>」を抽出出来ないのです。そうなると、投稿者別のアイコン表示なんて出来るわけが無いので、このプラグイン自体を改造する事にしました。
for($i=0;$i<$show_itemcnt;$i++){
$item =& $manager->getItem($latest_itemid[$i],0,0);
// $itemlink = createItemLink($item['itemid'], '');
$itemlink = $this->createGlobalItemLink($item['itemid'], '');
$itemtitle = $item['title'];
$itemtitle = shorten($itemtitle,20,'..');
echo $this->getOption(s_items)."<a href=\"".$itemlink."\">".$itemtitle."</a><br />\n";
119 行目辺りから上記のような部分があるのですが、この様にしました。
for($i=0;$i<$show_itemcnt;$i++){
$item =& $manager->getItem($latest_itemid[$i],0,0);
// $itemlink = createItemLink($item['itemid'], '');
$itemlink = $this->createGlobalItemLink($item['itemid'], '');
$itemtitle = $item['title'];
$itemauthor = $item['author'];
$itemtitle = shorten($itemtitle,20,'..');
echo $this->getOption(s_items)."<a href=\"".$itemlink."\" class=\"HFrecenttc".$itemauthor."\">".$itemtitle."</a><br />\n";
「$item['title']」でアイテムのタイトルが取得出来るなら「$item['author']」でアイテムの投稿者の名前が取得できるんじゃないの? という安直な考えでやってみたのですが、成功したのでびっくりしました。勘が良かったんですね。僕はプログラミングとか出来ませんので、これがおかしな処理をしているのか、というより何故これでいいのかもわかっていないのですが、まあ結果がよければ…
あと、おすすめ作品部分には投稿者別アイコンの他に、そのおすすめ作品に関連する Heartfield の記事タイトルを表示するようにしました。これは、「NP_ExtraSkinJP」と、「NP_MultiBlogs」の合わせ技で実現しています。NP_ExtraSkinJP は inclued したいファイルなどをブラウザ上で編集出来るようにしたりするすごいプラグインです。何度も言いますが、当サイトは複数の投稿者がいるので、各おすすめ作品をランダム表示させる PHP スクリプトをブラウザ上で編集出来ることはとても重要です。で、このプラグインのすごいところは、Nucleus 解析も PHP 解析もやってくれる事です。おかげで今回のような使い方が出来ました。
おすすめの Mac 関連商品表示スクリプトでは以下の変数を定義しています。
$ASIN = Amazon の ASIN コード $amzid = Amazon のアソシエイト ID $img = 画像の絶対 URL $title = 作品タイトル $maker = 製造メーカー $entry = 作品を紹介している記事の URL。記事の ID $HFauthor = 投稿者
で、それを実際表示させる部分はこんな感じです。
echo("<a href=\"http://www.amazon.co.jp/exec/obidos/ASIN/$ASIN[$n]/$amzid[$n]\" title=\"Amazon.co.jp で詳しい情報を見る\" class=\"HFrecommendlist\"><img src=\"$img[$n]\" alt=\"$title[$n]\" class=\"HFrecommendlist\" />$title[$n]</a><br />$maker[$n]");
この後に「NP_MultiBlogs」を使う事が出来るので、
echo <<<EOD <%MultiBlogs(000/recommend,$entry[$n],fixall,all)%> EOD;
と記述します。このサイトは左のメニューは全ページ共通ですので「<%parsedinclude%>」を使って呼び出しています。その中に「<%ExtraSkinJP(recommendMac,php)%>」と記述してさらに ExtraSkin を呼び出しています。「NP_ExtraSkinJP」は PHP 解析の後に Nucleus 解析をしてくれるので、上記のようなことが出来るのです。すごいですね。
ただ、カテゴリー表示一覧では、「NP_MultiBlogs」が動いてくれません。ということで、jun さんにまたご報告してみます。全ての Blog の全てのページで表示させたいので「<%MultiBlogs(000/recommend,任意の数,fixall,all)%>」と記述しているのですが…
« Old 2004-08-19
Nucleusで最新の記事を表示
2004-10-09 New »
Nucleus のログイン名を隠す
パラメータを追加してもいいですけど、取りあえずの処理。NP_MultiBlogsの37行目「if(!$catid) {」と45行目の「}」をコメントアウトするか削除して下さい。そうすればカテゴリー選択時も表示できます。
2004-08-22 Sun 14:32
junさん、早速のお返事ありがとうございます。勝手な事を言いましてすいません。
上記処理をして、無事カテゴリー一覧でもタイトル表示されるようになりました。
が、そうすると今度は投稿者別が動かなくなり、以下のエラーが発生して、元に戻しても直らなくなりました。無茶苦茶長いですが全文掲載してみます。お役に立てれば。ということで今は投稿者別は外しています。
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /nucleus/plugins/NP_MultiBlogs.php on line 91
mySQL error with query SELECT DISTINCT i.inumber as itemid, i.iblog as blog, i.ibody as body, m.mname as author, m.mrealname as authorname, UNIX_TIMESTAMP(i.itime) as timestamp, i.itime, i.imore as more, m.mnumber as authorid, c.cname as category, i.icat as catid, i.iclosed as closed, i.ititle as title FROM nucleus_item as i, nucleus_member as m, nucleus_category as c, nucleus_blog as b WHERE i.iauthor = m.mnumber and i.icat = c.catid and i.idraft = 0 and i.itime <= "2004-08-22 14:54:39" and i.icat in (mem, 1) and i.iblog in (1) ORDER BY i.itime DESC LIMIT 3: Unknown column 'mem' in 'where clause'
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /nucleus/libs/BLOG.php on line 161
このページに記事はありません。
戻る
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /nucleus/libs/BLOG.php on line 168
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /nucleus/libs/BLOG.php on line 205
Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in /nucleus/libs/BLOG.php on line 214
2004-08-22 Sun 14:57
こちらではエラーは出なかったのですが。取り合えず、カテゴリー選択時にも表示できるように、NP_MultiBlogsをバージョンアップしました。ご面倒ですが、新しいバージョンのものをダウンロードしてみてください。
CSSで苦しんでいらっしゃるみたいですね。この前、たまたまSleipnirというIEベースのブラウザで閲覧しましたが…。いつもFirefoxを使っているので、かなり驚きました。
2004-08-25 Wed 18:34
jun さん
勝手なお願いを聞いてくださって本当にありがとうございます。
無事表示させることができました。一応確認ですが、これも最初にいただいたコメントのように、修正が必要ですよね?(←すいません、確認しました。パラメーターで対応していただいてるんですね。ありがとうございます。)
しかしほんとに素晴らしいプラグインです。もうこれ無しではやっていけないサイトになってしまいました。
…CSS…IE…悪夢です。MS がさっさと IE7 を出すなり、きちんと CSS に対応してくれれば、CSS の苦労はぐっと減ると思うのですが、愚痴を言っててもしょうがないので、こつこつ直していきます…
#みんなが Mozilla 系使ってくれたらなぁ…
2004-08-25 Wed 19:26