連投失礼します。
上記の流れで、bIDからブロックをインスタンス化するにはどうすればいいでしょうか?
インスタンス化し、そのブロックの中のcontroller.phpの中にあるメソッドをコールしたいのです。
Re: 特定ページで使用しているブロックのID取得
2015年10月23日 at 16:30
たまたまconcrete5のDB見ていたので調べました。
見ていたのがc5.7.5.2になるので、5.6系では事情が違うかもしれませんが。
CollectionVersionBlocksテーブル内に、cIDとcvID(ページバージョン)を絞り込めば、どのbIDがどのエリアに配置されているかが確認できました。
あとは、BlocksテーブルでbIDとbtIDを対比すれば、どのエリアにどのブロックタイプのブロックが置かれているかわかりますね。
Re: Re: 特定ページで使用しているブロックのID取得
2015年10月27日 at 8:06
私自身はそういう使い方をしたことがないので
的確な答えになってるかどうかわかりませんが、
下記URLをご参考になさってはいかがでしょうか
http://www.concrete5.org/community/forums/customizing_c5/get-first-block-in-area-then-get-that-blocks-data/
上記コードでは特定のエリアから最初ブロックを抽出していますが、Block::getByID()で、bIDを決め打ちにすれば、そのブロックのオブジェクトが取れると思います。
的確な答えになってるかどうかわかりませんが、
下記URLをご参考になさってはいかがでしょうか
http://www.concrete5.org/community/forums/customizing_c5/get-first-block-in-area-then-get-that-blocks-data/
$blocksInArea = Page::getCurrentPage()->getBlocks('Main');
$block = Block::getByID($blocksInArea[0]->bID);
var_dump($block->getInstance()->title);
上記コードでは特定のエリアから最初ブロックを抽出していますが、Block::getByID()で、bIDを決め打ちにすれば、そのブロックのオブジェクトが取れると思います。
Your post has been saved and will be published after approval by the forum moderator.
わんたん
Re: Re: Re: 特定ページで使用しているブロックのID取得
CollectionVersionBlocksテーブルを確認したところ、出来そうでした。
>ブロックタイプとおっしゃってますが、ブロックタイプのIDは、btIDです。
>特定のcIDに存在するbtIDごとのbIDを確認したい、そういうことですか?
おっしゃる通りです。
自身で使うブロックタイプを開発中でして、デバッグするのに必要でした。