Last active
September 22, 2017 00:32
-
-
Save YuzuruSano/568265f622fb266b2794 to your computer and use it in GitHub Desktop.
【concrete5 5.7〜】指定ページの指定エリアの指定ブロックを指定のテンプレートで出力する
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
use Concrete\Core\Block\View\BlockView; | |
$page = Page::getByID($pageID);//取得したいブロックのあるページID; | |
$areas = array(//取得したいエリアを配列で指定しておく | |
'area_01', | |
'area_02', | |
'area_03', | |
'area_04', | |
'area_05', | |
'area_06' | |
); | |
foreach($areas as $area){ | |
$blocks = $page->getBlocks($area); | |
if(is_array($blocks)){ | |
foreach($blocks as $block){ | |
if($block->btHandle == 'target_block_type'){//target_block_typeは取得したいブロックタイプを指定 | |
$_blocks[] = $block; | |
} | |
} | |
} | |
} | |
foreach($_blocks as $bo){ | |
//↓カスタムテンプレートの設定を上書きして保存してしまうので下記は非推奨かな。。。 | |
//$bo->setCustomTemplate('mytemplates'.php');//templates以下のviewテンプレートを.php付けて指定 | |
$bv = new BlockView($bo); | |
//基本は引数でテンプレートを指定 $bv->render('templates/my_template'); | |
//既にカスタムテンプレートが指定されている場合はそちらが優先される。 | |
//BlockViewクラスをオーバライドして引数指定を優先させることもできる | |
$bv->render('view'); | |
//今当たっているテンプレートを確実に当てたい時 | |
//use Concrete\Core\Block\View\BlockViewTemplate; | |
//$bvt = new BlockViewTemplate($bo); | |
//$templatepath = $bvt->getTemplate(); | |
//list($base, $block) = explode('blocks/', $templatepath); | |
//list($type, $template) = explode('/',$block); | |
//$bv = new BlockView($bo); | |
//$bv->render($template); | |
} | |
//contoller内のメソッドを指定して結果を取り出す場合 | |
foreach($_blocks as $bo){ | |
var_dump($bo->getInstance()->getEntries());//例:スライドショーブロックで登録した画像データ配列を取得 | |
} | |
//controller内でsetした変数を取り出す場合 | |
foreach($_blocks as $bo){ | |
$bc = $bo->getController(); | |
$bcc->view();//viewでセットした変数を | |
$sets = $bcc->getSets();//まるっと取得して | |
var_dump($sets['key']);//キー指定で取り出し | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment