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


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

Настройка вывода тизеров


Сообщений в теме: 5

#1 lipar94

lipar94

Отправлено 21 November 2013 - 16:17

Мне нужно сделать вот какую штуку. Отображение тизеров на титульной странице каталога и отображение тизеров на странице просмотра категории должны отличаться друг от друга. Единственное, что я смог сделать это вот что. Нашел teaser.php, отвечающий за отображение на титульной и в категориях, создал его копию teaser2.php и подредактировал xml-файлы. Вот что получилось в итоге.

c0a5a76504c9.png

Как несложно догадаться изменение Teaser2 ничего не дает.

Мой вопрос такой: Как сделать так, чтобы на странице просмотра категории срабатывало отображение из Teaser2.

 

Заранее благодарю.



#2 SmetDenis

SmetDenis

Отправлено 23 November 2013 - 07:44

Сделать два отдельных шаблона - это удобно для админа, но сложно в реализации.

Т.к Zoo резервирует шаблон teaser практически железобетонно.

 

Поэтому предлагаю более простой способ, хоть и не самый красивый.

 

Внутри шаблона teaser.php нужно сделать условие

<?php
$currentView = $this->app->jbrequest->get('view', 'category');
$currentTask = $this->app->jbrequest->get('task', 'category');
 
if ($currentView == 'frontpage' || $currentTask == 'frontpage') {
     // вывод позиций и шаблона для титульной страницы
} else {
    // вывод позиций для любой категории
}

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



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


#3 lipar94

lipar94

Отправлено 23 November 2013 - 11:09

Не очень понял ваше решение... Может мы друг-друга недопоняли...

Если бы это было обычное Zoo, то я бы действовал так:

1.frontpage.php
Там где подключается вывод материалов:
if (count($this->items)) {
    $itemstitle = $this->application->getParams()->get('content.items_title');
    echo $this->partial('items', compact('itemstitle'));
}

Код выше заменить на этот:

if (count($this->items)) {
    $page = true; //Создаем новый параметр
    $itemstitle = $this->application->getParams()->get('content.items_title');
    echo $this->partial('items', compact('itemstitle','page')); //Передаю тут дополнительный параметр, который создали выше
}

2. _items.php

foreach ($this->items as $item) {
    echo $this->partial('item', compact('item','page'));  //Передаем дальше новый параметр
}

3. _item.php

Делаем поверку:

if ($page) echo $this->renderer->render('item.'.$type.'.teaser2', array('view' => $this, 'item' => $item));
else echo $this->renderer->render('item.'.$type.'.teaser', array('view' => $this, 'item' => $item));

4. Создаем копию teaser.php и называем ее teaser2.php и описываем его в xml-ках

5. Настраиваем teaser2 из админки как хотим.
 
Помогите, пожалуйста, написать аналог для JBZoo.


#4 timpnz

timpnz

Отправлено 04 December 2015 - 10:10

Добрый день! Тоже по этой же теме, но немного не понял... Я создал в типах в "Выод шаблона" дополнительные шаблоны Ulkit. Fullarticle и Teaserarticle. что бы выводить в них другой вид материалов со своими элементами. Но вот ни как не пойму как привязать их в вывод на сайте. Допустим есть категория "Новости" ну и сами новости в этой категории, как мне вывести эти новости с набором элементов в шаблоне Fullarticle и Teaserarticle? Может это тоже самое на что Вы уже ответили, но чот ни как не пойму...


Сообщение отредактировал timpnz: 04 December 2015 - 10:12

  • 0

#5 woodman

woodman

Отправлено 05 December 2015 - 15:09

1. Попробуйте переименовать их просто в full и teaser

2. Покажите структуру новосозданных каталогов/файлов в templates\uikit\renderer\item

3. Покажите файл positions.xml, может ошибки в именах

4. Скрин админки с новыми типами тоже можно глянуть

 

Возможно, у Вас уже созданы full и teaser и Вы в этот же тип добавили Fullarticle и Teaserarticle? Если так, то, мне кажется, проще создать другой тип и в нем заполнить те же full и article иначе.


Сообщение отредактировал woodman: 05 December 2015 - 15:11

  • 1

#6 green-admin

green-admin

Отправлено 15 January 2016 - 13:44

    1. <?php
    2. $currentView = $this->app->jbrequest->get('view', 'category');
    3. $currentTask = $this->app->jbrequest->get('task', 'category');
    4.  
    5. if ($currentView == 'frontpage' || $currentTask == 'frontpage') {
    6.      // вывод позиций и шаблона для титульной страницы
    7. } else {
    8.     // вывод позиций для любой категории
    9. }
     

 

У меня таким способом всё получилось. На главной товары без кнопки, а в категориях с кнопкой. До этого пробовал способом описанным в статье УСЛОВИЯ В ШАБЛОНАХ МАТЕРИАЛОВ ZOO/JBZOO, но не получилось, так как там определяется является ли страница категорией и если не является то значит это главная. Однако когда в категории много товаров и они не умещаются на одну страницу, то вторая страница уже не определяется как категория и товары показываются так же как на главной.

Так что если кому надо на главной вывести несколько товаров с видом отличающимся от вида в категориях то данный способ подходит лучше чем тот что в статье.


Сообщение отредактировал green-admin: 15 January 2016 - 16:55

  • 0




Click to return to top of page in style!