1. Tworzymy folder pluginu oraz podstawową strukturę plików
Tworzymy folder "nasz_plugin" w ścieżce ./app/plugins/Tworzymy strukturę folderów
- ./app/plugins/pluginname/config/
- ./app/plugins/pluginname/controller/
- ./app/plugins/pluginname/model/
- ./app/plugins/pluginname/resources/
- ./app/plugins/pluginname/templates/
2. Tworzymy pliki konfiguracyjne
W folderze ./app/plugins/nasz_plugin/config/ tworzymy odpoiwednie plikiconfig.php - plik zawiera dodatkowe stałe które system doklei do naszego konfigu
css.ini - plik zawiera tabele plikó css które mają byćdodane do loadera zasobów, system zaincluduje je w odpowiednim miejscu w widoku. Ważne jest to aby klucz (to co jest po lewej stronie) było unikalne, cyferki mówią o kolejności łądowania zasobów.
1.pluginname.bootstrap = "{$HOME}app/plugins/pluginname/resources/css/bootstrap.min.css" 2.pluginname.bootstrapext = "{$HOME}app/plugins/pluginname/resources/css/bootstrap-extends.css" 3.pluginname.icons = "{$HOME}app/plugins/pluginname/resources/css/icons.css"
W templacie wywołujemy następujący kod aby załadować CSSy
{foreach resourceManager::loadAdminCSS() as $cssFile} {$cssFile}?ver={config::get('revision')} {/foreach}
js.ini - analogicznie jak css.ini z tym że dotyczy plików javascript
1.pluginname.jquery = "{$HOME}app/plugins/pluginname/resources/js/jquery.js" 2.pluginname.jqueryui = "{$HOME}app/plugins/pluginname/resources/js/jquery-ui.js"
W templacie wywołujemy następujący kod aby załadować JSy
{foreach resourceManager::loadAdminJS() as $jsFile} {$jsFile}?ver={config::get('revision')}" {/foreach}
router.ini - plik zawiera strukturę ścieżek oraz definicjie jaka ścieżka do czego ma się odwoływać
[/pluginpath/] name=pluginmain controller=pluginController [/pluginpath/#action/] name=pluginmain-action controller=pluginController [/pluginpath/#action/#id/] name=pluginmain-action-id controller=pluginController
3. Tworzymy kontrolery
Tworzymy plik kontrolera w odpowiednim folderze w naszym pluginie
- ./app/plugins/pluginname/controller/ - dla normalnych kontrolerów
- ./app/plugins/pluginname/controller/do/ - dla kontrolerów do wykonywania akcji
- ./app/plugins/pluginname/controller/ajax/ - dla kontrolerów wywoływanych przez ajax
Przykładowa zawartość naszego kontrolera
Class pluginController Extends htmlController { public function smartyGo() { parent::smartyGo(); $this->smarty->template_dir = array_merge(array( __SITE_PATH . '/app/plugins/pluginname/templates/', __SITE_PATH . '/app/plugins/wp/templates/mail/'),$this->smarty->template_dir); $this->smarty->left_delimiter = "{"; $this->smarty->right_delimiter = "}"; $this->smarty->assign('TEMPLATE_HOME',HOME.'/app/plugins/pluginname/templates/'); $this->smarty->assign('TEMPLATE_PATH',__SITE_PATH . '/app/plugins/pluginname/templates/'); } public function index() { $pagesDB = new pagesDB(); $this->smarty->assign('pagesDB',$pagesDB); $this->pageDisplay('main.tpl'); } }
UWAGA! Bardzo istotne jest aby dodać do naszego kontrolera roszeżenie metody smartyGo i określenie w niej ścieżek do naszego folderu z templatami
4. Tworzymy widok
Tworzymy plik z roższeżeniem *.tpl w folderze z widokami, zgodnie z tym co zadeklarowaliśmy ./app/plugins/pluginname/templates/main.tplDo tworzenia widoków używamy silnika SMARTY, jest oczywiście możliwość wykonywania pluginów bez żadnego silnika templatów oraz bez extendowania kontrollera po kontrolerze html i wykonywania własnych widoków na dowolnym systemie.
W naszym kontrolerze zawsze możemy wykorzystywać metody z WinduCORE.