Добрый день! Несмотря на то, что у разработчиков есть и более критичные баги на повестке дня, хочу обратить внимание на следующий баг.
Есть мультиязычный сайт: стандартная настроенная мультиязычность 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. В начале шаблона сделал вывод языка:
При отработке видно что язык выбирается правильно.
3. Добавил еще вот так в начало страницы:
В начале страницы константы выводятся так же, как и внутри скриптованного таба.
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)); ?>
Сообщение отредактировал Станислав: 10 April 2015 - 20:36