【環境情報】
・baserCMSのバージョン:5.0.15
・レンタルサーバー名:Xserver
・使用テーマ:BcThemeSample
・PHPスキル(自己評価):D
既に、どこかに出ていたらすいません。
baserCMS5のカスタムコンテンツでBlogの
ようなことは可能なのでしょうか?
それともやはりAPIでやるしか現状無いのでしょうか?
【環境情報】
・baserCMSのバージョン:5.0.15
・レンタルサーバー名:Xserver
・使用テーマ:BcThemeSample
・PHPスキル(自己評価):D
既に、どこかに出ていたらすいません。
baserCMS5のカスタムコンテンツでBlogの
ようなことは可能なのでしょうか?
それともやはりAPIでやるしか現状無いのでしょうか?
@aka123
こんにちは。
<?php $this->Blog->postContent( [$post] , $moreText , $moreLink , $cut ); ?>ようなことは可能なのでしょうか?
postContent()はブログの記事本文をwysiwygエディタのレイアウト通りにタグ付きで
取得するためのメソッドかと思われます。
似たようなことをカスタムコンテンツの項目の表示をできるか、
という質問になりますでしょうか。
差し支えなければ、カスタムコンテンツのこういうデータをこういう結果で表示したい等、
追加で頂けると、こちらとしても回答しやすいかもしれません。
よろしくお願いします
@aka123 こんにちは。カスタムコンテンツを追ってみたところ、こんな感じでできそうです
<?php echo $this->CustomContent->getFieldValue($customEntry, '{カスタムエントリーのフィールド名}'); ?>
カスタムコンテンツとして作成したあるフィールドの値を取得したい、という意図かなと思ったのですが、違うときはまたおっしゃってください
すいません、私が書いたHelperが間違いでした。
$this->BcBaser->blogPosts( $contentsName , $num , [$options] );
を実現する方法はございますか?
とお伺いしたかったです。
現在baserCMS 5系のカスタムコンテンツに
$this->BcBaser->blogPosts( $contentsName , $num , [$options] );
のような機能を持つメソッドは存在しません。
ちょっと難しいですが。
方法としては、使用テーマ専用のHelperなどを作成し、
(例 plugins/テーマ名/src/View/Helper/ThemeHelper.phpを作成)
/**
* カスタムエントリーの一覧を取得する
*
* @param entity or int $customContent
* @param int $num
* @param array $options
* @return mixed
*
* @checked
* @noTodo
* @unitTest
*/
public function getCustomEntries($customContent, int $num = 5, array $options = [])
{
// $customContentが entityId だった場合
if (is_integer($customContent)) {
$customContent = $this->getService(CustomContentsServiceInterface::class)->get($customContent, [
'status' => 'publish'
]);
}
$this->entriesService = $this->getService(CustomEntriesServiceInterface::class);
$this->entriesService->setup($customContent->custom_table_id);
$params = array_merge([
'contain' => ['CustomTables' => ['CustomContents' => ['Contents']]],
'status' => 'publish',
'order' => $customContent->list_order,
'direction' => $customContent->list_direction,
'limit' => $num
], $options);
return $this->entriesService->getIndex($params)->toList();
}
このような感じのメソッドを作成すると、
テーマファイル内で
$entries = $this->Theme->getCustomEntries(1, 5);
ID:1ので呼び出すことができ、
$entriesをループで回して表示できるように組込を行うことで対応は可能です。
ちなみにこのIDは「custom_contents」テーブルのidで、
「カスタムコンテンツ設定編集」画面のurlの末尾の数値と同じです。
例
/baser/admin/bc-custom-content/custom_contents/edit/1
注意
ヘルパー内で下記読み込みが必須です。
use BcCustomContent\Service\CustomContentsServiceInterface;
use BcCustomContent\Service\CustomEntriesServiceInterface;
@katokaisya
ご回答ありがとうございます。
標準ではないのですね承知しました。
baserCMS5のヘルパーの作り方も教えてもらいありがとうございます。
まだ、作成したことないのでこちらをみてチャレンジしてみたいと思います。
皆様、教えて頂きありがとうございました。