Перейти к содержанию
Форум поддержки пользователей VamShop

Оформление атрибутов


Рекомендуемые сообщения

Добрый день! Возник такой вопрос. 

Предположим есть у товара несколько атрибутов. Выводятся они в карточке товара выпадающими списками. По умолчанию не очень то красиво. Пример здесь http://mirdverei21vek.ru/mezhkomnatnaja-laminirovannaja-dver-luna-gluhaja-milanskij-oreh.html

 

А можно их как то оформить красиво в табличку?


Решил было проблему оформления просто ( как показалось сначала) Задал все нужные атрибуты одному товару, вытащил из исходного кода страницы этого товара html код, выводящий атрибуты, и оформил как мне было нужно в нужном порядке 



<table width="400px" border="0" cellspacing="0" cellpadding="5" bgcolor="#f3d6b1">
            <tr>
				<td colspan="2" bgcolor="#f3ebc6" height="50"><strong><font color="#9d3400">В комплект могут понадобиться:</font></strong></td>
			</tr>
			<tr>
				<td width="160px">
				<strong>Коробка:</strong>
				</td>
				<td>
				<select id="hidid[9]" name="id[9]" style="display:none;">
<option value="95">-    </option>
<option value="96">Коробка - 2.5 шт    (+ 450,00 руб.)</option>
<option value="107">С коробкой на двустворчатую дверь - 3 шт    (+ 540,00 руб.)</option>
</select>
<select name="idvis[9]" onchange="Javascript:ChangePrice(9,this.value);">
<option value="95:+0">-    </option>
<option value="96:+450">Коробка - 2.5 шт    (+ 450,00 руб.)</option>
<option value="107:+540">С коробкой на двустворчатую дверь - 3 шт    (+ 540,00 руб.)</option>
</select>
<input type="hidden" name="oldg9" id="oldg9" value="0" />
				</td>
			</tr>
			<tr>
				<td width="160px" bgcolor="#f3ebc6">
				<strong>Наличники:</strong>
				</td>
				<td bgcolor="#f3ebc6">
				<select id="hidid[10]" name="id[10]" style="display:none;">
<option value="97">-    </option>
<option value="98">Наличники на одну сторону - 3 шт    (+ 270,00 руб.)</option>
<option value="99">Наличники на две стороны - 5 шт    (+ 450,00 руб.)</option>
<option value="105">Наличники на одну сторону двустворчатой двери - 3 шт    (+ 270,00 руб.)</option>
<option value="106">Наличники на две стороны двустворчатой двери - 6 шт    (+ 540,00 руб.)</option>
</select>
<select name="idvis[10]" onchange="Javascript:ChangePrice(10,this.value);">
<option value="97:+0">-    </option>
<option value="98:+225">Наличники на одну сторону - 3 шт    (+ 270,00 руб.)</option>
<option value="99:+450">Наличники на две стороны - 5 шт    (+ 450,00 руб.)</option>
<option value="105:+270">Наличники на одну сторону двустворчатой двери - 3 шт    (+ 270,00 руб.)</option>
<option value="106:+540">Наличники на две стороны двустворчатой двери - 6 шт    (+ 540,00 руб.)</option>
</select>
<input type="hidden" name="oldg10" id="oldg10" value="0" />
				</td>
			</tr>
			<tr>
				<td width="160px">
				<strong>Доборы:</strong>
				</td>
				<td>
				<select id="hidid[11]" name="id[11]" style="display:none;">
