Добавить категорию товара в уведомлении о заказе. Решено

  • 7 Ответов
  • 1333 Просмотров

0 Пользователей и 1 Гость просматривают эту тему.

*

niggatub

  • Давно я тут
  • ****
  • 205
  • -1
Есть товары с одинаковым названием, но в разных категориях.
Как в confirmation_email.tpl.php прописать перед названием категорию подскажите.
Вобщем то там вроде все ясно.
в
Код
<td><?php $dboi->p("product_name")?> <?php echo ($dboi->f("product_attribute")? ' ('.$dboi->f("product_attribute").')' : ''); ?></td>
перед <?php $dboi->p("product_name")?> нужно прописать что то типа такого <?php $dboi->p("category_name")?>
В PHP не особо силен, подсобите пожалуйста :)
« Последнее редактирование: 14.05.2012, 18:46:48 от niggatub »

*

niggatub

  • Давно я тут
  • ****
  • 205
  • -1
Чет не все так просто оказалось.
Кто нибудь реализовывал?:)

*

niggatub

  • Давно я тут
  • ****
  • 205
  • -1
Сделал сам. За основу взял решение от Beagler'a с его (как я понял) блога. Да украсится его путь лепестками лотоса :)
Итак. В файле  \administrator\components\com_virtuemart\classes\ps_checkout.php ищем следующий код:
Код
$q_oi = "SELECT * FROM #__{vm}_product, #__{vm}_order_item, #__{vm}_orders ";
$q_oi .= "WHERE #__{vm}_product.product_id=#__{vm}_order_item.product_id ";
$q_oi .= "AND #__{vm}_order_item.order_id='$order_id' ";
$q_oi .= "AND #__{vm}_orders.order_id=#__{vm}_order_item.order_id ";
Меняем его на этот:
Код
$q_oi = "SELECT * FROM #__{vm}_product, #__{vm}_order_item, #__{vm}_orders, #__{vm}_category, #__{vm}_product_category_xref ";
$q_oi .= "WHERE #__{vm}_product.product_id=#__{vm}_order_item.product_id ";
$q_oi .= "AND #__{vm}_order_item.order_id='$order_id' ";
$q_oi .= "AND #__{vm}_orders.order_id=#__{vm}_order_item.order_id ";
$q_oi .= "AND #__{vm}_category.category_id=#__{vm}_product_category_xref.category_id ";
$q_oi .= "AND #__{vm}_product.product_id=#__{vm}_product_category_xref.product_id ";
Сохраняем. Закрываем.
Далее берем шаблон письма с уведомлением. Лежит тут - \components\com_virtuemart\themes\ВАША_ТЕМА\templates\order_emails\confirmation_email.tpl.php
Насчет номера строки ориентировочно сказать не могу, мой уже перелопачен от и до, а дефолтный влом смотреть. Вобщем ищем строку
Код
<td><?php $dboi->p("product_name")?> <?php echo ($dboi->f("product_attribute")? ' ('.$dboi->f("product_attribute").')' : ''); ?></td>
И заменяем ее на:
Код
<td><?php $dboi->p("product_name")?> <?php echo ($dboi->f("product_attribute")? ' ('.$dboi->f("product_attribute").')' : ''); ?><br/><?php $dboi->p("category_name")?> </td>
Сохраняем. Закрываем.
Вот и все:)
По поводу изменения шаблона письма - дело вкуса. в этом варианте категория будет выводиться сразу под названием товара. Можете сделать ее в отдельном <td> с заголовком "Категория" - с этим я думаю проблем не возникнет, нужно просто немного поправить табличку :)

*

FlahsAxel

  • Давно я тут
  • ****
  • 212
  • 0
Доброе время суток всем.

Код работает. Однако! Решение не полное!
Если товар указан в нескольких категориях - он дублируется в заказе, столько раз, в скольких категориях этот товар присутствует. Кратно повторяется количество и цена!
- Товар 1                                             Цена
     Категория А
- Товар 1                                             Цена
     Категория В
Цена вычисляется дважды:
   Промежуточный итог - складывает все повторы.
   Итого: правильная сумма, без дублей повторов.
Как оставить в заказе обе категории, но без дублирования товара, а категории - просто перечислением?
Прописать условие, подскажите.


*

FlahsAxel

  • Давно я тут
  • ****
  • 212
  • 0
Доброе время суток всем.

Уважаемый beagler, подскажите пожалуйста конкретнее, как это сделать?
Не хватает знаний.

LEFT JOIN.
Суть понял, не знаю - как правильно код встроить в ps_checkout.php
SELECT ProductName, CategoryName FROM Products LEFT JOIN Categories ON Products.CategoryID = Categories.CategoryID
Код
SELECT t1.key1, 
       t1.field1 as Name,
       t1.key2 as T1Key,
       t2.key2 as T2Key,
       t2.field1 as City
  FROM Table1 t1 LEFT JOIN Table2 t2 ON t1.key2 = t2.key2 ;

Обязательно нужно получить (перечислить) все Категории товара, в которых он присутствует.
На англоязычном forum.virtuemart.net форуме, решения то же нет, к сожалению.

Сейчас получаем:
- Товар 1                                             Цена
     Категория А
- Товар 1                                             Цена
     Категория В

Нужно получить:
- Товар 1                                             Цена
     Категория А
     Категория В
« Последнее редактирование: 14.07.2015, 04:44:46 от FlahsAxel »


*

FlahsAxel

  • Давно я тут
  • ****
  • 212
  • 0
Доброе время суток всем.
если Вам нужны ВСЕ категории товара - то только отдельным запросом по каждому товару.
Я это понимаю, только не могу правильно написать код.
beagler
Подскажите, как сделать? Сам код, и где его вставить?
Полезная опция - категория в заказе. Странно, что мало интересующихся.

Хотя бы, просто убрать дубли, получить в заказе ту Категорию, в которой выбран товар:
- Товар 1                                             Цена
     Категория А
ИЛИ
- Товар 1                                             Цена
     Категория В

если сложно сделать:
- Товар 1                                             Цена
     Категория А
     Категория В
« Последнее редактирование: 14.07.2015, 13:39:23 от FlahsAxel »