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


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

Характеристики товара в виде таблицы


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

#1 daschinskii

daschinskii

Отправлено 25 May 2012 - 15:45

Приложение выводит характеристики товара в виде списка

Изображение

Что не очень красиво и наглядно.
А хотелось бы, что бы выводило в виде таблицы. К примеру вот так:

Изображение

Я понял что за вывод шаблона отвечает файл
media\zoo\applications\jbuniversal\templates\catalog\renderer\item\product\full.php
И за вывод харакетристик товара функция:
Изображение

Но как дальше делать не знаю. Подскажите кто нибудь, что и где нужно заменить.
Заранее спасибо.
  • 0

#2 SmetDenis

SmetDenis

Отправлено 25 May 2012 - 16:46

style='list' - это именно тот параметр, который отвечает за вывод нескольких элементов в одной позиции.
Различные стандартные стили можно посмотреть тут - components\com_zoo\renderer\element\
По аналогии думаю не сложно будет сделать и таблицу.







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



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


#3 Артём

Артём

Отправлено 26 May 2012 - 21:18

Моё решение, поправьте если нужно, уверен выглядит коряво, но работает замечательно.
Хотелось бы, чтобы это добро вошло в JBZOO, т.к. мешанину элементов сейчас читать очень плохо, а в каталогах нормальное дело несколько десятков параметров(radio/select/checkbox) у одного элемента(item).

Предлагаю вот так сделать:
Изображение

Создаём
\components\com_zoo\renderer\element\zebra.php
<?php

defined('_JEXEC') or die('Restricted access');

// create label
$label = '';
if (isset($params['showlabel']) && $params['showlabel']) {
	$label .= '<td>';
	$label .= ($params['altlabel']) ? $params['altlabel'] : $element->getConfig()->get('name');
	$label .= '</td>';
}

// create class attribute
$class = 'element element-'.$element->getElementType().' '.($params['first'] ? ' first' : '').($params['last'] ? ' last' : '');
?>

<tr>
	<?php echo $label.'<td>'.$element->render($params).'</td>'; ?>
</tr>

В шаблоне вывода (скорее всего это full.php, где ещё таблицам быть? ;))
        <? if ($this->checkPosition('tab-properties')) : ?>
            <div id="tab-properties">
			<table class="zebra" cellpadding="70" border="0">
                			<col width="60%" />			
				<tbody><?= $this->renderPosition('tab-properties', array('style' => 'zebra'));?></tbody>
			</table>	
            </div>
        <? endif; ?>

css таблицы у меня тоже назван zebra, но это просто так совпало. У меня шаблон от yootheme, я немного переделал tools.css, чтобы сделать таблички эргономичнее.
ul.zebra > li,
table.zebra tbody td { border-bottom: 1px solid #ddd; }
ul.zebra > li:first-child,
table.zebra tbody tr:first-child td { border-top: 1px solid #ddd; }

ul.zebra > li.odd,
table.zebra tbody tr.odd { background: #F4F4F4; }
ul.zebra > li:nth-of-type(odd),
table.zebra tbody tr:nth-of-type(odd) { background: #F4F4F4; }

table.zebra caption { color: #999; }
table.zebra caption { color: #999; text-align: right;}
table.zebra tfoot { color: #999; text-align: right; font-size: 11px; }

table.zebra tr:hover,
table.zebra tbody tr:nth-of-type(odd):hover,
table.zebra tbody tr.odd:hover {
	background: #FBA900;
	color: #FFFFFF;
	font-weight:bold;
	-moz-box-shadow: inset 0 1px 1px rgba(0,0,0,0.06);
	-webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,0.06);
	box-shadow: inset 0 1px 1px rgba(0,0,0,0.06);
}

  • 0
в ЛС не писать | коплю карму

#4 Анна

Анна

Отправлено 05 June 2012 - 21:32

Работает и правда замечательно!
Спасибо большое!
  • 0

#5 Сердар

Сердар

Отправлено 18 June 2012 - 15:55

Спасибо за интересное решение!
Странно, что в этом блоке пропало часть кода:

В шаблоне вывода (скорее всего это full.php, где ещё таблицам быть? )
     

<? if ($this->checkPosition('tab-properties')) : ?>
            <div id="tab-properties">
			<table class="zebra" cellpadding="70" border="0">
                			<col width="60%" />			
				<tbody><?= $this->renderPosition('tab-properties', array('style' => 'zebra'));?></tbody>
			</table>	
            </div>
        <? endif; ?>


Корректно это выглядит так:
<?php if ($this->checkPosition('tab-properties')) : ?>
            <div id="tab-properties">
			<table class="zebra" cellpadding="70" border="0">
                			<col width="60%" />			
				<tbody><?php echo $this->renderPosition('tab-properties', array('style' => 'zebra')); ?></tbody>
			</table>	
            </div>
        <?php endif; ?>

  • 0




Click to return to top of page in style!