Добрый день! Несмотря на то, что у разработчиков есть и более критичные баги на повестке дня, хочу обратить внимание на следующий баг.
Есть мультиязычный сайт: стандартная настроенная мультиязычность Joomla + ZOOLingual для контента ZOO/JBZoo.
Все работает прекрасно за исключением заголовков табов в шаблоне full, которые созданы по примерам в документации. Шаблон приложения - UIKit.
Например, текущий язык сайта английский
1. После первого открытия страницы с табами заголовки отображаются нормально
Properties | Gallery
2. После переключения языка на русский
JBZOO_ITEM_TAB_PROPS | JBZOO_ITEM_TAB_GALLERY
3. После обновления страницы (без переключения языка) заголовки становятся нормальными.
Характеристики | Галерея
Что проверялось.
а) Отключил все кеширование и минификацию: в Joomla, в шаблоне, в самом JBZoo, системный плагин кеша отключен. Сторонних приблуд для кеширования нет. В итоге в кеше остается только jbzoo_assets и jbzoo_currency - результат тот же.
2. В начале шаблона сделал вывод языка:
$lang =& JFactory::getLanguage(); echo "Current language is: " . $lang->getName();
При отработке видно что язык выбирается правильно.
3. Добавил еще вот так в начало страницы:
echo "JBZOO_ITEM_TAB_PROPS = " . JText::_('JBZOO_ITEM_TAB_PROPS')
В начале страницы константы выводятся так же, как и внутри скриптованного таба.
4. Потом решил принудительно переинициализировать языковой файл JBZoo как это делается при инициализации приложения, добавив в начало:
$zoo = App::getInstance('zoo'); $zoo->system->language->load('com_jbzoo', $zoo->path->path('applications:jbuniversal'), null, true);
Вот после этого все заработало, как должно и без принудительной перезагрузки страницы, но сами понимаете - инциализировать новый инстанс приложения и наново загружать язык на каждой странице - это не выход.
Что делать, куда копать? Или как исключить определенную часть вывода из кэша JBZoo, так как я все-таки подозреваю, что дело именно в нем. Повторяется вне зависимости от релиза, начиная с самых ранних.
На всякий случай привожу код шаблона full:
<?php /** * JBZoo App is universal Joomla CCK, application for YooTheme Zoo component * * @package jbzoo * @version 2.x Pro * @author JBZoo App http://jbzoo.com * @copyright Copyright (C) JBZoo.com, All rights reserved. * @license http://jbzoo.com/license-pro.php JBZoo Licence * @coder Sergey Kalistratov <kalistratov.s.m@gmail.com> */ // no direct access defined('_JEXEC') or die('Restricted access'); $tabsId = uniqid('jbzoo-tabs-'); $align = $this->app->jbitem->getMediaAlign($item, $layout); echo $this->renderPosition('title', array('style' => 'jbtitle')); ?> <div class="uk-grid"> <div class="uk-width-1-1"> <?php if ($this->checkPosition('image')) : ?> <div class="item-image uk-align-<?php echo $align; ?>"> <?php echo $this->renderPosition('image'); ?> </div> <?php endif; ?> <?php if ($this->checkPosition('text')) : ?> <div class="item-text"> <?php echo $this->renderPosition('text'); ?> </div> <?php endif; ?> <div class="uk-clearfix"></div> <?php if ($this->checkPosition('list')) : ?> <div class="item-price"> <?php echo $this->renderPosition('list'); ?> </div> <?php endif; ?> </div> </div> <div class="uk-clearfix"></div> <?php if ($this->checkPosition('tab-properties') || $this->checkPosition('tab-gallery') || $this->checkPosition('tab-reviews') ) : $positionParams = array( 'style' => 'jbblock', 'tag' => 'div', 'labelTag' => 'h3', 'clear' => true ); ?> <div class="tab-container uk-panel uk-panel-box uk-article-divider"> <ul class="uk-tab" data-uk-tab="{connect:'#<?php echo $tabsId; ?>'}"> <?php if ($this->checkPosition('tab-properties')) : ?> <li><a href="#tab-properties"><?php echo JText::_('JBZOO_ITEM_TAB_PROPS'); ?></a></li> <?php endif; ?> <?php if ($this->checkPosition('tab-gallery')) : ?> <li><a href="#tab-gallery"><?php echo JText::_('JBZOO_ITEM_TAB_GALLERY'); ?></a></li> <?php endif; ?> <?php if ($this->checkPosition('tab-reviews')) : ?> <li><a href="#tab-reviews"><?php echo JText::_('JBZOO_ITEM_TAB_REVIEWS'); ?></a></li> <?php endif; ?> </ul> <ul id="<?php echo $tabsId; ?>" class="uk-switcher uk-margin"> <?php if ($this->checkPosition('tab-properties')) : ?> <li id="tab-properties"> <table class="uk-table uk-table-hover uk-table-striped uk-table-condensed"> <?php echo $this->renderPosition('tab-properties', array('style' => 'jbtable', 'tooltip' => 1)); ?> </table> <div class="clear clr"></div> </li> <?php endif; ?> <?php if ($this->checkPosition('tab-gallery')) : ?> <li id="tab-gallery"> <?php echo $this->renderPosition('tab-gallery', $positionParams); ?> <div class="clear clr"></div> </li> <?php endif; ?> <?php if ($this->checkPosition('tab-reviews')) : ?> <li id="tab-reviews"> <?php echo $this->renderPosition('tab-reviews', $positionParams); ?> <div class="clear clr"></div> </li> <?php endif; ?> </ul> </div> <?php endif; ?> <?php echo $this->renderPosition('related', array('style' => 'jbblock', 'labelTag' => 'h2', 'clear' => true)); ?>
Edited by Станислав, 10 April 2015 - 20:36.