<option value="100">-    </option>
<option value="101">100 мм - 2.5 шт    (+ 400,00 руб.)</option>
<option value="102">120 мм - 2.5 шт    (+ 500,00 руб.)</option>
<option value="103">150 мм - 2.5 шт    (+ 600,00 руб.)</option>
<option value="104">200 мм - 2.5 шт    (+ 700,00 руб.)</option>
<option value="108">100 мм на двустворчатую дверь - 3 шт    (+ 480,00 руб.)</option>
<option value="109">120 мм на двустворчатую дверь - 3 шт    (+ 580,00 руб.)</option>
<option value="110">150 мм на двустворчатую дверь - 3 шт    (+ 680,00 руб.)</option>
<option value="111">200 мм на двустворчатую дверь - 3 шт    (+ 780,00 руб.)</option>
</select>
<select name="idvis[11]" onchange="Javascript:ChangePrice(11,this.value);">
<option value="100:+0">-    </option>
<option value="101:+400">100 мм - 2.5 шт    (+ 400,00 руб.)</option>
<option value="102:+500">120 мм - 2.5 шт    (+ 500,00 руб.)</option>
<option value="103:+600">150 мм - 2.5 шт    (+ 600,00 руб.)</option>
<option value="104:+700">200 мм - 2.5 шт    (+ 700,00 руб.)</option>
<option value="108:+480">100 мм на двустворчатую дверь - 3 шт    (+ 480,00 руб.)</option>
<option value="109:+580">120 мм на двустворчатую дверь - 3 шт    (+ 580,00 руб.)</option>
<option value="110:+680">150 мм на двустворчатую дверь - 3 шт    (+ 680,00 руб.)</option>
<option value="111:+780">200 мм на двустворчатую дверь - 3 шт    (+ 780,00 руб.)</option>
</select>
<input type="hidden" name="oldg11" id="oldg11" value="0" />
				</td>
			</tr>
			<tr>
				<td width="160px" bgcolor="#f3ebc6">
				<strong>Притворная планка:</strong>
				</td>
				<td bgcolor="#f3ebc6">
				<select id="hidid[12]" name="id[12]" style="display:none;">
<option value="112">-    </option>
<option value="113">Притворная планка    (+ 110,00 руб.)</option>
</select>
<select name="idvis[12]" onchange="Javascript:ChangePrice(12,this.value);">
<option value="112:+0">-    </option>
<option value="113:+110">Притворная планка    (+ 110,00 руб.)</option>
</select>
<input type="hidden" name="oldg12" id="oldg12" value="0" />
				</td>
			</tr>
		</table>

 

Однако же оказалось не просто. Если заказать товар с этими атрибутами, они не плюсуются в заказ. Приходит на почту заказ только на саму дверь.
 

Ссылка на сообщение
Поделиться на другие сайты
{if $options!=''}
{foreach name=outer item=options_data from=$options}
{if $options_data.TYPE eq '1'}

<!-- select -->

<table width="450px" border="0" cellspacing="0" cellpadding="5" bgcolor="#f3d6b1">
			<tr>
				<td width="200px">
				<strong>{$options_data.NAME}:</strong>
				</td>
				<td>
				<p>
<select id="hidid[{$options_data.ID}]" name="id[{$options_data.ID}]" style="display:none;">
{foreach key=key_data item=item_data from=$options_data.DATA}
<option value="{$item_data.ID}">{$item_data.TEXT}   {if $item_data.MODEL}({$item_data.MODEL}){/if} {if $item_data.PRICE_PLAIN != 0}({$item_data.PREFIX}{$item_data.PRICE}){/if}</option>
{/foreach}
</select>

<select name="idvis[{$options_data.ID}]" onchange="Javascript:ChangePrice({$options_data.ID},this.value);">
{foreach key=key_data item=item_data from=$options_data.DATA}
<option value="{$item_data.ID}:{$item_data.PREFIX}{$item_data.PRICE_PLAIN}">{$item_data.TEXT}   {if $item_data.MODEL}({$item_data.MODEL}){/if} {if $item_data.PRICE_PLAIN != 0}({$item_data.PREFIX}{$item_data.PRICE}){/if}</option>
{/foreach}
</select>
<input type="hidden" name="oldg{$options_data.ID}" id="oldg{$options_data.ID}" value="0" />
</p>
				</td>
			</tr>
		</table>
<!-- /select -->

 

Сделал вот так. Стало более-менее приемлемо. А не подскажете - возможно сделать строки в таблице зеброй? чтобы две строки одна за другой чередовались по цвету? И ещё не пойму - по какому принципу сортируются поля? По алфавиту кириллическому?

Ссылка на сообщение
Поделиться на другие сайты
Ссылка на сообщение
Поделиться на другие сайты
  • 3 months later...

Подскажите, пожалуйста, как изменить порядок отображения атрибутов в карточке товара?

 

Например:

post-314-0-53278800-1380870893_thumb.jpg

