Перейти к содержимому


Фотография
- - - - -

Ошибка при использовании расширений от zoolanders


  • Закрытая тема Тема закрыта
Сообщений в теме: 9

#1 seo-sokol

seo-sokol

Отправлено 06 May 2012 - 17:54

Здравствуйте, при использовании фреймворка от zoolanders, в JBzoo возникает ошибка:

/administrator/components/com_zoo\controllers\zlframework.php): failed to open stream: No such file or directory in /media/zoo/applications/jbuniversal/application.php on line 84
  • 0

#2 Павел

Павел

Отправлено 06 May 2012 - 20:19

Подобные ошибки возникают и при инициализации любого другого контроллера.
Warning: require_once(/components/com_zoo/controllers/zoovirtue.php): failed to open stream: No such file or directory in /media/zoo/applications/jbuniversal/application.php on line 84
  • 0

#3 Павел

Павел

Отправлено 06 May 2012 - 20:45

Пока разработчик спит пользуемся нашим костылем:
Заменяем в файлике \media\zoo\applications\jbuniversal\application.php всю функцию
  1. public function dispatch()
  1.     public function dispatch()
  2.     {
  3.         $this->_init();
  4.  
  5.         $ctrlRequest = $this->app->request->get('controller', 'word', 'default');
  6.         $ctrlRequest = str_replace('jbuniversal', '', $ctrlRequest);
  7.  
  8.         $ctrlName = $ctrlRequest;
  9.  
  10. if($ctrlName == 'zoovirtue'){
  11. // load switcher for a controllers
  12. // register plugin path
  13. if ($path = $this->app->path->path( 'root:plugins/system/zoovirtue/' ) ) {
  14. $this->app->path->register($path, 'zoovirtue');
  15. }
  16. $controller = $this->app->path->path('zoovirtue:controllers/controller.php');
  17. if (JFile::exists($controller)) require ($controller);
  18.  
  19. }
  20. if($ctrlName == 'zlframework'){
  21. // register plugin path
  22. $plg_path = $this->app->joomla->isVersion('1.5') ? 'plugins/system/zlframework/' : 'plugins/system/zlframework/zlframework/';
  23. if ( $path = $this->app->path->path( 'root:'.$plg_path ) ) {
  24. $this->app->path->register($path, 'zlfw');
  25. }
  26. // register controllers
  27. if ( $path = $this->app->path->path( 'zlfw:controllers/' ) ) {
  28. $this->app->path->register( $path, 'controllers' );
  29. }
  30. }
  31.  
  32. else {
  33.  
  34.         // get current controller
  35.         if ($this->app->jbenv->isSite()) {
  36.             $newControllerPath    = $this->app->path->path('jbzoo:/controllers/' . $ctrlRequest . '.php');
  37.             $defaultControllerPath = JPATH_COMPONENT_SITE . DS . 'controllers' . DS . $ctrlRequest . '.php';
  38.         } else {
  39.             $this->app->jbtoolbar->toolbar();
  40.             $newControllerPath    = $this->app->path->path('jbzoo:/controllers/admin.' . $ctrlRequest . '.php');
  41.             $defaultControllerPath = JPATH_COMPONENT_ADMINISTRATOR . DS . 'controllers' . DS . $ctrlRequest . '.php';
  42.         }
  43.  
  44.         // check is override controller exists
  45.         if ($newControllerPath && JFile::exists($newControllerPath)) {
  46.             $ctrlName = $ctrlRequest . $this->getGroup();
  47.  
  48.             // set and dispatch it
  49.             $this->app->request->set('controller', $ctrlName);
  50.  
  51.             require_once($newControllerPath);
  52.  
  53.         } else {
  54.             require_once($defaultControllerPath);
  55.  
  56.         }
  57. }
  58.  
  59.         $this->app->jbdebug->mark('application::dispatch::before');
  60.         $this->app->dispatch($ctrlName);
  61.         $this->app->jbdebug->mark('application::dispatch::after');
  62.    
  63. }

  • 0

#4 Павел

Павел

Отправлено 06 May 2012 - 21:11

