Ta strona używa ciasteczek (cookies), dzięki którym nasz serwis może działać lepiej. Dowiedz się więcej Rozumiem

Tworzenie pluginu

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 pliki

config.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
Nasz plik zgodnie z routerem powinien mieć nazwę: pluginController.class.php a pełna ścieżka do pliku ./app/plugins/pluginname/controller/pluginController.class.php


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.tpl

Do 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.

Centrum pomocy

Masz problem techniczny?

Poradniki wideo