Dokumentacja techniczna
Jak używać aplikacji RiseNet CMS
Wtyczki mogą zostać umieszczone w zdefiniowanym placeholderze zarejestrowanego layoutu. Posiadają własną logikę, indywidualne parametry oraz widok. Każdy layout może posiadać dowolną ilość wtyczek, również tych samych. Wprowadzenie wtyczki do layoutu, możliwe jest porzez definicję layoutu podczas rejestracji lub przez panel administracyjny i przygotowane narzędzia.
Base_Layout::registerLayout($module, $filename, $is_edit = true, $placeholders = array() )
class TextPage_Bootstrap extends Base_Application_Module_Bootstrap { public function _initLayouts() { Base_Layout::registerLayout('TextPage', 'layout', true, array( 'left' => array(), 'main' => array(), )); } }
$module
- nazwa modułu$filename
- nazwa layoutu$is_edit
- czy layout może być edytowany i wykorzystywany w panelu administracyjnym$placeholders
- definicja placeholderów layoutuapplication/modules/text-page/layouts/scripts/layout.phtml
<?=$this->placeholder('layout_top')?> <div class="row-fluid"> <div class="span2"><?=$this->placeholder('left')?></div> <div class="span10"> <?=$this->layout()->content ?> <?=$this->placeholder('main')?> </div> </div> <?=$this->placeholder('layout_bottom')?>
Aby widget mógł zostać wykorzystany przez aplikację należy go zarejestrować
Base_Widget::registerWidget($widget, $type = "page")
Parametry
$widget
nazwa widgetu$type
typ widgetuPrzykład
<?php class Page_Bootstrap extends Base_Application_Module_Bootstrap { public function _initLayouts() { Base_Widget::registerWidget('Page_Widget_Wysiwyg'); } }
<?php class Page_Bootstrap extends Base_Application_Module_Bootstrap public function _initLayouts() { Base_Layout::registerLayout('Page', 'layout-home', true, array( 'main' => array(), 'box1' => array(), 'box2' => array(), 'box3' => array(), 'middle_left' => array(), 'middle_right' => array(), ) ); Base_Widget::registerWidget('Page_Widget_Wysiwyg'); Base_Widget::registerWidget('Page_Widget_Slider'); Base_Widget::registerWidget('Page_Widget_Box'); }
application/modules/page/layouts/scripts/layout-home.phtml
<?=$this->placeholder('layout_top')?> <div class="row-fluid"> <?=$this->placeholder('main')?> </div> <div class="row-fluid"> <div class="span4"> <?=$this->placeholder('box1')?> </div> <div class="span4"> <?=$this->placeholder('box2')?> </div> <div class="span4"> <?=$this->placeholder('box3')?> </div> </div> <div class="row-fluid"> <div class="span8"> <?=$this->placeholder('middle_left')?> </div> <div class="span4"> <?=$this->placeholder('middle_right')?> </div> </div> <?=$this->placeholder('layout_bottom')?>
<?php class Page_Bootstrap extends Base_Application_Module_Bootstrap { public function _initLayouts() { Base_Layout::registerLayout('Page', 'layout-home', true, array( 'main' => array('widgets' => array( array( '_class' => 'Page_Widget_Box', 'html' => '<p>html content</p>' ) )), 'box1' => array('widgets' => array( array( '_class' => 'Page_Widget_Login', ), array( '_class' => 'Page_Widget_LastNews', 'title' => 'Najnowsze artykuły', 'order' => 'title ASC', 'limit_on_page' => 10, ), array( '_class' => 'Page_Widget_ElementFromDb', 'id_element' => 23, ) )), ) ); } }
<?php class Page_Bootstrap extends Base_Application_Module_Bootstrap { public function _initLayouts() { Base_Layout::registerLayout('Page', 'layout-home', true, array( 'main' => array('widgets' => array( array( '_class' => 'Page_Widget_Box', 'title' => 'My First widget', 'html' => '<p>html content</p>' ) )), ) ); Base_Widget::registerWidget('Page_Widget_Box'); } }
application/modules/page/widgets/Box.php
application/modules/page/views/widgets/box.phtml
class Page_Widget_Box extends Base_Widget_Abstract{ public function getViewScriptsDir() { return __DIR__; } public function getRenderView() { return 'box.phtml'; } }
<h1><?=$this->params['title']?></h1> <p><?=$this->params['html']?><p>
protected function renderWidget()
class Page_Widget_Box extends Base_Widget_Abstract{ public function getViewScriptsDir() { return __DIR__; } public function getRenderView() { return 'box.phtml'; } protected function renderWidget() { $my_params = $this->params; ... $this->view->my_params = $my_params; } }
Panel administracyjny umożliwa przygotowanie indywidualnej strony, odróżniającej się układem i treścią od pozostałych podstron. Przykładem może być strona główna. Wystarczy wybrać i dodać przygotowane widgety poprzez przygotowane narzędzia. Możliwe jest przeciądanie pomiędzy blokami layoutu i zmiana kolejności widgetów.