Лучший Ответ SmetDenis , 19 February 2016 - 08:36
Добрый день,
Думаю, можно оптимизировать вывод используя стили позиции
http://jbzoo.ru/docs/position-styles
Тогда все элементы будут в одной позиции и использовать стиль pipe
Перейти к сообщению
Лучший Ответ SmetDenis , 19 February 2016 - 08:36
Добрый день,
Думаю, можно оптимизировать вывод используя стили позиции
http://jbzoo.ru/docs/position-styles
Тогда все элементы будут в одной позиции и использовать стиль pipe
Перейти к сообщению
Отправлено 18 February 2016 - 19:38
делаю фильтр материалов в категории
http://205095.alexmi...eden-tours.html
параметры некоторых элементов присваиваются дата атрибутам строки
и скриптом из атрибутов формируются селекты.........
вопрос к специалистам PHP
$filter1 = null;
$filter2 = null;
$filter3 = null;
if ($this->checkPosition('filter1') AND strlen($this->renderPosition('filter2')) > 2) {
$filter1 = trim($this->renderPosition('filter1'));
}
if ($this->checkPosition('filter2') AND strlen($this->renderPosition('filter2')) > 2) {
$filter2 = trim($this->renderPosition('filter2'));
}
if ($this->checkPosition('filter3') AND strlen($this->renderPosition('filter3')) > 2) {
$filter3 = trim($this->renderPosition('filter3'));
}
$vid = $filter1 . $filter2 . $filter3;
<tr
<?php if ($vid): ?>
data-vid="<?php echo $vid; ?>"
<?php endif; ?>
в каждой из позиций может быть несколько элементов
разделитель у них "|"
вывод выглядит так "Семьи с детьми | По стране"
если данные есть в двух позициях, то вывод получается такой
"Семьи с детьми | По странеАктивный"
переменная с атрибутами $vid = $filter1 . $filter2 . $filter3; состоит из нескольких переменных
получается что между $filter1 и $filter2 отсутствует разделитель
я могу всунуть туда разделитель так $vid = $filter1 . '|' . $filter2 . $filter3;
но это тоже нормально работать не будет
ВОПРОС В ТОМ как туда правильно всунуть разделитель между переменными
Отправлено 19 February 2016 - 08:32
$filter = array();
if ($this->checkPosition('filter1') AND strlen($this->renderPosition('filter1')) > 2) {
$filter[] = trim($this->renderPosition('filter1'));
}
if ($this->checkPosition('filter2') AND strlen($this->renderPosition('filter2')) > 2) {
$filter[] = trim($this->renderPosition('filter2'));
}
if ($this->checkPosition('filter3') AND strlen($this->renderPosition('filter3')) > 2) {
$filter[] = trim($this->renderPosition('filter3'));
}
$vid = implode(" | ", $filter);
решил таким образом, теперь корректно работает
Отправлено 19 February 2016 - 08:36 Лучший Ответ
Добрый день,
Думаю, можно оптимизировать вывод используя стили позиции
http://jbzoo.ru/docs/position-styles
Тогда все элементы будут в одной позиции и использовать стиль pipe
— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.
Отправлено 19 February 2016 - 08:51
спасибо, Денис
очень познавательная статья
у меня в настройках шаблона вывода элемента, в качестве разделителя указан pipe
но в данном случае мне нужно объединить вывод трех элементов
получается что в таком случае вывод будет выглядеть так
"(элем1)значение 1 | (элем1)Значение 2(элем2)значение 1 | (элем2)Значение 2 "
между Значением 2 элемента 1
и Значением 1 второго элемента не будет нужного мне разделителя
Отправлено 19 February 2016 - 08:56
Так стили позиции как раз и нужны для вашего случая, т.е когда мы выводим несколько элементов в одной позиции.
В вашем случае должен справиться style => "pipe"
Либо можно сделать свой стиль на его основе.
— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.
Отправлено 19 February 2016 - 09:15
http://delfa.loc/cou...tvia-tours.html
получается такая бяка
Семьи с детьми |
| Круизы
если отсутствуют некоторые позиции(один из элементов пустой)
Отправлено 19 February 2016 - 09:20
Как я говорил - "либо можно сделать свой стиль на его основе".
Просто нужно дополнительное условие вокруг $element->render(). У вас это strlen() > 2
components\com_zoo\renderer\element\pipe.php
На самом деле это просто более лаконичое решение. Делает тоже само что и у вас.
— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.
Отправлено 19 February 2016 - 09:42
да. я понял,
strlen() > 2 в шаблоне вывода срабатывать не будет, там в любом случае длинна строки будет больше 2, если хотя бы один из элементов содержит информацию
спасибо, за мыслю ![]()
сделаю собственный стиль, нужно использовать в большей мере функционал, который предоставляют разработчики