Nucleus CMSでサイトマップを作成する方法を紹介します。サイトマップは主にGoogle Search Consoleに送信するために使用します。
Nucleus CMSのパッケージの中にはRSS配信のために「xml-rss2.php」や「atom.php」などXMLを出力するためのファイルが同梱されています。出力のフォーマットはスキンとテンプレートで設定されていますので、これらと同じ要領でサイトマップを作る事ができます。
まずはテンプレート編集画面からアイテム一覧用のテンプレートを作成します。最低限、記事のURLだけあればサイトマップとして成立します。
<%itemlink%> <%date(utc)%>
カスタムURLを使用していて、アイテムのURLにカテゴリーを含めたい場合は、
<%categorylink%><%CustomURL(path)%> <%date(utc)%>
のように設定します。
次にスキンを作成します。「一般設定」の「Content Type」の部分を「text/xml」にしてください。「メインの目次ページ」にサイトマップXMLの雛形とアイテムを一覧表示させるためのスキン変数を設定します。パラメータには先ほど設定したテンプレートの名前を入れます。アイテムの表示件数はしばらくは超えないくらい大きな数字を設定しておきます。
<?xml version="1.0" encoding="UTF-8"?><%blog(list/sitemap,10000)%>
複数のブログで一つのサイトを構築している場合は「ShowBlogs」プラグインを使って一カ所にまとめます。
<?xml version="1.0" encoding="UTF-8"?><%ShowBlogs(list/sitemap,10000,all,0)%>
名前は何でもかまいませんが、PHPファイルをお好きな場所に作成してください。今回はルートディレクトリに「sitemap.php」という名前で作成します。「include」部分で、「config.php」のパスを指定してください。パスが合っていればどのディレクトでも動作します。「selectSkin」部分では先程作成したスキン名を入力してください。この2箇所を変更すればOKです。
<?php $CONF = array(); include('./cms/config.php'); selectSkin('sitemap'); selector(); ?>
以上でサイトマップが完成です。
これで特に問題はないと思いますが、もしかしたら、「.php」ではなく「.xml」でないとダメ、という状況に陥る事があるかもしれません。ファイル名を「sitemap.xml」に変更してアクセスしてみてください。当然正しく表示されません。
「.htaccess」を使うと「.php」以外のファイルでPHPを動作させるようにする事ができますので、「.xml」のファイルでPHPが動作するよう設定します。
AddHandler application/x-httpd-php .xml
もしくは
AddType application/x-httpd-php .xml
これで「sitemap.xml」にアクセスするとサイトマップが表示されるようになります。動作しない場合はサーバーが許可していないという事になります。
どんな感じで表示されるかはこのサイトのサイトマップをご覧ください。