■ [ネット] pivotx で某所のページ作成中のメモ
PHPしか動かなくてデータベースが使えないサーバー向けに、CMS導入するということで PivotX を利用して現在サイトを作っているわけだけど、これ、テンプレート作成もそんなに難しくなくて結構便利だし、かなり気に入ったので作業内容を少しメモしておく。
■ トップページに更新情報をブログ機能で載せたい場合
1個だけなら簡単だけど、例えば更新情報と簡単なお知らせ的プレスリリースとか載せたい場合は、ちょっと分かりづらかった。
例えばカテゴリが A B と2つあるときは、name に 共通の名前を入れて、カテゴリー設定で両者の出力を使い分ける。
<div>
[[ subweblog name="standard" category='A' ]][[ literal ]]
<p>[[ date format="%year%/%month%/%day%" ]]</p>
<p>[[title]] [[ editlink format="Edit" prefix=" - " ]]</p>
<p>[[introduction]]</p>
<p>[[more]]</p>
[[ /literal ]][[ /subweblog ]]
</div>
<div>
[[ subweblog name="standard" category='B' ]][[ literal ]]
<p>[[ date format="%year%/%month%/%day%" ]]</p>
<p>[[title]] [[ editlink format="Edit" prefix=" - " ]]</p>
<p>[[introduction]]</p>
<p>[[more]]</p>
[[ /literal ]][[ /subweblog ]]
</div>
この場合、サイト管理?ウェブログ?サブウェブログ で、サブウェブログに両方のカテゴリを出力させること。サブウェブログ設定は結構便利で、1ページに出力する記事数などもここでコントロールできる。
ただ、アーカイブページで使いたい subweblog name と、トップページで使う subweblog name が違う場合だと、トップページに
[[ subweblog name="other" noresult ]][[ literal ]]
[[ /literal ]][[ /subweblog ]]
なんて、何も出力しない subweblog name を追加で埋め込んでやらないと、サイト管理?ウェブログ?サブウェブログ にその subweblog name が出てこないので設定できない。
こんな事例はあまりないかもしれないが、自分の場合はデザイン上分けざるを得なかった。(ニュースリリースによくある、左右のフロートしたボックスを同じ高さに揃えるデザインにした場合、繰り返し出力するとデザインが崩れるため。力業で subweblog name をたくさん作って対処しました・・・)
■ トップページを静的ページっぽく作った場合のブログアーカイブ
ブログアーカイブのカテゴリ一覧は、トップページに対して出力されるため(ブログ的に)、トップページにアーカイブ一覧を出力するのが厳しいことがある。その場合、
index.php?c=カテゴリ名&o=0
とリンクすれば、アーカイブのテンプレートを使ってカテゴリ記事の一覧が表示できる。他のテンプレートタグを使う方法だと、
<ul>
[[category_list format="<li><a %active% href='%url%&o=0'>%display%</a></li>" isactive="id='active'"]]
</ul>
みたいに category_list タグを使う方法もある。(余談だが、category_list タグでも %active% とか isactive が使える。ドキュメントには全く書かれてないけど、これのおかげでサイトナビゲーション作成がとても便利だった)
ただ、エントリーページ(個別記事ページ) で自分の今いるカテゴリーをパンくずリストでリンクするのがどうしてもできなかったため、コードを変更した。
pivotx/modules/module_smarty.php 436行目辺りを
$output[] = sprintf("<a href='%s&o=0'>%s</a>", makeCategoryLink($value, $params['weblog']), htmlentities($thiscat['display'], ENT_QUOTES, "utf-8"));
こんな風に変更。これで
[[category link="true"]]
できちんとリンクが張られるようになる。
■ その他
アーカイブのテンプレートを使ってカテゴリ記事の一覧を表示するとき、パンくずリストに自分がいるカテゴリ名を表示しようとしても、何故か
[[category]]
では表示されないため、以下のようなちょっとトリッキーな方法を採った。
<div id="breadcrumb">
<a href="[[home]]">トップページ</a> > [[category_list format="<span %active%>%display%</span>" isactive="id='print'"]]
</div>
追加で、以下のような CSS を書いておく。
#breadcrumb span {
display: none;
}
#breadcrumb span#print {
display: inline;
}
これで、自分がいるカテゴリだけパンくずリストに表示される。
ということで、ざっとしたメモ。何か思い出したらまた追記するかも。