Ссылка на сообщение
Поделиться на другие сайты

А с помощью указания значений в опции Порядок сортировки не получается их выстроить?

Ссылка на сообщение
Поделиться на другие сайты

Смотря какой порядок Вам нужен. Можно например создавать атрибуты в нужном вам  порядке, а потом упорядочить их по id. Я у себя сделал так. Для того, чтобы по id упорядочить, менял в файле includes/modules/product_attributes.php строку



$products_options_name_query = vamDBquery("select distinct popt.products_options_id, popt.products_options_name,popt.products_options_type,popt.products_options_length,popt.products_options_rows,popt.products_options_size from ".TABLE_PRODUCTS_OPTIONS." popt, ".TABLE_PRODUCTS_ATTRIBUTES." patrib where patrib.products_id='".$product->data['products_id']."' and patrib.options_id = popt.products_options_id and popt.language_id = '".(int) $_SESSION['languages_id']."' order by popt.products_options_name");

на



$products_options_name_query = vamDBquery("select distinct popt.products_options_id, popt.products_options_name,popt.products_options_type,popt.products_options_length,popt.products_options_rows,popt.products_options_size from ".TABLE_PRODUCTS_OPTIONS." popt, ".TABLE_PRODUCTS_ATTRIBUTES." patrib where patrib.products_id='".$product->data['products_id']."' and patrib.options_id = popt.products_options_id and popt.language_id = '".(int) $_SESSION['languages_id']."' order by popt.products_options_id");
Ссылка на сообщение
Поделиться на другие сайты

То есть, если вы скажем, создавали сначала атрибуты c названием "размер", а потом с названием "цвет", вам этот способ поможет, чтобы получился нужный порядок. Или придётся по новой атрибуты создавать в нужном Вам порядке. Может и попроще способы есть, но я не знаю.

Ссылка на сообщение
Поделиться на другие сайты

А что за опция "Ряды" в админке, при создании атрибута?  У меня все атрибуты с ней по умолчанию со значением "1" Подумал просто, что может как то по ней получится упорядочивать?

Ссылка на сообщение
Поделиться на другие сайты
  В 04.10.2013 в 08:48, support сказал:

А с помощью указания значений в опции Порядок сортировки не получается их выстроить?

Порядок сортировки - это выставляется порядок значений атрибутов - эта функция работает

Вопрос в том, как поменять порядок Названий атрибутов (Размер и Цвет)

 

По id названия атрибутов упорядочиваются по умолчанию, а мне нужно изменить этот порядок: наприм., атрибут Цвет имеет id 2, а Размер - id 5 - вот их и нужно поменять местами

Ссылка на сообщение
Поделиться на другие сайты
  В 04.10.2013 в 09:40, retroman сказал:

А что за опция "Ряды" в админке, при создании атрибута?  У меня все атрибуты с ней по умолчанию со значением "1" Подумал просто, что может как то по ней получится упорядочивать?

 

Там внизу есть примечание: Опции Ряды / Размер / Длина действительны только для атрибутов типа TEXT

Ссылка на сообщение
Поделиться на другие сайты
  В 04.10.2013 в 10:12, helen сказал:

Порядок сортировки - это выставляется порядок значений атрибутов - эта функция работает

Вопрос в том, как поменять порядок Названий атрибутов (Размер и Цвет)

 

По id названия атрибутов упорядочиваются по умолчанию, а мне нужно изменить этот порядок: наприм., атрибут Цвет имеет id 2, а Размер - id 5 - вот их и нужно поменять местами

Ну, вообще то нет. Приведённый мной выше код, говорит о том, что сортируется изначально по наименованию атрибута. 



$products_options_name_query = vamDBquery("select distinct popt.products_options_id, popt.products_options_name,popt.products_options_type,popt.products_options_length,popt.products_options_rows,popt.products_options_size from ".TABLE_PRODUCTS_OPTIONS." popt, ".TABLE_PRODUCTS_ATTRIBUTES." patrib where patrib.products_id='".$product->data['products_id']."' and patrib.options_id = popt.products_options_id and popt.language_id = '".(int) $_SESSION['languages_id']."' order by popt.products_options_name");

order by popt.products_options_name - вот этот параметр. 

