プラグインの概要

NucleusCMSで作成したwebサイトのアイテム・カテゴリに好きな名前をつけて、静的URLとしてリンクを生成します。
FancyURLモードでのみの動作、及びmod_Rewrite必須です
カテゴリ、サブカテゴリ、アーカイブリスト等を、それぞれディレクトリとみなし、カテゴリで絞り込んだ時は当該カテゴリのディレクトリにあるindexファイルを参照するイメージになります
メンバーの詳細ページと個別アイテムページは、当該htmlファイルにアクセスするイメージになります

インストール・動作開始手順

  1. ダウンロードしたファイルを解凍して出来た「NP_CustomURL.php」ファイルと「customurl」ディレクトリをサーバの plugins ディレクトリにアップロード後、「プラグインの管理」ページで「CustomURL」を選択して「プラグインのインストール」ボタンをクリックします
    (この文章を読んでいるということは、ここまでは出来ていると思います)
  2. まず始めに、管理画面の「グローバル設定」ページで「URL モード」を「Fancy」に変更します
  3. 通常の「extra」ディレクトリの「fancyurls.config.php」を、FancyURLsの手順通りトップディレクトリへコピーして編集します
    このときコピーするのは「fancyurls.config.php」ファイルだけで、後のファイルはコピーする必要がありません
  4. 次に「index.php」を編集しますの $CONF['Self'] の行を $CONF['Self'] = '.' に書き換え、 $curl_blogid = 1;("1"は「index.php」でアクセスするブログのID) と一行書き加えます
    <?php
    // This file will generate and return the main page of the site
    $CONF = array();
    $CONF['Self'] = '.';
    $curl_blogid = 1;
    
    include('./config.php');
    include('./fancyurls.config.php');
    
    selector();
    
    ?>
    
  5. 次に.htaccessを編集します
    • 内容はこちら
      RewriteEngine on
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule ^(.*)$ index.php?curl=$1 [L,QSA]
      
      この4行だけで、後は何も書かなくても大丈夫です
これで準備完了です

注1:現在 FancyURLs で運用されている方は、Fancy 用のファイルを削除するか別ディレクトリへ退避してください。すべてこのプラグインで受けているので必要ありません
また、下記プラグイン用のFancyファイルは組み込み済みですので不要です

使い方

スキン・テンプレート変数

スキン・テンプレート、及び記事中に記入することが出来ます
記入方法:<%CustomURL(リンク先, リンク文字列, リンクタイトル)%>
記入例: スキン・テンプレート・記事共に、<%CustomURL(123)%>のように id のみを記入した場合は、その id を持つアイテムへの URI が書き出されます
またアイテムの場合のみ、<%CustomURL(123/path)%>と書くことで、item_123 のようにその id を持つアイテムに設定したパスを書き出すことが出来ます

動作報告・バグレポート

動作報告・バグレポートは、以下のURLにコメント・トラックバックをお願いします
http://shizuki.kinezumi.net/NucleusCMS/Plugins/NP_CustomURL/NP_CustomURL.html

バージョン履歴

謝辞

本プラグインの英語版ランゲージファイル、及びヘルプファイル作成に当たりまして、多大なるご協力をいただきましたTucker氏に心より感謝申し上げます

プラグイン改造情報

「NP_TagEX」と「NP_ContentsList」で 「http://example.jp/nucleuscms/plugins/tag/NP_CustomURL」 形式のリンクを表示させる方法

「NP_TagEX」の場合
・一番最後のファンクションcreatTagLink()の最後のreturn addLinkParams($link, $linkparams);の直前に、次のコードを挿入します
global $manager;
if ($manager->pluginInstalled('NP_CustomURL')) {
    $customurls = $manager->getPlugin('NP_CustomURL');
    $link = 'tag/' . $ready.$sep.$this->_rawencode($tag);
    return $CONF['BlogURL'] . '/' . $customurls->_addLinkParams($link, $linkparams) . '/';
}
これでタグがURLの一番最後になります

「NP_ContentsList」の場合
doSkinVar()の467行目付近、$catdata['catlink']の生成が終了したところでサブカテゴリのリンクを生成する直前、
// sub category ---
if ($subcat && (!$subcurrent || $catid == $catdata['catid']) && !$subnoOpen) {
の前の行に
if ($CONF['URLMode'] == 'pathinfo' && $manager->pluginInstalled('NP_CustomURL')) {
    $catdata['catlink'] = createCategoryLink($catdata['catid']);
}
の一行を追加して、カテゴリのリンクを上書きします
さらにそこからもう少し下の
$subdata['sublink'] = addLinkParams($catdata['catlink'], array($subrequest => $subdata['subcatid']));
となっている行の下に
global $manager;
if ($CONF['URLMode'] == 'pathinfo' && $manager->pluginInstalled('NP_CustomURL')) {
    $customurls = $manager->getPlugin('NP_CustomURL');
    $subdata['sublink'] = $customurls->_addLinkParams($catdata['catlink'], array($subrequest => $subdata['subcatid']));
}
と追加、350行目付近の$data['self'] = $data['blogurl'];の前に
if ($CONF['URLMode'] == 'pathinfo' && $manager->pluginInstalled('NP_CustomURL')) {
    $data['blogurl'] = createBlogidLink($data['blogid']);
}
を追加して終了です