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


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

Ограничение списка категорий для тизера


Лучший Ответ SmetDenis , 28 January 2014 - 21:58

Прошу прощения за долгий ответ.

 

Попробуйте обрамить вывод списка категории условием

 

if (!$this->app->jbrequest->get('item_id')) { // условие, если это не детальная страница full
 
}

 

Вот еще пару альтернативных вариантов.

1. Сделать копию элемента и назвать её не itemcategory, а itemcategoryteser

Везде, где есть название "itemcategory" заменить новым, включая имена файлов и классов.

 

2. Добавить новую опцию в элемент.

В файл itemcategory.xml в блок <params group="render"> ... </params>

Добавьте 

<param name="teaser_mode" type="radio" default="0" label="Teaser mode">
    <option value="0">JNO</option>
    <option value="1">JYES</option>
</param>

 

1u4_200x0.png

 

Затем в месте, где выводится список категорий используйте опцию следующим образом

 

if ($params->get('teaser_mode', 0)) {
    $result = $this->app->element->applySeparators($params->get('separated_by'), $values);
    if( strlen($result) < 150 ) return $result;
    return substr($result, 0, 150) . "...";
 
} else {
    return $this->app->element->applySeparators($params->get('separated_by'), $values);
}
 

Чтобы не возникло проблем с обновлением, вы можете положить копию элемента сюда

media\zoo\applications\jbuniversal\elements\

 

Он подхватится автоматически.

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


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

#1 linkz

linkz

Отправлено 27 January 2014 - 16:55

Мне нужно ограничить вывод перечня категорий только для тизера. В моем случае строку, где сепаратор - запятая.

 

Где обрезать строку категорий в общем, я вроде понял:

 

поправить метод render в media\zoo\elements\itemcategory\itemcategory.php

$result = $this->app->element->applySeparators($params->get('separated_by'), $values);
		if( strlen($result) < 150 ) return $result;
		return substr($result, 0, 150) . "...";

Само собой, в full тоже все обрежется. Подскажите, как реализовать? 


  • 0

#2 linkz

linkz

Отправлено 28 January 2014 - 21:21

Прошло больше суток, все молчат, что не так в моем вопросе?)  Или это нереально сделать.


  • 0

#3 SmetDenis

SmetDenis

Отправлено 28 January 2014 - 21:58   Лучший Ответ

Прошу прощения за долгий ответ.

 

Попробуйте обрамить вывод списка категории условием

 

if (!$this->app->jbrequest->get('item_id')) { // условие, если это не детальная страница full
 
}

 

Вот еще пару альтернативных вариантов.

1. Сделать копию элемента и назвать её не itemcategory, а itemcategoryteser

Везде, где есть название "itemcategory" заменить новым, включая имена файлов и классов.

 

2. Добавить новую опцию в элемент.

В файл itemcategory.xml в блок <params group="render"> ... </params>

Добавьте 

<param name="teaser_mode" type="radio" default="0" label="Teaser mode">
    <option value="0">JNO</option>
    <option value="1">JYES</option>
</param>

 

1u4_200x0.png

 

Затем в месте, где выводится список категорий используйте опцию следующим образом

 

if ($params->get('teaser_mode', 0)) {
    $result = $this->app->element->applySeparators($params->get('separated_by'), $values);
    if( strlen($result) < 150 ) return $result;
    return substr($result, 0, 150) . "...";
 
} else {
    return $this->app->element->applySeparators($params->get('separated_by'), $values);
}
 

Чтобы не возникло проблем с обновлением, вы можете положить копию элемента сюда

media\zoo\applications\jbuniversal\elements\

 

Он подхватится автоматически.


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



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


#4 linkz

linkz

Отправлено 29 January 2014 - 12:55

Благодарю, шикарные способы!

 

Создавать еще один itemcategoryteser элемент, по-моему, немного жирно будет), но как раз из-за этого способа возник вопрос:

 

В teaser.php например, вызывается рендер позиции, а где править сам шаблон вывода элемента в позиции, то как выглядит альтернативная метка - не могу найти. Не подскажите, где?


  • 0

#5 SmetDenis

SmetDenis

Отправлено 29 January 2014 - 13:25

Видимо вы говорите про стили позиции?
Тогда посмотрите это http://forum.jbzoo.c...h-ispolzovanie/
  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



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


#6 linkz

linkz

Отправлено 29 January 2014 - 14:37

Да, ознакомился. Изначально не понял, почему вывод в teaser и full одного и того же выглядит по-разному. Теперь понял, что стили у разных позиций уже заданы были.

 

И последний вопрос, нужно отсеять некоторые категории на этапе формирования строки категорий.

Тогда как мне в itemcategory.php можно:

  • получить уровень вложенности категории (чтобы перечислять только подкатегории)
  • ну или на крайний случай - id категории 

  • 0

#7 SmetDenis

SmetDenis

Отправлено 31 January 2014 - 14:34

Посмотрите API, как работать с моделями.
http://forum.jbzoo.c...enta-zoo-jbzoo/

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



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


#8 linkz

linkz

Отправлено 01 February 2014 - 17:38

Спасибо, разобрался. Можно закрывать тему  :)


  • 0




Click to return to top of page in style!