Ох! Прям самому интересно стало - как  бы сделать произвольную сортировку. Попробую помучать код на выходных. Может чего и выйдет.

Ссылка на сообщение
Поделиться на другие сайты

Если я правильно помню сами атрибуты сортировать нельзя, retroman в общем правильно пишет, сортировку можно только через sql запрос сделать, например по порядку (по id номеру), по алфавиту, либо просто случайным образом (order by rand() )

Ссылка на сообщение
Поделиться на другие сайты

А  можно же, по идее добавить в TABLE PRODUCT OPTIONS ещё один параметр, задаваемый произвольно числами и сортировать по нему? 

И ещё вопрос такой. Если просто поменять в базе данных ID каждого названия атрибутов так, чтобы они выстраивались в нужном порядке, это приведёт к поломке уже установленных товарам атрибутов? То есть, конкретному товару атрибуты присваиваются в привязке к ID атрибутов?

Ссылка на сообщение
Поделиться на другие сайты

Можно то можно, кто спорит.

 

Но это много файлов  править, добавлять в базу колонку, в админке добавлять обработку этой колонки, в каталоге добавлять учёт этой колонки.

 

По умолчанию нет такой колонки.

 

Нет, id не меняются, т.е. поменять в базе конечно можно, но атрибуты вроде как по разным тарлицам разбросаны и есть вероятность смешать значения, лучше не надо.

 

Создайте лучше заново атрибут, либо просто переименовыванием можно обойтись.

Ссылка на сообщение
Поделиться на другие сайты
  В 04.10.2013 в 11:16, retroman сказал:

Ну, вообще то нет. Приведённый мной выше код, говорит о том, что сортируется изначально по наименованию атрибута.

Если бы по наименованию, т.е. по алфавиту, то Р (Размер) идет раньше Ц (Цвет), соответственно и порядок отображения был бы таким, какой мне нужен. А у меня сортируется по id

post-314-0-33272700-1380918905_thumb.jpg

 

Но и выстраивание по алфавиту в моем случае не подходит, т.к. опять же многие атрибуты, которые должны быть ниже, переместятся вверх

 

 

Очень много значений атрибутов и связанных с ними товаров, поэтому новый атрибут или переименование атрибутов, к сожалению, не вариант.

Как я поняла, просто поменять местами id где-нибудь в БД не получится?

Ссылка на сообщение
Поделиться на другие сайты

Не-не-не,  Helen, во первых, есть же ещё такая штука как убывание и возрастание сортировки. Скорее всего, идёт от конца алфавита (не помню) Я правда не очень понял как по умолчанию, но когда у себя делал, чётко проследил взаимосвязь названия атрибута с его положением относительно других на странице. А у меня их несколько побольше на страницу будет. Даже не сомневайтесь. Ну и потом, по id сортируется, только если вы сами когда то правили файл для этого. Что вряд ли. В общем, попробую, в меру своего разумения, сделать дополнительный параметр в таблице и поправить нужные файлы. О результатах доложу. Поменять id  в базе, наверное не стоит. Много проблем можно огрести. А много у вас атрибутов в магазине уже назначено? Если чуток совсем, то делайте правку как говорю, а потом создавайте по новой нужные атрибуты в нужном порядке, или ждите.

Ссылка на сообщение
Поделиться на другие сайты
retroman

спасибо за участие, буду ждать, т.к. атрибутов очень много и товаров, связанных с ними, соответственно, тоже много

Ссылка на сообщение
Поделиться на другие сайты

helen, не понял как сюда закачать файлы, вот ссылка на страницу с архивом http://webdesignseo.ru/kopilka-webmastera/vamshop/sortirovka-atributov-v-kartochke-tovara-vamshop.html вроде бы всё работает как должно.

Редактировать порядок атрибутов можно только в целом для всего магазина. То есть не получится в одном товаре выставить так, а в другом эдак.

Ссылка на сообщение
Поделиться на другие сайты

Helen, я себе инструкцию составлял на всякий случай. Могу прислать. Там подробно расписано в какие строки каких файлов вносить изменения и что куда добавлять.

Ссылка на сообщение
Поделиться на другие сайты
×
×
  • Создать...