<%CollapsedContents()%>

備忘録とかもろもろ

NP_ContentsListとMagicalURL

コメントがありましたので、記事としてまとめてみます。あと追加としてサブブログのサブディレクトリ運用を併用する場合についても。
【2004/12/21追記】
NP_ContentsList2.0から以下の改造は不要です。すぺてプラグインオプションで設定できるようになりました!ありがとうタカ姐さん!

MagicalURLでNP_ContentsListを使用する方法(1)

1.まずNP_ContentsList側。吐き出すURLをMagical形式にするため、コードを以下のように書き換えます。

312行目辺り

$data['blogurl'] .= '/blogid_' . $data['blogid'];

377行目辺り

$myblogurl .= '/blogid_' . $data['blogid'];

これで /blogid_x_catid_xx.html という形式のURLを吐き出すようになります。

2.しかし、これはMagicalURLでは考慮してない形式になるので(考慮してるのは /catid_xx_blogid_x.html の様にcatidが先の形式)、.htaccessファイルのRewriteRule行に以下の記述を加えます。

RewriteRule ^blogid_([0-9]+)_catid_([0-9]+).html+ index.php?blogid=$1&catid=$2

3.blogURLの問題(追記)
コメントより問題のある事が発覚。というか当然の話ですね。サブディレクトリで運用してるので忘れてました(^^;

この問題は当初下のサブディレクトリでの対処をしていなかったウチでも起きていた問題でした。当初.htaccessファイルで /blogid_xx となるリンクをそのまま有効にする方法を書いたのですが、やはりスマートではないので、NP_ContentsListの書き換えで。

NP_ContentsListの397行目、echo TEMPLATE::fill($item,$data); の上に以下の行を追加

if(preg_match ('/_[0-9]+$/',$data['blogurl'])){ $data['blogurl'] .= '.html';}

これで動くと思いますが…。一応実験済みではあります。

サブブログをサブディレクトリとして運用してる場合

サブブログをサブディレクトリとしている場合、に方法1の改造をすると、サブブログでのURLが /subblog/blogid_x_catid_xx.html の様になり、ちょっとスマートじゃありません。サブディレクトリであるからにはブログは指定されているわけですから、URLとしては /subblog/catid_xx.html としたいところです。ということで書き換えをするのは2つのファイル。

1.NP_ContentsListは2カ所をコメントアウトします。

1-1.306行目~327行目。具体的には以下のように(太字が追記部分)

306行 /*if ($data['blogid'] != $CONF['DefaultBlog'] || $defurl != $CONF['IndexURL']) { ・・・・・ 326行 } 327行 */ 328行 if ( $data['blogid'] == $nowbid ) {

(/* ~ */で囲まれた範囲がコメントアウトされます。)
1-2.373~381行目を以下のように

373行 /* 374行 if ($indexFlg) { ・・・・・ 381行 }*/ 382行 $catdata['catlink'] = addLinkParams($myblogurl,$linkparams);

しかし、これではURLが /subblog/_catid_xx.html となってしまいます。

2.caidの前の"_"を削除したいので、globalfunctions.phpを書き換えます。
MagicalURLをされているのであれば、function addLinkParams()に以下のようなコードを加えていると思いますが、

$link .= ".html"; if(strstr ($link, '//')){ $link = preg_replace("/([^:])\/\//", "$1/", $link);}

(下の行は記述が少し違うかもしれません。この記事を参考に)
その行の下に以下の記述を加えます。

if(strstr ($link, '/_')){ $link = str_replace("/_", "/", $link);}

これでスッキリとしたURLになるはずです。ここのサイトはその改造で動いています。(サブブログは表にだしてませんが、ちゃんと動いてます)

2004年09月12日 23時01分23秒 藤咲記す - カテゴリ: Nucleus備忘録 - <%Views()%>

TrackBack

トラックバック URI←この記事にトラックバックする際使用してください。
(右クリックからショートカットのコピーを選択)
Nucleus の FancyURL から MagicalURLへ 着物屋 はにゃのつれづれ絵日記 pinged on 2005/03/30 00:12
昨日は なんとかURLをFancyURL にすることが出来ました。^^ という事で 調子に乗って、 今日は FancyURL から MagicalURL にチャレンジし、 なんとか無事に対応する事ができました~ とっても参考にさせていただき...

コメント

通販生活.com 記す:

通販生活.comです。
このような、丁寧な記事までUPして頂き本当に有難うございます。

早速、この記事のとおり試してみたのですが、こんなかんじのリンクになってしまいます。

http://~/blogid_5

URLの拡張子「.html」が表示されないんです。それで、自分なりにこのようにNP_ContentsListを修正しました。

312行目辺り
$link .= ".html";
$data['blogurl'] .= '/blogid_' . $data['blogid'].$link;

これで、URLは、

http://~/blogid_5.html

と表示されたので「やったーっ!」っと思いクリック!目的のブログにたどり着きました。その後、カテゴリーをクリックしたのですが、

http://~/blogid_5.html_catid_11.html

とURLに「.html」が2つも表示されてしまいました。
何とか、自己解決しようと試みたのですが、力尽きました。

どこが、間違っているのか全く判りません!
ご迷惑とは存じますが、今一度ご教授願えないでしょうか?よろしく、お願いいたします。
2004年09月13日 03時03分41秒

藤咲 記す:

そうか、それがありましたね。うちはサブディレクトリで解決してるんで忘れてました。すみません。
で、今のNP_ContentsListだと、Magicalは根本的に対象外のため、blogidの後にcatidをつける形式でURLを作成します。(Fancyの場合それで問題ないのです)
このため、この部分を何とかしようとすると大幅な改造が必要になると思いますので、小手先の方法ですが記事に追記しておきますのでやってみてください。
2004年09月13日 09時35分33秒

通販生活.com 記す:

こんにちは、通販生活.comです。
「追記」の部分をプラグインに追加したらバッチリ直りました!本当に有難うございました。

ただ、パンくずの方が、やっぱり

http://~/catid_11_blogid_5.html

のように、なっています。
こうなるとは、思っていたのですが、、、

やはり、これを解決するには、「ItemNaviEX」の大幅な
改造が必要になるんでしょうね?
あっ、すいません、贅沢ばかり言ってしまいました。(反省!)
パンくずの方は、諦めて取り外そうと思います。

でも、本当に動いてくれてよかったです。
藤咲さん、お忙しい中、大変親切なご指導本当に有難うございました!!
2004年09月13日 17時30分34秒

藤咲 記す:

うまくいったようでよかったです、自分でも色々試したので勉強になりました(笑)

パンくずの方ですが、
http://~/catid_11_blogid_5.html
となるのはMagicalとしては正しい挙動じゃないでしょうか?
http://~/catid_11.html
という形式を想定されているかもと思うのですが、それではうまく動かないと思います。
2004年09月13日 20時01分52秒

通販生活.com 記す:

ご無沙汰いたしております、通販生活.comです。

今回こちらの記事にありますように、”サブブログをサブディレクトリとして運用”に挑戦させていただきました。

しかしながら、またしても行き詰まってしまいました。

globalfunctions.phpを書き直す部分ですが、

$link .= ".html";
if(strstr ($link, '//')){ $link = blockquoteg_replace("/([^:])\/\//", "$1/", $link);}

ではなく、

$link .= ".html";
return $link;

と、このように記述してありました。悩んだ末

$link .= ".html";
if(strstr ($link, '//')){ $link = blockquoteg_replace("/([^:])\/\//", "$1/", $link);}
if(strstr ($link, '/_')){ $link = str_replace("/_", "/", $link);}

このように、書き換えてアップしてみたところ http://~/subblog/ までしか表示されませんでした。
クリックしても、そのブログには、飛びませんでした。
カテゴリーやアイテムリンクにカーソルを置いても、 http://~/subblog/ と表示されてしまいます。

/subblog/_catid_xx.html
ここまで、順調だったんですが・・・

お忙しい中、恐れ入りますがご指導のほど宜しくお願い致します。
2004年12月03日 12時07分30秒

藤咲 記す:

return $link;
を削除していませんでしょうか?
ifで始まる追記した2行の下に、
return $link;
がない場合は書き加えてください。

globalfunctions.phpを書き直す部分のもとの記述は、MagicalURLでTrackBack時に/が2重に出てくるという問題の解決を図るコードです。
以下の2つを参照下さい。
http://fjsk.s39.xrea.com/it...
http://fjsk.s39.xrea.com/it...

上のリンクを見てもらうとわかりますが、
return $link;
の上に書き加える必要があります。
2004年12月03日 13時34分25秒

通販生活.com 記す:

いつもご指導有難うございます。

サブブログに飛ぶようになりました。
しかしながら、サブブログからのカテゴリーへのリンク

/subblog/catid_xx.html

をクリックすると、”404error”となってしまい、カテゴリーに飛ばずにリンク切れになってしまいます。

globalfunctions.php には、

$link .= ".html";
if(strstr ($link, '/_')){ $link = str_replace("/_", "/", $link);}
return $link;

を記述しました。

”TrackBack時に/が2重に出てくるという問題”は、うちでは出ていなかったので”if(strstr ($link, '//')){ $link = blockquoteg_replace("/([^:])\/\//", "$1/", $link);}
”は、記述してません。ちなみに、これを記述したら、

Fatal error: Call to undefined function: blockquoteg_replace() in /home/sites/lolipop.jp/users/lolipop.jp-dp40001501/web/nucleus/libs/globalfunctions.php on line 982

という、errorがでました。

何か、根本的に間違いをおかしているのでしょうか?
すいません、スキルがなくて・・・
何卒、ご指導お願い致します。
2004年12月03日 19時35分00秒

藤咲 記す:

URL生成まではうまくいったようですね。
あとはそのURLをNucleusに受け渡してやればいいので、.htaccessを使用します。
トップのディレクトリにおいてある.htaccessファイルを/subblog/にコピーしたらどうなりますでしょうか?
2004年12月03日 22時12分05秒

通販生活.com 記す:

サブブログを作った際に、トップの、.htaccessをそのまま/subblog/にコピーしておいたのですが、それでもうまくいかないとなると.htaccessの記述がおかしいのでしょうか?

素人のクセに色々いじったせいで、余計なものを書いているような気がします。ご診断ください。

RewriteEngine On

RewriteRule ^blogid_([0-9]+)_catid_([0-9]+).html+ index.php?blogid=$1&catid=$2

RewriteRule ^catid_([0-9]+)_blogid_([0-9]+).html+ index.php?catid=$1&blogid=$2

RewriteRule ^archive_([0-9]+)_([0-9]+)-([0-9]+).html+ index.php?archive=$2-$3&blogid=$1

RewriteRule ^archive_([0-9]+)_([0-9]+)-([0-9]+)-([0-9]+).html+ index.php?archive=$2-$3-$4&blogid=$1

RewriteRule ^archive_([0-9]+)_([0-9]+)-([0-9]+)_catid_([0-9]+).html+ index.php?archive=$2-$3&blogid=$1&catid=$4

RewriteRule ^catid_([0-9]+)_blogid_([0-9]+)_archive_([0-9]+)-([0-9]+)-([0-9]+).html+ index.php?archive=$3-$4-$5&blogid=$2&catid=$1

RewriteRule ^catid_([0-9]+)_blogid_([0-9]+)_archive_([0-9]+)-([0-9]+).html+ index.php?archive=$3-$4&blogid=$2&catid=$1

RewriteRule ^archives_([0-9]+).html+ index.php?archivelist=$1

RewriteRule ^archivelist_([0-9]+)_catid_([0-9]+).html+ index.php?archivelist=$1&catid=$2

RewriteRule ^catid_([0-9]+)_archivelist_([0-9]+).html+ index.php?archivelist=$2&catid=$1

RewriteRule ^item_([0-9]+)_catid_([0-9]+).html+ index.php?itemid=$1&catid=$2

RewriteRule ^item_([0-9]+).html+ index.php?itemid=$1

RewriteRule ^member_([0-9]+)_catid_([0-9]+).html+ index.php?memberid=$1

RewriteRule ^member_([0-9]+).html+ index.php?memberid=$1

RewriteRule ^blogid_([0-9]+).html+ index.php?blogid=$1

RewriteRule ^item_([0-9]+).html?(.*)+ index.php?itemid=$1&$2
<FilesMatch "^item$">
ForceType application/x-httpd-php
</FilesMatch>
<FilesMatch "^archive$">
ForceType application/x-httpd-php
</FilesMatch>
<FilesMatch "^member$">
ForceType application/x-httpd-php
</FilesMatch>
<FilesMatch "^archives$">
ForceType application/x-httpd-php
</FilesMatch>
<FilesMatch "^category$">
ForceType application/x-httpd-php
</FilesMatch>
<FilesMatch "^blog$">
ForceType application/x-httpd-php
</FilesMatch>

<FilesMatch "^extra$">
ForceType application/x-httpd-php
</FilesMatch>

<FilesMatch "^trackback$">
ForceType application/x-httpd-php
</FilesMatch>
<IfModule mod_php4.c>
php_value default_charset UTF-8
php_value mbstring.language Japanese
php_value mbstring.internal_encoding UTF-8
php_flag mbstring.encoding_translation On
php_value mbstring.http_input auto
php_value mbstring.http_output pass
</IfModule>
<FilesMatch "^page$">
ForceType application/x-httpd-php
</FilesMatch>

大変お手間をおかけして、申し訳ございません。
2004年12月04日 01時26分46秒

藤咲 記す:

RewriteRuleの中に、catid_xx.html を書き換えるのがありませんね。
RewriteRuleに以下を追加したらどうなりますか?
RewriteRule ^catid_([0-9]+).html+ index.php?catid=$1
2004年12月04日 02時28分21秒

通販生活.com 記す:

RewriteRule ^catid_([0-9]+).html+ index.php?catid=$1

を追加しましたところ、うまくいきました。

大変ご多忙の中、今回も本当に有難うございました。
2004年12月04日 03時02分53秒

コメントを書く

このBlogへコメントを追加するにはメンバーとしてログインしなければいけません。

この記事を携帯で読む

この記事のQRコード