Форум русской поддержки Joomla!® CMS
10.12.2016, 03:16:57 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

ZOO (JBZoo) Как получить значение самописного элемента по его ID и поместить его в title

 (Прочитано 740 раз)
0 Пользователей и 1 Гость смотрят эту тему.
anorov
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 3


« : 18.12.2014, 17:33:43 »

Предыстория:
Показать текстовый блок
Задача: вытащить в title наименование товара, содержащиеся в самописном элементе с ID типа b456a760-7544-4bb8-ada2-4562cb55acbc
Почитав похожие темы, например http://joomlaforum.ru/index.php/topic,288287.0.html, ничего путного я не нашел. Выпадала та же ошибка, а ответа там я не получил.

Кароче говоря, мой способ выйти из ситуации:

Нужный элемент помещаем в специально созданную позицию.
В переменную засовываем значение этой позиции.
Делаем с ней, что считаем нужным.

Вот такой вот код я засунул в шаблон вывода материала
Код:
$mytitle = $this->renderPosition('title');
$doc = JFactory::getDocument();
$doc->setTitle($mytitle);

Вот такой вот идиотский способ.  Roll Eyes
Может быть есть способ получить эти данные более приемлемым способом?

Теги: Element ID, Fatal error: Call to a member function getElement() on a non-object in
Записан
anorov
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 3


« Ответ #1 : 26.05.2016, 13:42:27 »

Снова всплыла эта тема, но первоначальное решение уже не канало.

Задача: на картинках товаров на странице категории генерировать различные alt и title в зависимости от названия товара.

Проблема: на странице категории нельзя выводить позицию какого-то конкретного элемента каталога, а картинки надо подписывать каждую по-своему.

Решение: т.к. так и не смог найти толкового решения по добыванию самописного элемента по ID, написал свой хелпер (как добавлять хелпер написано тут http://jbzoo.ru/docs/basic-api-jbzoo-and-zoo).

Код вызова процедуры:
Код:
$elements = $this->getItem()->elements;  // получаем значения всех дополнительных самописных элементов в виде строки
$itemName = $this->app->myhelper->getElementByID($elements,'ID_самописного_элемента');

Код процедуры внутри хелпера:
Код:
public function getElementByID($elements,$elementID) {

$forDelete = array("\n","\t"); // удаляем переносы и табуляции
$elements = str_replace($forDelete,"",$elements);

preg_match_all('/'.$elementID.'(.*?)value\":.\"(.*?)\"/',$elements,$matches);  // выдергиваем значение элемента

$str = strtoupper($matches[2][0]);

$value = strtr($str, array("\U0430"=>"а", "\U0431"=>"б", "\U0432"=>"в",
"\U0433"=>"г", "\U0434"=>"д", "\U0435"=>"е", "\U0451"=>"ё", "\U0436"=>"ж", "\U0437"=>"з", "\U0438"=>"и",
"\U0439"=>"й", "\U043A"=>"к", "\U043B"=>"л", "\U043C"=>"м", "\U043D"=>"н", "\U043E"=>"о", "\U043F"=>"п",
"\U0440"=>"р", "\U0441"=>"с", "\U0442"=>"т", "\U0443"=>"у", "\U0444"=>"ф", "\U0445"=>"х", "\U0446"=>"ц",
"\U0447"=>"ч", "\U0448"=>"ш", "\U0449"=>"щ", "\U044A"=>"ъ", "\U044B"=>"ы", "\U044C"=>"ь", "\U044D"=>"э",
"\U044E"=>"ю", "\U044F"=>"я", "\U0410"=>"А", "\U0411"=>"Б", "\U0412"=>"В", "\U0413"=>"Г", "\U0414"=>"Д",
"\U0415"=>"Е", "\U0401"=>"Ё", "\U0416"=>"Ж", "\U0417"=>"З", "\U0418"=>"И", "\U0419"=>"Й", "\U041A"=>"К",
"\U041B"=>"Л", "\U041C"=>"М", "\U041D"=>"Н", "\U041E"=>"О", "\U041F"=>"П", "\U0420"=>"Р", "\U0421"=>"С",
"\U0422"=>"Т", "\U0423"=>"У", "\U0424"=>"Ф", "\U0425"=>"Х", "\U0426"=>"Ц", "\U0427"=>"Ч", "\U0428"=>"Ш",
"\U0429"=>"Щ", "\U042A"=>"Ъ", "\U042B"=>"Ы", "\U042C"=>"Ь", "\U042D"=>"Э", "\U042E"=>"Ю", "\U042F"=>"Я")
); // преобразуем все это барахло в русский текст (латиница и знаки приезжают в нормальном виде)

return $value;
    }

Процедура написана для элемента с типом текст. Для остальных типов пишется аналогично. Какие есть поля у элемента можно посмотреть в MySQL zoo_item -> elements.
У меня работает, может и кому-то поможет.
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet