日付、カテゴリ、タイトルでリスト表示

ブログの記事一覧表示をさせたいのですが、
xxxx年xx月xx日 カテゴリ名 タイトル
xxxx年xx月xx日 カテゴリ名 タイトル
xxxx年xx月xx日 カテゴリ名 タイトル



ということは可能でしょうか?
日付、カテゴリ、タイトルでそれぞれ何かしらもhtmlタグもつけたいです。
(CSSでレイアウトの変更や色などの記述ができるように)
ページリストでもカテゴリの選択肢はなかったようでしたので、質問をさせていただきました。
バージョンは最新を使用しています。
テーマを作成したことはありますが、phpのコードを自ら記述したりの理解は難しい状態です。

宜しくお願い致します

@LINC こんにちは。

ページリスト一覧にカテゴリ表示をすることは可能ですが、若干の PHP の記述が必要になります。
CSS, HTML の知識があれば、そんなにいろいろ覚える必要はないと思います。

ページリストブロックにブロックテンプレートを追加し、テンプレートにカテゴリ表示を追加することで可能です。

以下にサンプルコードを貼っておきます。

「category」というハンドル名のトピック属性を使っている場合です。

以下のコードをページリストブロックのテンプレートにいれることで、span class='category' で挟まれた形で出力されます。

 $topics = $page->getAttribute('category');
  if (count($topics) && is_array($topics)) {
      foreach($topics as $topic) {
          echo "<span class='category'>" . $topic->getTreeNodeDisplayName() . "</span>";
      }
  }

どこにコードを入れればいいのかわからない場合は、サンプルコードを教えてもらえると、具体的にどこに入れるべきか、お教えできます。

ありがとうございます。

このコードは、
/concrete/blocks/page_list/
のview.php内でカテゴリ名を表示させたい箇所に挿入という認識であっていますでしょうか?
/concrete/blocks/page_list/templates
にファイルを設けるということでしょうか?

知識がところどころで認識じゅうぶんではないと思いますので、お手数をおかけして申し訳ないです。
/application/blocks
にコピーした方がよいでしょうか?

concreteCMSのバージョンは最新
サーバはエックスサーバ
テーマはatomik(現在は動作確認だけでとくに何もいじっていません)です。

1 Like

@LINC

このコードは、
/concrete/blocks/page_list/
のview.php内でカテゴリ名を表示させたい箇所に挿入という認識であっていますでしょうか?
/concrete/blocks/page_list/templates
にファイルを設けるということでしょうか?

/concrete/blocks/page_list/view.php
のファイルを
/application/blocks/page_list/XXX
にコピーをしてカスタマイズしてください。

カスタマイズの種類:デフォルト全部か一部か

全部の場合

/application/blocks/page_list/view.php
だと、デフォルトのページリストの出力がこちらのファイルに上書きされます。

一部の場合

デフォルトの表示はそのままキープして、
サイトの一部だけの表示を変えたい場合に、「ブロックテンプレート」(旧名カスタムテンプレート)を作ります。
/application/blocks/page_list/templates/任意の半角英数字.php

「任意の半角英数字」の部分がブロックテンプレート名になります。

/concrete フォルダの中は Concrete CMS のコアパッケージのコードが入っているため、ここの中のコードを修正するのはできるだけ避けたほうがいいです。

CMS をアップデートする際、/concrete フォルダがすべて置き換えられてしまうので、アップデート時にカスタマイズがなくなってしまいます。そのため Concrete CMS では、application 領域を作って、そのサイト特有の修正をアップグレード後でも保持しやすくしています。

次に、入れる場所についても質問があれば、お気兼ねなく聞いてください。

連絡が遅くなり申し訳ありません。
/application/blocks/page_list/view.php
にatomikのview.phpをアップし、いろんなところにコードを挿入してみましたが、うまくいきませんでした。
このあたりのどこかではないかと思ったのですが、ご教授お願い致します。

Reply忘れていました。
急ぎませんのでお時間のあるときにでもお願い致します。

@LINC おっと。返信遅れました。
すいません、なんのエディタを使われていますか。
行数がわかる様なスクリーンショットや、コードを直接コピペしてもらえると、何行目にこれをいれてくださいとアドバイスしやすいです。

参考になるコードの一覧は僕の Qiita の記事にある程度まとめています。

まず、画像で貼り付けられていないその前の箇所に、いろいろ情報を取得し、データを整理しているところがあります。そこで、以下の処理を加えてみてください。

あと、日付の希望のフォーマットを教えてください。例えば 2023/03/20 のようなフォーマットであると

$dateHelper = \Core::make('helper/date');
$date = $c->getAttribute('【ページ属性のハンドル】');
$date = $dateHelper->formatCustom('Y/m/d', $date);

で $date の変数に日付が入ります。そうして、実際の HTML で出力したい場所に <?=$date;?> をいれます。

カテゴリ名用のページ属性はなにを使っていますか?
カテゴリをトピックで設定している場合は

$topics = $c->getAttribute('【ページ属性のハンドル】');
$topic="";
if (is_array($topics)) {
    $topic = $topics[0]->getTreeNodeDisplayName();
}

そうして、実際の HTML で出力したい場所に <?=$topic;?> をいれると、トピック名が表示されます。

よろしくお願いします。