e.motion
Маленькие хитрости

Как добавить новое поле к товару в WebAsyst

24 августа 2011 by · 16 комментариев 

В своей практике доработки различных интернет-магазинов на базе CMS WebAsyst Shop-Script я достаточно часто сталкиваюсь с задачей прикрутить дополнительный параметр к товарной позиции.

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

Начнем с интеграции нужного нам поля в таблицу продуктов базы данных. Для этого выполняем следующий SQL-запрос (можно задать любое имя вместо brand.)

ALTER TABLE `SC_products` ADD `brand` TEXT NOT NULL

Следующим шагом необходимо добавить поле в интерфейс администратора. Шаблон, отвечающий за работу с конкретным товаром в админке находится по адресу: /published/SC/html/scripts/templates/backend/product_settings.html
На данном этапе, нам нужно определиться, где будет располагаться наш параметр.
В моем примере поле ‘Производитель’ (brand) будет находится cразу за ценой товара, поэтому я ищу в указанном файле код, который отвечает за вывод ценового блока:

<tr>
<td nowrap>{lbl_str_price}: </td>
<td>
<input name="Price" value="{$product.Price|escape:'html'}" size="6"
type="text" style="text-align:right;" /> {$default_currency.currency_iso_3}
</td>
</tr>

И добавляю после него код строки, которая будет содержать мой новый параметр:

<tr>
<td nowrap>Производитель: </td>
<td>
<input name="brand" value="{$product.brand|escape:'html'}"
size="12" type="text" style="text-align:left;" />
</td>
</tr>

Уже сейчас поле ‘Производитель’ отображается при работе в админке, остался последний штрих. Необходимо добавить имя нашего параметра в обработчик класса продуктов, который находится на сервере по адресу:
/published/SC/html/scripts/classes/class.product.php
Здесь все просто, вписываем переменную в конец общего списка:

var $brand;

и сохраняем изменения. Все готово, теперь можно смело пользоваться новым параметром товара нашего интернет-магазина WebAsyst Shop-Script.

  • WordPress

Comments

16 комментариев to “Как добавить новое поле к товару в WebAsyst”
  1. А как вывести это поле на карточке товара и в категории товаров?

  2. Delik:

    разобрался сам.

    {$product_info.brand|escape:'html'}

    спасибо за статью ОЧЕНЬ помогла!

  3. Delik:

    единственный но очень важный момент:

    вот я вывожу ее в категории товаров —

    Бренд: {$product_info.brand|escape:'html'}

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

  4. проверку — наверное, надо завернуть вывод переменной в простой if,

    типа

    {if $product_info.brand ne ''}

    Бренд: {$product_info.brand|escape:'html'}

    {/if}

  5. Delik:

    большое спасибо! всё работает)

    я еще добавил краткое название товара (оно выводится в категории)

    а основное название на карточе товара выводится — доработал условие (это на всякий случай вдруг кому надо будет ибо рецепт очень полезный)

    {if $product_info.short_name eq ''}

    {$product_info.name|escape:'html'}

    {/if}

    {if $product_info.short_name ne ''}

    {$product_info.short_name|escape:'html'}

    {/if}

    и еще добавил в категорию вывод маленьких картинок типа Бэстселлер, Скидки, Акции, Рекомендуем:

    ставлю символ в админке и оно мне выводит картинку)

    {if $product_info.bestseller ne ''}

    {/if}

    вот так выглядит прикольно: imageshack.us/photo/my-im...goryproduct.png/

    Респект и уважуха!!!

  6. LeeZa:

    А как вы реализовали такие чудесные картинки? Попробовал не то получаю.

    Идеально, если подобные вещи у вас фиксированы, получить 3-4 картинки(ну или больше) на выбор и привязать их.

    Если говорить о примере: имеем брэнд — вписываем название в поле и круто было б привязать картинку к нему

  7. Delik:

    LeeZa, Да, можно любые ставить например только одну хит продаж. — тоесть из там всего 5шт а к товару прицепить можно любые из них.

    Делается всё точно так же. в админке (в товаре) создаётся доп поле Хит Ппродаж (например)

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

  8. LeeZa:

    т.е. вы запускаете что-то которое проверяет это поле, если там 1 или абвгд... то выводиться картинка?

    Если да, а как вы запрос формируете? Ну если не секрет=)))

  9. Delik:

    сейчас посмотрю как я делал ибо уже ничо не помню)

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

    через php-my-admin запрос (пример):

    ALTER TABLE `SC_products` ADD `hitprodaj` TEXT NOT NULL

    ну а потом условие в шаблон карты товара:

    если переменная не пустая, вывести картинку. — условия все смотрите выше

    к сожалению, работу сдал, доступа нету больше по фтп

  10. LeeZa:

    ...Спасибо и на этом, хотел утрясти понимание логики процесса с вашей=)))

    Помогли, уверенность что мысли правильные это всегда 1/3 дела.

  11. sergey:

    Всё отлично получилось,но в админке данные в поле не сохраняются подскажите как исправить

  12. LeeZa:

    вы я думаю не сделали это:

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

    /published/SC/html/scripts/classes/class.product.php

    Здесь все просто, вписываем переменную в конец общего списка:

    var $brand;...»

  13. Классный урок! Все получилось. Только такой вопрос возник. Мне нужно сделать так, чтобы в строке Производитель: ххх , ххх было ссылкой. Это возможно реализовать? Буду очень благодарна за помощь.

  14. Ирина:

    Еще вопросик, в админке, в карточке товара появилось новое окошко, а вот там где должно быть слово производитель, стоят знаки вопроса :/ Что это может быть и как это лечится?

  15. Ирина:

    Все проблема №1 решена, при исправлении файлов product_settings.html и class.product.php нужно было пересохранить с кодировкой utf-8

  16. Мария:

    Добрый день, подскажите, пожалуйста, а где правильнее расширять модель приложения? Вы указали в статье, что надо изменить файл «/published/SC/html/scripts/classes/class.product.php», а что произойдёт с изменениями после обновления пакета?

Speak Your Mind

Tell us what you're thinking...
and oh, if you want a pic to show with your comment, go get a gravatar!

e.motion