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


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

Доработка шаблона модуля 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

#11 SmetDenis

SmetDenis

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

Переменная комментария $comment существует? 


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



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


#12 zeus07

zeus07

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

В общем разобрался, но вот ругается на функцию data ();

print_r((array)$element->data());

  • 0

#13 SmetDenis

SmetDenis

Отправлено 18 April 2016 - 10:00

Значит элемент не был найден.


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



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


#14 zeus07

zeus07

Отправлено 18 April 2016 - 10:05

Хм, странно конечно. 

Вот давайте приведу весь код шаблона, наверное так будет проще: 

<?php if (count($comments)) : ?>

<div data-uk-slideset="{small: 1, medium: 3, large: 4, autoplay: true, pauseOnHover: true, autoplayInterval: 5000}">
    <div class="uk-slidenav-position">
        <ul class="uk-grid uk-slideset">
            <?php $i = 0; foreach ($comments as $comment) : ?>
                <?php // set author name
                    $author = $comment->getAuthor();
                    $author->name = $author->name ? $author->name : JText::_('COM_ZOO_ANONYMOUS');
                ?>
            <li class="<?php if ($author->isJoomlaAdmin()) echo 'uk-comment-byadmin'; ?> uk-comment-terra">
                <div class="row comment-main">
                    <div class="col-md-2 col-lg-1 col-sm-2 col-xs-2">
                        <?php $item = $comment->getItem();
                        	$elements = $item->getElementsByType('image');
				$element = $elements[0]; // вернется массив. берем первый элемент
				print_r((array)$element->data()); // смотрим
                        ?>
                    </div>
                    <div class="col-md-10 col-lg-11 col-sm-10 col-xs-2">
                        <?php $item = $comment->getItem();
                         echo '<a href="' . $zoo->route->item($item) . '">' . $item->name . '</a>'; ?>
                    </div>
                </div>
                <div class="row comment-main">
                    <div class="col-md-8 col-lg-8 col-sm-8 col-xs-12 author-name">
                        <?php if ($params->get('show_author', 1)) : ?>
                            <?php echo $author->name; ?>
                        <?php endif; ?>
                    </div>
                    <div class="col-md-4 col-lg-4 col-sm-4 col-xs-12 date">
                        <?php if ($params->get('show_meta', 1)) : ?>
                            <?php echo $zoo->html->_('date', $comment->created, $zoo->date->format(JText::_('ZOO_COMMENT_MODULE_DATE_FORMAT')), $zoo->date->getOffset()); ?>
                        <?php endif; ?>
                    </div>
                </div>
                <div class="row comment-main">
                    <div class="col-md-12 col-lg-12 col-sm-12 col-xs-12 comment-text">
                        <?php echo $zoo->comment->filterContentOutput($zoo->string->truncate($comment->content, $zoo->get('commentsmodule.max_characters'))); ?>
                    </div>
                </div>
                <div class="row comment-main">
                    <div class="col-md-12 col-lg-12 col-sm-12 col-xs-12">
                        <?php if ($params->get('show_meta', 1)) : ?>
                            <a class="comment-link" href="<?php echo JRoute::_($zoo->route->comment($comment)); ?>">Ссылка на комментарий</a>
                        <?php endif; ?>
                    </div>
                </div>
            
            
            </li>
            <?php $i++; endforeach; ?>
        </ul>
        <a href="" class="uk-slidenav uk-slidenav-previous" data-uk-slideset-item="previous"></a>
        <a href="" class="uk-slidenav uk-slidenav-next" data-uk-slideset-item="next"></a>
    </div>
</div>

<?php else : ?>
	<?php echo JText::_('COM_ZOO_NO_COMMENTS_FOUND'); ?>
<?php endif; ?>

  • 0

#15 zeus07

zeus07

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

Денис, подскажите пожалуйста, как всё-таки получить картинку элемента.


  • 0

#16 SmetDenis

SmetDenis

Отправлено 25 April 2016 - 13:52

Денис, подскажите пожалуйста, как всё-таки получить картинку элемента.

 

Очевидно не всегда есть элементы картинок в материалах

 

if ($elements = $item->getElementsByType('image')) {
    if (isset($elements[0])) {
        $element = $elements[0];             // вернется массив. берем первый элемент
        print_r((array)$element->data()); // смотрим
    }
}

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



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


#17 zeus07

zeus07

Отправлено 25 April 2016 - 13:57

Изображения есть в каждом айтеме. Но они выведены не через JB Image, а через стандартный Zoo Image.

 

Может из-за того, что там другой элемент, там синтаксис получения картинки немного другой должен быть? Или нет?


  • 0

#18 SmetDenis

SmetDenis

Отправлено 25 April 2016 - 14:17

в функции getElementsByType указывается тип элемента

JBZoo Image - jbimage

Zoo Image - image

 

Можно сделать две выборки а затем объединить массивы, а затем сделать проверку что элемент существует.


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



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


#19 zeus07

zeus07

Отправлено 27 April 2016 - 13:46

У меня что-то на это вообще никак не реагирует. 

 

Вот попытался вывести 

print_r($comment->getItem());

Просто белый экран, никаких ошибок не выдаёт (они включены), и соответственно никакую информацию не отображает...


  • 0

#20 zeus07

zeus07

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

В общем, очень интересно получается конечно...

 

Есть код: 

<div class="row comment-main">
                    <div class="col-md-2 col-lg-1 col-sm-2 col-xs-2">
                        <?php $item = $comment->getItem(); //если пробую вывести с помощью print_r($item); - белый экран при включённых ошибках
                        ?>
                    </div>
                    <div class="col-md-10 col-lg-11 col-sm-10 col-xs-2">
                        <?php $item = $comment->getItem();
                         echo '<a href="' . $zoo->route->item($item) . '">' . $item->name . '</a>'; ?>
                    </div>
                </div>

  • 0




Click to return to top of page in style!