небольшие правки:
  1.   public function dispatch()
  2.     {
  3.         $this->_init();
  4.  
  5.         $ctrlRequest = $this->app->request->get('controller', 'word', 'default');
  6.         $ctrlRequest = str_replace('jbuniversal', '', $ctrlRequest);
  7.  
  8.         $ctrlName = $ctrlRequest;
  9.  
  10. if($ctrlName == 'zoovirtue'){
  11. // load switcher for a controllers
  12. // register plugin path
  13. if ($path = $this->app->path->path( 'root:plugins/system/zoovirtue/' ) ) {
  14. $this->app->path->register($path, 'zoovirtue');
  15. }
  16. if ( $path = $this->app->path->path( 'zoovirtue:controllers/' ) ) {
  17. $this->app->path->register( $path, 'controllers' );
  18. }
  19. }
  20. if($ctrlName == 'zlframework'){
  21. // register plugin path
  22. $plg_path = $this->app->joomla->isVersion('1.5') ? 'plugins/system/zlframework/' : 'plugins/system/zlframework/zlframework/';
  23. if ( $path = $this->app->path->path( 'root:'.$plg_path ) ) {
  24. $this->app->path->register($path, 'zlfw');
  25. }
  26. // register controllers
  27. if ( $path = $this->app->path->path( 'zlfw:controllers/' ) ) {
  28. $this->app->path->register( $path, 'controllers' );
  29. }
  30. }
  31.  
  32. if (!$ctrlName == 'zlframework' or !ctrlName == 'zoovirtue') {
  33.  
  34.         // get current controller
  35.         if ($this->app->jbenv->isSite()) {
  36.             $newControllerPath    = $this->app->path->path('jbzoo:/controllers/' . $ctrlRequest . '.php');
  37.             $defaultControllerPath = JPATH_COMPONENT_SITE . DS . 'controllers' . DS . $ctrlRequest . '.php';
  38.         } else {
  39.             $this->app->jbtoolbar->toolbar();
  40.             $newControllerPath    = $this->app->path->path('jbzoo:/controllers/admin.' . $ctrlRequest . '.php');
  41.             $defaultControllerPath = JPATH_COMPONENT_ADMINISTRATOR . DS . 'controllers' . DS . $ctrlRequest . '.php';
  42.         }
  43.  
  44.         // check is override controller exists
  45.         if ($newControllerPath && JFile::exists($newControllerPath)) {
  46.             $ctrlName = $ctrlRequest . $this->getGroup();
  47.  
  48.             // set and dispatch it
  49.             $this->app->request->set('controller', $ctrlName);
  50.  
  51.             require_once($newControllerPath);
  52.  
  53.         } else {
  54.             require_once($defaultControllerPath);
  55.  
  56.         }
  57. }
  58.  
  59.       $this->app->jbdebug->mark('application::dispatch::before');
  60.       $this->app->dispatch($ctrlName);
  61.       $this->app->jbdebug->mark('application::dispatch::after');
  62.    
  63. }

  • 0

#5 SmetDenis

SmetDenis

Отправлено 07 May 2012 - 05:46

zoolanders видел только на картинках и издалека, нужно его изучать. Подписки на их последние версии у меня нет.
Так что пользуйтесь им и этим костылем в паре с JBZoo на свой страх и риск.

  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#6 Павел

Павел

Отправлено 08 May 2012 - 10:11

