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


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

Доработка шаблона модуля Zoo Comment


Лучший Ответ zeus07 , 02 May 2016 - 08:53

Итак, хотел бы подытожить результат этой темы. 

 

1. Получение имени айтема.

Для этого необходим вот такой код 

<?php 
   $item = $comment->getItem(); //получаем объект item
   echo '<a href="' . $zoo->route->item($item) . '">' . $item->name . '</a>'; //вывод ссылки на item
?>

2. Получение изображения из айтема.

<?php 
   $item = $comment->getItem(); //получаем объект item
   $element = $item->getElement('<здесь ID элемента с картинкой>'); //получаем элемент, содержащий картинку
   $data = (array)$element->data(); // получаем данные и преобразуем в массив
?>
        
   <img src="<?php echo $data['file']; ?>" alt="<?php echo $item->name; ?>" /> // вывод картинки

Надеюсь, что подобная инструкция многим поможет.

Перейти к сообщению


  • Закрытая тема Тема закрыта
Сообщений в теме: 31

#21 Cheren-dow

Cheren-dow

Отправлено 27 April 2016 - 18:50

zeus07, используйте jbdump - по мима того что он выведет данные, вы еще сможете узнать доступные методы. Белый экран скорей всего из-за того что объект очень большой. jbdump в этом должен вам помочь.


  • 0
Изображение
 

#22 zeus07

zeus07

Отправлено 27 April 2016 - 19:03

zeus07, используйте jbdump - по мима того что он выведет данные, вы еще сможете узнать доступные методы. Белый экран скорей всего из-за того что объект очень большой. jbdump в этом должен вам помочь.

 

Спасибо, сейчас попробую, раньше не приходилось его использовать. 

Итак, я в папке с файлом slider.php создал папку jbdump и залил в неё файлы проекта. 

И в самом файле slider.php его подключаю таким образом 

include 'jbdump/init.php';

Это правильно? А то пишет ошибку 

Fatal error: Call to undefined function jbdump() in /home/artcolor/artcolorit.com/terra/templates/terrastudy/html/mod_zoocomment/slider.php on line 36

Функцию вызываю таким образом 

jbdump($item);

  • 0

#23 SmetDenis

SmetDenis

Отправлено 28 April 2016 - 07:06

Просто подключите файл с классом.
  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#24 zeus07

zeus07

Отправлено 28 April 2016 - 10:40

Спасибо, разобрался! Подключился JB Dump - действительно очень удобная штука!

 

В итоге, мне надо получить строку http://c2n.me/3xuh8cN, но выборка по типу получается не срабатывает...


  • 0

#25 SmetDenis

SmetDenis

Отправлено 28 April 2016 - 11:16

Решение в лоб будет выглядеть так

 

$file = $item->elements->find('ELEMENT_ID.file', 'картинка/по/умолчанию.jpg'); // find с помощью точки может идти по вложенности

 

Более правильное решение я описывал выше.


  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#26 zeus07

zeus07

Отправлено 28 April 2016 - 11:25

Да, возможно тот метод более правильный, но смотрите, дело в том, что из него невозможно получить адрес расположения картинки: http://c2n.me/3xuqP6j - тут просто нет этой информации


  • 0

#27 Cheren-dow

Cheren-dow

Отправлено 28 April 2016 - 18:01

zeus07, если вы обратитесь к data() элемента вы получите массив данных. Об этом уже писал Денис

$elData = (array)$element->data();

И в API это подробно расписано.


  • 0
Изображение
 

#28 zeus07

zeus07

Отправлено 28 April 2016 - 18:09

zeus07, если вы обратитесь к data() элемента вы получите массив данных. Об этом уже писал Денис

$elData = (array)$element->data();

И в API это подробно расписано.

 

У меня на эту строку всё время ругается, уже выше говорил об этом 

Fatal error: Call to a member function data() on a non-object in /home/artcolor/artcolorit.com/terra/templates/terrastudy/html/mod_zoocomment/slider.php on line 36

  • 0

#29 Cheren-dow

Cheren-dow

Отправлено 28 April 2016 - 18:17

У меня на эту строку всё время ругается, уже выше говорил об этом 

Так вы через $item->getElement() не получаете объект элемента что бы уже из него извлекать данные. Все возможные способы мы вам уже показали.


  • 0
Изображение
 

#30 zeus07

zeus07

Отправлено 28 April 2016 - 20:41

Сделал вот таким образом 

$element = $item->getElement('deca412b-7465-4862-8197-5eede1d986a4'); 
$data = (array)$element->data(); // получаем данные
jbdump($data);

Удаётся получать массив. Как мне получить содержимое первого элемента массива?  

Просто если обратиться таким образом 

jbdump($data[0]);

То выдаёт NULL. 


  • 0




Click to return to top of page in style!