Są dwa sposoby, aby zintegrować system szablonów OPT z frameworkiem Kohana. Pierwszy, łatwiejszy i zarazem bardziej elegancki, nie wymaga żadnych modyfikacji w OPT - należy ściągnąć OPT i umieścić go w katalogu system/vendor/opt. Tworzymy również katalog application/templates, a w nim katalogi _compile oraz _cache.
Poniżej prezentuję zaś kod, który zmusi nasz OPT do działania:
define ('OPT_DIR', SYSPATH .'vendor/opt/');
require (SYSPATH .'vendor/opt/opt.class.php');
$this->opt = new OptClass;
$this->opt->root = APPPATH .'templates/';
$this->opt->compile = APPPATH .'templates/_compile/';
$this->opt->cache = APPPATH .'templates/_cache/';
$this->opt->plugins = OPT_DIR .'plugins/';
I od tegoż momentu możemy już korzystać z naszego $this->opt.
Drugi sposób na uruchomienie Open Power Template z KohanaPHP to taka modyfikacja OPT, aby był częścią frameworka (dokładniej: biblioteką). Zaletą takiego rozwiązania jest to, że nie trzeba niczego “require’ować” (wystarczy tylko $this->opt = new Opt;). Utrudnieniem są jednak aktualizacje OPT - trzeba na nowo modyfikować pliki. Poniżej przedstawiam rozwiązanie krok po kroku:
- Rozpakować wszystkie pliki oprócz opt.class.php do system/libraries/opt
- Rozpakować plik opt.class.php w system/libraries i nadać mu nazwę Opt.php (z wielkiej litery)
- Linie 69-72:
{
define('OPT_DIR', './');
}
zamienić na:
if(!defined('OPT_DIR'))
{
$docroot = pathinfo(str_replace('\\', '/', realpath(__FILE__)));
define('OPT_DIR', $docroot['dirname']. '/opt/');
} - Linia 144: class optClass zamienić na class Opt_Core
Tak, jak w pierwszym rozwiązaniu, muszą oczywiście istnieć katalogi application/templates/_compile oraz _cache.
Takim sposobem posiadamy rozbudowany system szablonów OPT w frameworku Kohana.


4 responses so far ↓
Zyx // maja 15, 2008 at 10:03
No, tych miejsc do zmiany nazwy klasy jest więcej - we wszystkich interfejsach zdefiniowanych w opt.class.php metody “setOptInstance()” mają rzutowanie typów, lecz poza tym (na szczęście dla modyfikatorów :)) wszystko wydaje się być OK.
Nowaker // maja 15, 2008 at 10:57
Zintegrowałem OPT z Kohaną tym drugim sposobem już w grudniu i od tamtego czasu do dziś dzień nie było żadnych błędów :) Ale racja, w definicjach funkcji zadeklarowano typ optClass i w przypadku wywołania tej funkcji powinna się zrobić kicha. Przyjrzę się dokładniej kodowi źródłowemu i poprawię.
eXtreme // maja 25, 2008 at 19:18
Nie lepiej zrobić klasę Opt_Core extends optClass? Wtedy byłoby najlepiej bo byłoby i zintegrowane “ładnie” z kohaną, i nie trzeba by modyfikować kodu samej bilbioteki (którą możnaby umieścić.. gdziekolwiek) :P
Nowaker // maja 25, 2008 at 19:38
Opt_Core extends optClass to jeszcze inny sposób, nie wpadłem na niego. Acz najlepszy jest i tak ten pierwszy sposób, nie wymaga modyfikacji, ani też tworzenia nowej klasy dziedziczącej po optClass :)
Leave a Comment