на данный момент по умолчанию вывод в один столбец. А возможна ли настройка в несколько столбцов, в зависимости от необходимости, как в авто релейтидах?
или только править файлы? Тогда где и как
Связанные элементы - ручной выбор/ Возможна ли настройка вывода не в одbн столбец
#1
Posted 01 July 2016 - 06:53
#2
Posted 01 July 2016 - 09:28
Да возможна.
1. В файле ..\media\zoo\elements\relateditems\relateditems.xml добавляем в группу "render"параметры
<param name="columns" type="radio" default="0" label="JBZOO_RELATEDAUTO_COLUMNS" description="JBZOO_RELATEDAUTO_COLUMNS_DESC"> <option value="1">JBZOO_NUMBERS_1</option> <option value="2">JBZOO_NUMBERS_2</option> <option value="3">JBZOO_NUMBERS_3</option> <option value="4">JBZOO_NUMBERS_4</option> <option value="5">JBZOO_NUMBERS_5</option> <option value="6">JBZOO_NUMBERS_6</option> <option value="0">JBZOO_NOT_USE</option> </param>
2. В файле ..\media\zoo\elements\relateditems\relateditems.php заменяем функцию "render" на
public function render($params = array()) { // init vars $params = $this->app->data->create($params); $renderer = $this->app->renderer->create('item')->addPath(array($this->app->path->path('component.site:'), $this->_item->getApplication()->getTemplate()->getPath())); $items = $this->_orderItems($this->_getRelatedItems($params), $params->get('order')); // create output $layout = $params->get('layout'); $output = array(); foreach ($items as $item) { $path = 'item'; $prefix = 'item.'; $type = $item->getType()->id; if ($renderer->pathExists($path.DIRECTORY_SEPARATOR.$type)) { $path .= DIRECTORY_SEPARATOR.$type; $prefix .= $type.'.'; } if (in_array($layout, $renderer->getLayouts($path))) { $output[] = $renderer->render($prefix.$layout, array('item' => $item)); } elseif ($params->get('link_to_item', false) && $item->getState()) { $output[] = '<a href="'.$this->app->route->item($item).'" title="'.$item->name.'">'.$item->name.'</a>'; } else { $output[] = $item->name; } } $columns = $params->get('columns', 1); if ($columns > 0 && $params->get('layout', false)) { if ($layout = $this->getLayout()) { return self::renderLayout( $layout, array( 'items' => $output, 'columns' => $columns ) ); } } return $this->app->element->applySeparators($params->get('separated_by'), $output); }
3. В папке ..\media\zoo\elements\relateditems\tmpl создаём файл relateditems.php и пишем туда вот это
<?php // no direct access defined('_JEXEC') or die('Restricted access'); $count = count($items); if ($count) { $appParams = $this->getItem()->getApplication()->params; if ((int)$appParams->get('global.config.column_heightfix', 0)) { $this->app->jbassets->heightFix(); } echo '<div class="related-items related-items-col-' . $columns . ' clearfix">'; $j = 0; foreach ($items as $item) { $classes = array( 'rborder', 'column', 'width' . intval(100 / $columns) ); $first = ($j == 0) ? $classes[] = 'first' : ''; $last = ($j == $count - 1) ? $classes[] = 'last' : ''; $j++; $isLast = $j % $columns == 0; if ($isLast) { $classes[] = 'last'; } echo '<div class="' . implode(' ', $classes) . '">' . '<div class="jb-box">' . $item . '</div>' . '</div>'; } echo '</div>'; }
Edited by Evgeny_M, 01 July 2016 - 09:29.
#3
Posted 04 July 2016 - 06:00
спасибо, пробуем
#4
Posted 12 July 2018 - 21:09
Спасибо за решение! элементы выстраиваются в ряд. но в итоге наползают друг на друга( настройки прилагаю. Что я сделала не так?)
http://gspland.ru/im...6plusr500-5-egl
Да возможна.
1. В файле ..\media\zoo\elements\relateditems\relateditems.xml добавляем в группу "render"параметры
<param name="columns" type="radio" default="0" label="JBZOO_RELATEDAUTO_COLUMNS" description="JBZOO_RELATEDAUTO_COLUMNS_DESC"> <option value="1">JBZOO_NUMBERS_1</option> <option value="2">JBZOO_NUMBERS_2</option> <option value="3">JBZOO_NUMBERS_3</option> <option value="4">JBZOO_NUMBERS_4</option> <option value="5">JBZOO_NUMBERS_5</option> <option value="6">JBZOO_NUMBERS_6</option> <option value="0">JBZOO_NOT_USE</option> </param>2. В файле ..\media\zoo\elements\relateditems\relateditems.php заменяем функцию "render" на
public function render($params = array()) { // init vars $params = $this->app->data->create($params); $renderer = $this->app->renderer->create('item')->addPath(array($this->app->path->path('component.site:'), $this->_item->getApplication()->getTemplate()->getPath())); $items = $this->_orderItems($this->_getRelatedItems($params), $params->get('order')); // create output $layout = $params->get('layout'); $output = array(); foreach ($items as $item) { $path = 'item'; $prefix = 'item.'; $type = $item->getType()->id; if ($renderer->pathExists($path.DIRECTORY_SEPARATOR.$type)) { $path .= DIRECTORY_SEPARATOR.$type; $prefix .= $type.'.'; } if (in_array($layout, $renderer->getLayouts($path))) { $output[] = $renderer->render($prefix.$layout, array('item' => $item)); } elseif ($params->get('link_to_item', false) && $item->getState()) { $output[] = '<a href="'.$this->app->route->item($item).'" title="'.$item->name.'">'.$item->name.'</a>'; } else { $output[] = $item->name; } } $columns = $params->get('columns', 1); if ($columns > 0 && $params->get('layout', false)) { if ($layout = $this->getLayout()) { return self::renderLayout( $layout, array( 'items' => $output, 'columns' => $columns ) ); } } return $this->app->element->applySeparators($params->get('separated_by'), $output); }3. В папке ..\media\zoo\elements\relateditems\tmpl создаём файл relateditems.php и пишем туда вот это
<?php // no direct access defined('_JEXEC') or die('Restricted access'); $count = count($items); if ($count) { $appParams = $this->getItem()->getApplication()->params; if ((int)$appParams->get('global.config.column_heightfix', 0)) { $this->app->jbassets->heightFix(); } echo '<div class="related-items related-items-col-' . $columns . ' clearfix">'; $j = 0; foreach ($items as $item) { $classes = array( 'rborder', 'column', 'width' . intval(100 / $columns) ); $first = ($j == 0) ? $classes[] = 'first' : ''; $last = ($j == $count - 1) ? $classes[] = 'last' : ''; $j++; $isLast = $j % $columns == 0; if ($isLast) { $classes[] = 'last'; } echo '<div class="' . implode(' ', $classes) . '">' . '<div class="jb-box">' . $item . '</div>' . '</div>'; } echo '</div>'; }
#5
Posted 13 July 2018 - 03:57
Спасибо за решение! элементы выстраиваются в ряд. но в итоге наползают друг на друга( настройки прилагаю. Что я сделала не так?)
Пользуйтесь консолью разработчика гугл хром (правой кнопкой по элементу на странице и выбираем в контекстом меню "Посмотреть код"), к данному решению вопросов у Вас нет!
У Вас проблема в верстке, выше по дереву элементов если подниметесь
...... <div class="jb-row item-related"> <div class="width20"> вот это класс width20 вам портит внешний вид, его нужно убрать Аксессуары <div class="related-items related-items-col-5 clearfix"> ......
#6
Posted 13 July 2018 - 19:48
Пользуйтесь консолью разработчика гугл хром (правой кнопкой по элементу на странице и выбираем в контекстом меню "Посмотреть код"), к данному решению вопросов у Вас нет!
У Вас проблема в верстке, выше по дереву элементов если подниметесь
...... <div class="jb-row item-related"> <div class="width20"> вот это класс width20 вам портит внешний вид, его нужно убрать Аксессуары <div class="related-items related-items-col-5 clearfix"> ......Спасибо! Выручили=) Теперь все отлично. Только еще один маленький вопросик) У меня высота всех элементов одинаковая, я включила в настройках "JS фикс высоты колонок". Но эта опция не распространяется на строчку связанных товаров. Это можно как-то исправить? Или слишком сложно и лучше поиграться с названиями?))
#7
Posted 14 July 2018 - 07:54
Пользуйтесь консолью разработчика гугл хром (правой кнопкой по элементу на странице и выбираем в контекстом меню "Посмотреть код"), к данному решению вопросов у Вас нет!
У Вас проблема в верстке, выше по дереву элементов если подниметесь
...... <div class="jb-row item-related"> <div class="width20"> вот это класс width20 вам портит внешний вид, его нужно убрать Аксессуары <div class="related-items related-items-col-5 clearfix"> ......Спасибо! Выручили=) Теперь все отлично. Только еще один маленький вопросик) У меня высота всех элементов одинаковая, я включила в настройках "JS фикс высоты колонок". Но эта опция не распространяется на строчку связанных товаров. Это можно как-то исправить? Или слишком сложно и лучше поиграться с названиями?))
опять же советую учиться читать код со страницы, есть функция JBZooHeightFix, там указано для кого она отрабатывает
нужно у div c классом related-items добавить класс "items" или чуть выше
#8
Posted 14 July 2018 - 22:56
опять же советую учиться читать код со страницы, есть функция JBZooHeightFix, там указано для кого она отрабатывает
нужно у div c классом related-items добавить класс "items" или чуть выше
Спасибо! Не догадалась, что нужно добавить этот класс) Да, теперь все отлично работает.