The Trap of Web Design

複数ブログ稼働時の FancyURL 利用時の設定について

スキン作るときに、以下を徹底的に調べてみたんですが、これまでさんざん作ってて、なんとかなってるのではあるけれど、ドキュメントを調べたり、情報検索したりも当然したけれど、やっぱり自分自身、コーダという答えを実は知らないという。

  1. FancyURL 利用時、index.php の、$CONF['Self'] の正しい値は?
  2. FancyURL 利用時、別ブログを別ファイル作成して表示させる時の、$CONF['Self'] の正しい値は?
  3. FancyURL 利用時、「ブログの設定」の個々のブログの URL の正しい値は?
  4. FancyURL 利用時、index.php や、別ブログ.php の中身の正しい内容は?

ほんで、状況によっては、この正しい値はヒトツでないのですね。だけど、基本設定として、Nucleus 側では、どんな状況がデフォルトかってことはなくちゃオカシイと思うので、考えてみたワケですよ。


  1. index.php の、$CONF['Self'] の正しい値は、fancyurl.config.php の $CONF['Self'] と同じ。
  2. .htaccess に記述追加した、表示ブログのショートネームで、最後にスラッシュがつかない「http:// からの絶対 URL」
  3. ウエに同じ(スラッシュつかない)
  4. 下記参照。

index.php

<?php
$CONF = array();
include('./fancyurls.config.php');
include('./config.php');
selector();
?>

わかってなくちゃならないのは、$CONF['Self'] の値のしくみと、記述順。

同様にindex.phpファイルの$CONF['Self']の値を編集(引用符の中を削除)します。これをやらないと、URLがindex.php/item/1234などとおかしくなります。

管理画面からのリンクで、(参考:Fancy URL を有効にする方法)に書かれている説明の「引用符の中を削除」って文言は間違ってませんか?よく読んで考えてみたけれど、「fancyurls.config と同じにする」、または「fancyurls.config.php をインクルードして、$CONF['Self'] の行を削除する」とすれは良い筈なのですが、そうはとれない説明でしょ。

あと、記述順序。異なっていても動作するのですが、本来は以下が正しいと思っておくとよいだろうってことで。新規ブログを作った時に参考に生成されるコードは FancyURL 用ではなく、Fancy URL 利用者はここの記述について、全く説明が無い状態でやってる筈。

shortname が test ってのを作った時の test(.php)

<?php
$CONF = array();
include('./fancyurls.config.php');
include('./config.php');
$CONF['Self'] = 'http://yourhost.com/test';
selectBlog('test');
selector();
?>

fancyurls.config.php にて、fancykey を変更した場合はこうしなくちゃ意味ナシ。デフォルトのキーのままの場合は fancyurls.config.php は読まなくてよく、$CONF['Self'] は、fancyurls.config.php の値になっては困るので、必ず、include('./fancyurls.config.php'); が先で、$CONF['Self'] が後。

実はそうしても「キイテナイジャン!」と思う箇所があるのだけど、ソレを修正するのはコアの大量の改造が必要だったりスル。ま、しなくても動作自体はするんだよなぁ。プラス、FancyKey 変更の場合は、extra 内のファイルの修正、.htaccess の修正も必要。と、こんな手間があるから、やってる人は少なそうな気がする。

尚、由緒正しい FancyURL での test ブログ表示ファイルは、拡張子ナシの test ってファイル名にして、.htaccess に、

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

と追記します。実は自分はこーでない手法なんでなんだか書いてみると新鮮。

あと、ブログの設定でのデフォルトブログの URL は「http://yourahost.com/」で、ブログの設定での test ブログの URL は「http://yourahost.com/test」

これまでの状況をキッチリ設定した上で、あと、テンプレートの修正。categorylink、authorlink、itemlink は、そのままではデフォルトブログの設定下で開かれるため、もし、テンプレートのアイテムの本体等で、それらのリンク関係を生成する場合に、基本的に以下の修正が必要。

<%itemlink%>
<%blogurl%>/item/<%itemid%>
<%authorlink%>
<%blogurl%>/member/<%authorid%>
<%categorylink%>
<%blogurl%>/category/<%catid%>

あとコメント関係のリンク箇所、続きリンク等も、必要に応じて上記の <%itemlink%> の修正と同様にします。

この時点でブログの URL を「test/」にしたいという方が多いんではないかと思う。その場合は上記説明の無用なスラッシュを消せば(たぶん)よい筈。

なかなかわかりづらいのは、この FancyURL のスラッシュはつまりはディレクトリに見せかけてるけど実際にはそうでないので、test ブログを作る時に、test ってディレクトリをいれて、/test/ でアクセスさせる必要が無いっていうことかな?だから、正式な URL が /test ってコトなんです(きっと)

もし、ドウシテモ test ディレクトリを作りたいってことなら、その中に index.php をいれて、上記の test と同じ内容にして、extra にはいってる全てのファイルのコピーもそのディレクトリ内にもいれます。そして、それぞれのファイルの中身の config.php のパス等を変える必要があります。

まとめと「本来の姿」

実は、システム的に、Nucleus CMS の動作に準じた場合の、複数ブログ(の仮にふたつめ)の URL の「正式」なものは、http://yourhost.com/blog/2 なんだ、と今更ながら気づきました。テンプレートのリンク箇所の修正に関しては、上記と同様になるべきだと思うのですが、この URL にして、<%itemlink%> のままでの運用で、実際に意図通りって状況はあります。ブログ毎にスキンを変えたりすることがなかったりする同一サイト内での複数ブログ運営という構成である状況です。

ムカシから、この複数ブログ機能を使って、全く異なるサイト(例えば、サーバーによっては、別ブログをサブドメイン運営する、いやいや、ドメインを別にしての運営だって可能だったりする)にしちゃうようなコトもしてるから、<%categorylink%> なんかでブログ id がつかない場合に、デフォルトブログ以下で開かれたりしちゃコマル、っていうことが多かったりするので(ここのサイトの、Trap of Web Design と Salon de Kie みたいな場合)汎用化したスキンをカスタマイズして、ブログ間での共通箇所をあえて無くす設定にするのに手間取り、ワケがわからなくなったりしてたのだけど、そういう利用法のほうが「想定はしてるけど標準状態ではナイ」ってことなのですね。

リンク URL の意図通りの生成には、上記を踏まえながら、結構微調整が必要で、一度決めたらもういぢらないからとコアで全部生成箇所書き換えなんかもしたことがありますけど、そんなことまでしてるうちに、デフォルトの動作が分からなくなってしまったりしてました。

このあたりのラクチン設定のために、NP_RightURL とか、NP_SmartLink.php を使うって云う方は多いでしょう。でもまぁ、スキン変数、テンプレート変数をジックリ調べて、手間暇かけて作る分には、プラグイン無しでも当然できますってことです。

ほんでもって、その手間暇設定をするときに、基本の設定情報に間違いがあると、全て狂う(スラッシュ付加するかしないか等。スラッシュ付加をしちゃいけない箇所にすると、スラッシュがふたつ続いたりする)場合は考えられますから、本来可能なことであっても、あれ、これじゃムリなのか?なんかヘン、バグ?なんて思い込んでしまったりするわけですね。<自分

すごーく、重要な情報があるから、以下も必ず参照

2008-04-10 02:43 | Nucleus | ichiro | permalink


Comments

コメントはまだありません


Portfolio

Stagemind

▲ 珍しくカバーアニメーションとか