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


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

Ошибка при использовании расширений от 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 всю функцию
public function dispatch()
    public function dispatch()
    {
        $this->_init();

        $ctrlRequest = $this->app->request->get('controller', 'word', 'default');
        $ctrlRequest = str_replace('jbuniversal', '', $ctrlRequest);

        $ctrlName = $ctrlRequest;

if($ctrlName == 'zoovirtue'){
 		// load switcher for a controllers
				// register plugin path
		if ($path = $this->app->path->path( 'root:plugins/system/zoovirtue/' ) ) {
			$this->app->path->register($path, 'zoovirtue');
		}
		$controller = $this->app->path->path('zoovirtue:controllers/controller.php');	
		if (JFile::exists($controller)) require ($controller);
 

}
if($ctrlName == 'zlframework'){
		// register plugin path
		$plg_path = $this->app->joomla->isVersion('1.5') ? 'plugins/system/zlframework/' : 'plugins/system/zlframework/zlframework/';
		if ( $path = $this->app->path->path( 'root:'.$plg_path ) ) {
			$this->app->path->register($path, 'zlfw');
		}
		// register controllers
		if ( $path = $this->app->path->path( 'zlfw:controllers/' ) ) {
			$this->app->path->register( $path, 'controllers' );
		}
}

else {

        // get current controller
        if ($this->app->jbenv->isSite()) {
            $newControllerPath     = $this->app->path->path('jbzoo:/controllers/' . $ctrlRequest . '.php');
            $defaultControllerPath = JPATH_COMPONENT_SITE . DS . 'controllers' . DS . $ctrlRequest . '.php';
        } else {
            $this->app->jbtoolbar->toolbar();
            $newControllerPath     = $this->app->path->path('jbzoo:/controllers/admin.' . $ctrlRequest . '.php');
            $defaultControllerPath = JPATH_COMPONENT_ADMINISTRATOR . DS . 'controllers' . DS . $ctrlRequest . '.php';
        }

        // check is override controller exists
        if ($newControllerPath && JFile::exists($newControllerPath)) {
            $ctrlName = $ctrlRequest . $this->getGroup();

            // set and dispatch it
            $this->app->request->set('controller', $ctrlName);

            require_once($newControllerPath);

        } else {
            require_once($defaultControllerPath);

        }
}

        $this->app->jbdebug->mark('application::dispatch::before');
        $this->app->dispatch($ctrlName);
        $this->app->jbdebug->mark('application::dispatch::after');
    
}

  • 0

#4 Павел

Павел

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

небольшие правки:
   public function dispatch()
    {
        $this->_init();

        $ctrlRequest = $this->app->request->get('controller', 'word', 'default');
        $ctrlRequest = str_replace('jbuniversal', '', $ctrlRequest);

        $ctrlName = $ctrlRequest;

if($ctrlName == 'zoovirtue'){
 		// load switcher for a controllers
				// register plugin path
		if ($path = $this->app->path->path( 'root:plugins/system/zoovirtue/' ) ) {
			$this->app->path->register($path, 'zoovirtue');
		}
		if ( $path = $this->app->path->path( 'zoovirtue:controllers/' ) ) {
			$this->app->path->register( $path, 'controllers' );
		}
}
if($ctrlName == 'zlframework'){
		// register plugin path
		$plg_path = $this->app->joomla->isVersion('1.5') ? 'plugins/system/zlframework/' : 'plugins/system/zlframework/zlframework/';
		if ( $path = $this->app->path->path( 'root:'.$plg_path ) ) {
			$this->app->path->register($path, 'zlfw');
		}
		// register controllers
		if ( $path = $this->app->path->path( 'zlfw:controllers/' ) ) {
			$this->app->path->register( $path, 'controllers' );
		}
}

if (!$ctrlName == 'zlframework' or !ctrlName == 'zoovirtue') {

        // get current controller
        if ($this->app->jbenv->isSite()) {
            $newControllerPath     = $this->app->path->path('jbzoo:/controllers/' . $ctrlRequest . '.php');
            $defaultControllerPath = JPATH_COMPONENT_SITE . DS . 'controllers' . DS . $ctrlRequest . '.php';
        } else {
            $this->app->jbtoolbar->toolbar();
            $newControllerPath     = $this->app->path->path('jbzoo:/controllers/admin.' . $ctrlRequest . '.php');
            $defaultControllerPath = JPATH_COMPONENT_ADMINISTRATOR . DS . 'controllers' . DS . $ctrlRequest . '.php';
        }

        // check is override controller exists
        if ($newControllerPath && JFile::exists($newControllerPath)) {
            $ctrlName = $ctrlRequest . $this->getGroup();

            // set and dispatch it
            $this->app->request->set('controller', $ctrlName);

            require_once($newControllerPath);

        } else {
            require_once($defaultControllerPath);

        }
}

       $this->app->jbdebug->mark('application::dispatch::before');
       $this->app->dispatch($ctrlName);
       $this->app->jbdebug->mark('application::dispatch::after');
    
}

  • 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() на приведенную ниже:
    public function dispatch()
    {
        $this->_init();

        $ctrlRequest = $this->app->request->get('controller', 'word', 'default');
        $ctrlRequest = str_replace('jbuniversal', '', $ctrlRequest);

        $ctrlName = $ctrlRequest;

        // get current controller
        if ($this->app->jbenv->isSite()) {
            $newControllerPath     = $this->app->path->path('jbzoo:/controllers/' . $ctrlRequest . '.php');
            $defaultControllerPath = JPATH_COMPONENT_SITE . DS . 'controllers' . DS . $ctrlRequest . '.php';
        } else {
            $this->app->jbtoolbar->toolbar();
            $newControllerPath     = $this->app->path->path('jbzoo:/controllers/admin.' . $ctrlRequest . '.php');
            $defaultControllerPath = JPATH_COMPONENT_ADMINISTRATOR . DS . 'controllers' . DS . $ctrlRequest . '.php';
        }

        // check is override controller exists
        if ($newControllerPath && JFile::exists($newControllerPath)) {
            $ctrlName = $ctrlRequest . $this->getGroup();

            // set and dispatch it
            $this->app->request->set('controller', $ctrlName);

            require_once($newControllerPath);

        } else {
				if($ctrlName == 'zoovirtue'){
					$defaultControllerPath = JPATH_SITE . DS . 'plugins' . DS . 'system'. DS . 'zoovirtue'. DS . 'controllers' . DS . 'controller'. '.php';
				}
				if($ctrlName == 'zlframework'){
					$defaultControllerPath = JPATH_SITE . DS . 'plugins' . DS . 'system'. DS . 'zlframework' . DS .'zlframework'. DS . 'controllers' . DS . 'zlframework'. '.php';
				}
		
            require_once($defaultControllerPath);

        }

       $this->app->jbdebug->mark('application::dispatch::before');
       $this->app->dispatch($ctrlName);
       $this->app->jbdebug->mark('application::dispatch::after');
    
}

  • 0

#7 Артём

Артём

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

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!