Форум русской поддержки Joomla!® CMS
11.12.2016, 14:02:58 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

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

 (Прочитано 1121 раз)
0 Пользователей и 1 Гость смотрят эту тему.
niggatub
Давно я тут
****

Репутация: +2/-3
Offline Offline

Сообщений: 205


« : 14.05.2012, 14:00:25 »

Есть товары с одинаковым названием, но в разных категориях.
Как в 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 не особо силен, подсобите пожалуйста Azn
« Последнее редактирование: 14.05.2012, 16:46:48 от niggatub » Записан
niggatub
Давно я тут
****

Репутация: +2/-3
Offline Offline

Сообщений: 205


« Ответ #1 : 14.05.2012, 14:50:30 »

Чет не все так просто оказалось.
Кто нибудь реализовывал?Azn
Записан
niggatub
Давно я тут
****

Репутация: +2/-3
Offline Offline

Сообщений: 205


« Ответ #2 : 14.05.2012, 16:45:46 »

Сделал сам. За основу взял решение от Beagler'a с его (как я понял) блога. Да украсится его путь лепестками лотоса Azn
Итак. В файле  \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> с заголовком "Категория" - с этим я думаю проблем не возникнет, нужно просто немного поправить табличку Azn
Записан
FlahsAxel
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 193


« Ответ #3 : 13.07.2015, 21:16:46 »

Доброе время суток всем.

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

Репутация: +389/-4
Offline Offline

Пол: Мужской
Сообщений: 3307


beagler dot ru


« Ответ #4 : 14.07.2015, 00:34:51 »

в запросе нужно использовать left join на категории
Записан
FlahsAxel
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 193


« Ответ #5 : 14.07.2015, 01:19:36 »

Доброе время суток всем.

Уважаемый 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, 03:44:46 от FlahsAxel » Записан
beagler
Moderator
*****

Репутация: +389/-4
Offline Offline

Пол: Мужской
Сообщений: 3307


beagler dot ru


« Ответ #6 : 14.07.2015, 11:40:25 »

если Вам нужны ВСЕ категории товара - то только отдельным запросом по каждому товару.
Записан
FlahsAxel
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 193


« Ответ #7 : 14.07.2015, 12:30:29 »

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

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

если сложно сделать:
- Товар 1                                             Цена
     Категория А
     Категория В
« Последнее редактирование: 14.07.2015, 12:39:23 от FlahsAxel » Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet