ブロックのカスタムテンプレートを作成することにより、インストールされているブロックのデザインなどを変更することができます。今回は、デフォルトでインストールされている「ページリスト」に、日付を追加したカスタムテンプレートを作成します。
早速、作成してみましょう。
1.ページリストブロックフォルダ(/Concrete/concrete/blocks/page_list)の直下に「templates」フォルダを作成します。
2.ページリストのルートにある「view.php」を「templates」フォルダにコピーし「release.php」と名前を変更します。
3.ページタイトルの前に日付を表示したいので、16行目あたりh3タグの中に、日付を取得し表示形式を整える下記のコードを追加します。
<?php echo date( 'Y/m/d',strtotime($cobj->getCollectionDatePublic())) ?>
4.UTF-8で保存します。
上記でカスタムテンプレートの準備が完了です。では、適用してみましょう。
※既にページリストが存在している事を前提にしています。
1.編集モードでカスタムテンプレートを使用するブロックをクリックし、カスタムテンプレートを選択します。
2.カスタムテンプレートで「Release」を選択し、「更新」をクリックします。
3.ページタイトルの前に日付が表示されれば成功です。
ほとんど修正していませんが、カスタムテンプレートのソースです。
release.php
<?php
defined('C5_EXECUTE') or die(_("Access Denied."));
$textHelper = Loader::helper("text");
// now that we're in the specialized content file for this block type,
// we'll include this block type's class, and pass the block to it, and get
// the content
if (count($cArray) > 0) { ?>
<div class="ccm-page-list">
<?php
for ($i = 0; $i < count($cArray); $i++ ) {
$cobj = $cArray[$i];
$title = $cobj->getCollectionName(); ?>
<h3 class="ccm-page-list-title"><?php echo date( 'Y/m/d',strtotime($cobj->getCollectionDatePublic())) ?> <a href="<?php echo $nh->getLinkToCollection($cobj)?>"><?php echo $title?></a></h3>
<div class="ccm-page-list-description">
<?php
if(!$controller->truncateSummaries){
echo $cobj->getCollectionDescription();
}else{
echo $textHelper->shorten($cobj->getCollectionDescription(),$controller->truncateChars);
}
?>
</div>
<?php }
if(!$previewMode && $controller->rss) {
$btID = $b->getBlockTypeID();
$bt = BlockType::getByID($btID);
$uh = Loader::helper('concrete/urls');
$rssUrl = $controller->getRssUrl($b);
?>
<div class="rssIcon">
<a href="<?php echo $rssUrl?>" target="_blank"><img src="<?php echo $uh->getBlockTypeAssetsURL($bt, 'rss.png')?>" width="14" height="14" alt="rss" /></a>
</div>
<link href="<?php echo $rssUrl?>" rel="alternate" type="application/rss+xml" title="<?php echo $controller->rssTitle?>" />
<?php
}
?>
</div>
<?php }
if ($paginate && $num > 0 && is_object($pl)) {
$pl->displayPaging();
}
?>