Рабочий вариант для подключения контроллеров, о которых не знает приложение JBZOO.
Ждем когда разработчик JBzoo предложит вариант без хака, а пока будем пользоваться этим решением.
Заменяем в файлике \media\zoo\applications\jbuniversal\application.php всю функцию public function dispatch() на приведенную ниже:
  1.     public function dispatch()
  2.     {
  3.         $this->_init();
  4.  
  5.         $ctrlRequest = $this->app->request->get('controller', 'word', 'default');
  6.         $ctrlRequest = str_replace('jbuniversal', '', $ctrlRequest);
  7.  
  8.         $ctrlName = $ctrlRequest;
  9.  
  10.         // get current controller
  11.         if ($this->app->jbenv->isSite()) {
  12.             $newControllerPath    = $this->app->path->path('jbzoo:/controllers/' . $ctrlRequest . '.php');
  13.             $defaultControllerPath = JPATH_COMPONENT_SITE . DS . 'controllers' . DS . $ctrlRequest . '.php';
  14.         } else {
  15.             $this->app->jbtoolbar->toolbar();
  16.             $newControllerPath    = $this->app->path->path('jbzoo:/controllers/admin.' . $ctrlRequest . '.php');
  17.             $defaultControllerPath = JPATH_COMPONENT_ADMINISTRATOR . DS . 'controllers' . DS . $ctrlRequest . '.php';
  18.         }
  19.  
  20.         // check is override controller exists
  21.         if ($newControllerPath && JFile::exists($newControllerPath)) {
  22.             $ctrlName = $ctrlRequest . $this->getGroup();
  23.  
  24.             // set and dispatch it
  25.             $this->app->request->set('controller', $ctrlName);
  26.  
  27.             require_once($newControllerPath);
  28.  
  29.         } else {
  30. if($ctrlName == 'zoovirtue'){
  31. $defaultControllerPath = JPATH_SITE . DS . 'plugins' . DS . 'system'. DS . 'zoovirtue'. DS . 'controllers' . DS . 'controller'. '.php';
  32. }
  33. if($ctrlName == 'zlframework'){
  34. $defaultControllerPath = JPATH_SITE . DS . 'plugins' . DS . 'system'. DS . 'zlframework' . DS .'zlframework'. DS . 'controllers' . DS . 'zlframework'. '.php';
  35. }
  36.             require_once($defaultControllerPath);
  37.  
  38.         }
  39.  
  40.       $this->app->jbdebug->mark('application::dispatch::before');
  41.       $this->app->dispatch($ctrlName);
  42.       $this->app->jbdebug->mark('application::dispatch::after');
  43.    
  44. }

  • 0

#7 Артём

Артём

Отправлено 10 May 2012 - 07:43

smet.denis сказал(а) 1336365978:

zoolanders видел только на картинках и издалека, нужно его изучать. Подписки на их последние версии у меня нет.
Так что пользуйтесь им и этим костылем в паре с JBZoo на свой страх и риск.

Денис, этот фреймворк бесплатен.
https://www.zoolande...em/zl-framework
Он нужен для продукции zoolanders. В промо-тексте призывают разработчиков использовать его для создания своих кастомных элементов или приложений. В комплекте так же есть элемент статического контента.

Не ясно сколько пользователей zoolanders здесь на форуме вообще и актуальна ли эта проблема.
  • 0
в ЛС не писать | коплю карму

#8 Павел

Павел

Отправлено 10 May 2012 - 12:51

В родном зуу сторонние контроллеры определенные данным образом работают без хаков.
В jbzoo не работают сторонние контроллеры - следовательно применяется ХАК, что в свое время противоречит основной цели JBzoo дать расширенный функционал без хаков.
  • 0

#9 SmetDenis

SmetDenis

Отправлено 10 May 2012 - 20:16

JBZoo работает без хаков. Т.е оригинальные файлы не нужно модифицировать, а сам Zoo без проблем можно обновлять. Работает практически на всей линейке Zoo 2.5.x

Еще раз говорю, то что вы решили скрестить два больших приложения (Zoolanders или что-то там еще) и столкнулись с кучей конфликтов то
это все на свой страх и риск, разбирайтесь сами.

Завтра выйдет еще какое-нибудь "народное" расширение для Zoo вроде корзины, интеграция с VM или вообще социальная сеть и оно тоже скорее всего не будет совместимо с JBZoo.

Не собираюсь подстраиваться под всех подряд. Только то что выпускает yootheme.com не более.
Либо если наберется оооочень много желающих работать совместно с Zoolanders (или что-то там еще), тогда возможно рассмотрю и то не факт.

PS Не нужно думать, что я не смотрел этот фреймворк. Знаком с творчеством этих ребят (и многих других, кто пишет для Zoo и Joomla). Очень со многими вещами не согласен.
  • -1
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#10 SmetDenis

SmetDenis

Отправлено 10 May 2012 - 20:18

Как я понял куски кода выше решают проблемы совместимости с Zoolanders
Сам не проверял, ничего не гарантирую. Опять же - "на свой страх и ..."
  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.





Click to return to top of page in style!