ページリストのカスタムテンプレート
いつも助かっています。
今回はカスタムテンプレートのエラーについての質問です。
環境
win7
concrete5のバージョン 5.6.3.1
サーバー ドメインキング
スキル
html
css
質問内容
「ブロック修正の仕方とカスタムテンプレートの仕組み」
のページと動画をみながらページリストのカスタムテンプレートを作成しました。
blocks/page_list/templates/news/view.php
blocks/page_list/templates/news/view.css
です。
この動作はうまくいきましたが、一歩進んで更新日付を入れたいと思い、
view.php の タイトル と 説明 の間に、動画を参考にして
<div class="ccm-page-list-date"><?php echo $cobj->getCollectionDateLastModified ('Y年m月d日'); ?></div>
をコピペで挿入して、キャッシュクリア、ページの更新日時の変更をしてみたつもりなのですが、
Fatal error: Call to a member function getCollectionDateLastModified() on a non-object in /var/www/vhosts/テストサイト/httpdocs/concrete5/blocks/page_list/templates/news/view.php on line 57
というエラーが出て日付が表示されません。(最後の57は57行目ということですよね?ここにコピペしてあるので・・。)
どうしたらよいのでしょうか・・よろしくお願いします。
Re: ページリストのカスタムテンプレート
ご回答ありがとうございます!
丁寧にコードまで表記してくださり感謝です。。。
私、PHPはまったくダメなのですが、
ここかな~という箇所にコピペして、もともとのコード(titleの部分)削除して
実行してみました。
そうしたら、foreachの中にforeachが入っているのでリストに3件あると
3件、3件、3件という表示になってしまいました。(表示自体は出来ました!)
いろいろと削除したり、付け加えたりしてみたのですが、結局うまくいかずです・・・。
公式ページの動画とはバージョンが違うのでうまくいかないのかなぁ・・・。
もう少し粘ってみます、ありがとうございました。
Re: ページリストのカスタムテンプレート
$title = $cobj->getCollectionName();
$renewdate = $cobj->getCollectionDateLastModified('Y年m月d日');
$link = $nh->getLinkToCollection($cobj);
この3行を追加すればすっきりするかもです。
同じforeachを2度呼び出す必要は無いと思いますので。
$titleはかぶるかもなので、その場合は同じものはいらないのでひとつだけにしましょう。
気が向いたら検証してみるといいと思います。
動画観ていないのでどんな説明変わりませんができたようでよかったです。
Re: Re: ページリストのカスタムテンプレート
concrete5 も php つい1ヶ月前に始めたばかりの初心者です。
バージョン5.6.3.1です。
ページリストに日付を付けたいと思い、あれこれやっていますがうまくいきません。
fantaさんがうまくできたやり方をやってみたいと思っているのですが、理解できずです。
「foreach の外にakiさんのコードをコピペ」
「もともとのコードで不要な箇所」
の部分です。
「foreach の外」
とは具体的にどこの部分ですか?
akiさんのコードは、
$titlr = $cobj ・・・
$renewdate = $cobj ・・・
$link = $nh ・・・ ($cobj);
の3行のコードだと思います。
「もともとのコードで不要な箇所」
はどのコードですか?
ご教授よろしくお願いします。
Re: ページリストのカスタムテンプレート
完璧ではありませんが、自己解決しました。
以下、解決方法を書いておきます。
1.
page_list フォルダの view.php 22行目から24行目を見ると以下のように記述しています。
//Other useful page data...
//$date = $page->getCollectionDatePublic(DATE_APP_GENERIC_MDY_FULL);
上記の24行目から // を削除以下のようになります。
$date = $page->getCollectionDatePublic(DATE_APP_GENERIC_MDY_FULL);
2.
54行目から57行目は以下のように記述しています。
<h3 class="ccm-page-list-title">
<a href="<?php echo $url ?>" target="<?php echo $target ?>"><?php echo $title ?></a>
</h3>
<div class="ccm-page-list-description">
この</h3>の次の行に
<div class="published"><?php echo $date ?></div>
を挿入します。
以上で、ページリストに日付(Y年m月d日)が入り、その下にディスクリプションが表示されるようになりました。
aki
Re: ページリストのカスタムテンプレート
検証していないので動くかわかりませんが・・・
foreach ($cArray as $cobj):このforeach内で
$renewdate = $cobj->getCollectionDateLastModified('Y年m月d日');
と変数に当てはめて <?php echo t($renewdate); ?>で呼び出したらできそうな・・・
自分だったらこんな感じでやると思います。
最後に、view.phpはUTF8で保存してありますか?
■■ 参考コード ■■
<?php
foreach ($cArray as $cobj):
$title = $cobj->getCollectionName();
$renewdate = $cobj->getCollectionDateLastModified('Y年m月d日');
$link = $nh->getLinkToCollection($cobj);
?>
[ 更新日:<?php echo t($renewdate); ?> ] <a href="<?php echo $link; ?>"><?php echo $title; ?></a>
<?php endforeach; ?>