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


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

Поддержка Zoolingual в сравнении продуктов

zoolingual сравнение compare хак

В этой теме нет ответов

#1 Станислав

Станислав

Отправлено 03 April 2017 - 21:55

Доброго времени суток.

Не прошло и два года, как тема поддержки многоязычности Zoolingual в сравнении продуктов стала не просто хотелкой, а насущной необходимостью. Наверное, это единственный функционал в связке JBZoo & Zoolingual, который не заработал "из коробки", но его отсутствие достаточно неприятно для многоязычного сайта. Для понимания изменений (а для кого-то и в плане обучения) я разместил в коде комментарии, которые безусловно можно удалить.

Итак, наш пациент:

media/zoo/applications/jbuniversal/framework/render/compare.php

а именно функция getPositionData

  1. public function getPositionData($position, $type, $appId, $forceLayout = null)
  2. {
  3. if (!$forceLayout) {
  4. $forceLayout = $this->_layout;
  5. }
  6.  
  7. $app = $this->app->table->application->get($appId);
  8. $path = $app->getGroup() . '.' . $type . '.' . $forceLayout;
  9. $config = $this->getConfig('item')->get($path);
  10.  
  11. if ($config) {
  12. $positions = $config[$position];
  13. $plugin = JPluginHelper::getPlugin('system', 'zoolingual'); // Если установлен и активирован плагин ZOOLingual
  14. if ($plugin != NULL) {
  15. $lang = JFactory::getLanguage(); // Получаем тег выбранного языка
  16. $tag = $lang->getTag();
  17. $delete_keys = array(); // Элементы для удаления
  18. foreach ($positions as $key => $pos) { // Для каждого элемента перебираем набор атрибутов
  19. if (array_key_exists("zoolingual", $pos)) { // Если есть атрибут многоязычности ZOOLingual
  20. $langs = $pos["zoolingual"]["_languages"]; // Определяем назначеные элементу языки
  21. if (!in_array($tag, $langs)) { // Если выбранного языка в списке назначенных нет, то
  22. array_push ($delete_keys, $key); // добавляем элемент на удаление
  23. }
  24. }
  25. }
  26. // И после завершения перебора всех элементов, удаляем не подходящие по языку
  27. $positions = array_diff_key($positions, array_flip($delete_keys));
  28. }
  29. return isset($config[$position]) ? $positions : array();
  30. }
  31. return array();
  32. }

P.S. Очень хотелось бы увидеть это изменение кода в ядре JBZoo, чтобы не заниматься патчами при обновлениях.


  • 3

«Ну и зачем все это, лучше бы водки выпили». Из писем Белинского Гоголю.

 






Темы с аналогичным тегами zoolingual, сравнение, compare, хак

Click to return to top of page in style!