Jump to content

Размеры в товарах (одежда и обувь) - РЕШЕНИЕ НАЙДЕНО!


Recommended Posts

Коллеги, здравствуйте. Позволю себе создать новую тему, т.к. аналогичная "потонула" (на мой взгляд).

Вопрос связан с функционалом программы, предназначенным для торговли товаром категории "одежда и обувь". На данный момент система, оказывается, очень слабо ориентирована на товары данной категории, в которой неминуемо присутствуют размеры.

На текущий момент есть возможность реализовать данный функционал при помощи т.н. "вариантов", куда можно было бы добавить размеры. Но есть серьезная проблема в движке, которая выражается в следующем: когда варианты одного товара присутствуют на остатках в достаточном количестве (т.е. >=1), тогда при выборе товара из каталога пользователь может задать в комбо-боксе нужный ему размер. При этом он видит, какой размер он кладет в корзину непосредственно в момент добавления. Когда же на остатках магазина остается лишь один размер данного артикула, в момент просмотра каталога и добавления товара в корзину список размеров не выводится - по сути, покупатель добавляет товар "вслепую" (размер будет виден лишь в самой карточке товара).

Проблему с размерами решить, на мой взгляд, можно очень просто - необходимо сделать так, чтобы "варианты" (если они указаны в файле товаров) выводились всегда, вне зависимости от их остатков (даже если они нилевые).

Например, пользователь выбирает товар ТОВАР1 и видит следующую картину:
- Размер S - 2 шт.
- Размер M - 0 шт.
- Размер L - 1 шт.

Очевидно, что при попытке выбора и добавления товара с размеров M (из примера выше) система должна выводить сообщение, что выбор невозможен в связи с отсутствие товара на остатках магазина. По крайней мере, покупатель будет видеть полную размерную шкалу в данной модели (в данном товаре) - т.е. возможные варианты (что важно для осуществления выбора), а также он будет видеть размер, который собирается добавить в корзину (т.е. не будет добавлять "кота в мешке").

Заранее спасибо за комментарии.

Link to post
Share on other sites

Ну вот и реализовал сам данный функционал. Вроде глюков не замечено. Кому интересно, то получилось следующее:

1. Правим три файла TPL, которые лежат в \htdocs\design\default\html (или другая папка вашей текущей темы). Файлы, которые необходимо править, называются: catalog.tpl, product.tpl и products.tpl.

2. Перед правкой файлов обязательно сделайте их backup!

3. Все три файла правятся одинаковым образом (по полной аналогии друг с другом). А именно, необходимо найти секцию:

{if $product->variants|@count > 1}
<!-- Варианты товара /-->
<select name=variant_id onchange="display_variant({$product->product_id}, this.value);return false;">
{foreach from=$product->variants item=variant}
<option value='{$variant->variant_id|escape}'>{$variant->name|escape}<strong></strong><br>
{/foreach}
</select>
<input type=button class="link_to_cart" onclick="document.cookie='from='+location.href+';path=/';this.form.submit();">
<br>
{elseif $product->variants|@count == 1}
<input type=hidden name=variant_id value='{$product->variants[0]->variant_id}'>
<input type=button class="link_to_cart" onclick="document.cookie='from='+location.href+';path=/';this.form.submit();">
{/if}
<!-- Варианты товара #END /-->

Надо поправить начальное условие на ">0" и полностью убрать вариант условия "elseif". Убрать надо следующие строки:

{elseif $product->variants|@count == 1}
<input type=hidden name=variant_id value='{$product->variants[0]->variant_id}'>
<input type=button class="link_to_cart" onclick="document.cookie='from='+location.href+';path=/';this.form.submit();">

Link to post
Share on other sites

В итоге данная секция должна быть такой:

{if $product->variants|@count > 0}
<!-- Варианты товара /-->
<select name=variant_id onchange="display_variant({$product->product_id}, this.value);return false;">
{foreach from=$product->variants item=variant}
<option value='{$variant->variant_id|escape}'>{$variant->name|escape}<strong></strong><br>
{/foreach}
</select>
<input type=button class="link_to_cart" onclick="document.cookie='from='+location.href+';path=/';this.form.submit();">
<br>
{/if}
<!-- Варианты товара #END /-->

4. Что мы практически получаем в результате вышеописанных изменений:

- теперь можно смело указывать размеры одного и того же изделия (лота), используя механизм т.н. "вариантов". Например, создаем товар "Куртка текстильная с длинными рукавами", а в вариантах для этого товара указываем, например: "Размер S", "Размер M" и т.п. При этом указываем соответствующие остатки и цену каждого "варианта", а, по сути - каждого размера.

- до вышеуказанных правок кода магазина существовала большая проблема, которая описана мною в первоначальном сообщении данной темы. А именно: в случае, когда на остатках есть только последний "вариант" (по сути - последний размер), система переставала показывать его у товара, что заставляло покупателя делать выбор "вслепую". Т.е. для одежды, где размер имеет определяющее значение при выборе, магазин был непригоден в таком виде.

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

- когда же на остатках не осталось вообще ни одного размер (варианта), кнопка "добавить в корзину" просто пропадает.

Тем самым, как мне кажется, я свою задачу выполнил. Магазин адаптировался к торговле одеждой за 3 клика )) Буду тестировать. Надеюсь, что ошибки не вылезут.


Если разработчик читает данный форум, очень рекомендую ему в следующей версии сделать отдельную опцию, что-то вроде: "Показывать выбор даже одного варианта" - "да/нет". Это, на мой взгляд, позволит привлечь больше потенциальный покупателей системы, которые планируют ее использовать "под ключ" для одежды.

Link to post
Share on other sites

Небольшой апдейт в порядке монолога:

Т.к. мы сделали, чтобы система выводила список "вариантов" (размеров в нашем случае) даже тогда, когда "вариант" остается один, либо был один изначально, то для товаров (одежды), которая не имеет размеров, система будет выводить пустые списки вариантов, что не очень красиво.

Для того, чтобы этого избежать, рекомендую во всех товарах, которые не имеют размеров (например, аксессуары) указывать наименование единственного варианта как "Без размера". Для этого необходимо в разделе "варианты" нажать ссылку "Добавить вариант", после чего добавится пустая строчка второго варианта, но после этого откроется поле для редактирования наименования первого варианта. Туда и пишем "Без размера". После чего пустую строчку второго варианта можно удалить, а можно оставить. Опытным путем стало понятно, что система сохраняет наименование первого (основного) варианта в любом случае.

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...