Думаю, многие уже успели столкнуться с проблемой в Virtuemart 2, которая заключается в том, что в макете страницы «Спасибо за заказ» (той, которая появляется, когда пользователь подтверждает заказ) нет практически ничего. В этом кейсе я расскажу, как получить на ней всю информацию о совершенном заказе.
На самом деле, решение очень простое, но его я не встретил ни на одном форуме, в том числе, на официальном. Алгоритм следующий:
- Переопределяем макет страницы «Спасибо за заказ» в используемый шаблон Joomla. Для этого копируем файл components/com_virtuemart/views/cart/tmpl/order_done.php в папку templates/ВАШ_ШАБЛОН /html/com_virtuemart/cart. Если каких-то каталогов не хватает, создаем их вручную. После этого работаем только с файлом, который находится в папке с шаблоном.
- В файле order_done.php добавляем следующий код:
<?php require_once(JPATH_VM_ADMINISTRATOR.DS.'models'.DS.'orders.php');$order = VirtueMartModelOrders::getOrder($this->cart->virtuemart_order_id);?>
Посмотреть значения, ставшие доступными, можно вставив ниже код:
<pre><?php print_r($order); ?></pre>
Пример вывода данных:
<?php echo $order['details']['ST']->order_number ?> /*номер заказа*/<?php echo $order['details']['ST']->created_on ?> /*дата заказа*/
и т.д.
не так,если можно опишите пожалуйста подробней куда вставлять код.
Я выводил , к сожалению там нет этого. Открыл модель orders.php, там не тянутся изображения, но я так и не понял из какой модели в корзину берется вывод изображений.
Функция включена. Не передает в массив, увы.
Спасибо
В принципе я понимаю, что ничего невозможного нет, однако вопрос актуальный и очень нужный. Может создадите отдельный кейс. Думаю будет полезно многим.
http://forum.virtuemart.ru/viewtopic.php?f=37&t=10057
В нем вы можете посмотреть, как обратиться, чтобы получить те или иные данные. А выводить их нужно строчкой:
Где вместо order_number нужно подставить данные из скобок того или иного элемента массива, чтобы получить значение.
Array ( [details] => Array ( ) [history] => Array ( ) [items] => Array ( ) [calc_rules] => Array ( ) )
как видно массивы пустые и значений в них нет. вирт 2.6.10. может в новой версии по другому как то?
все выводит нормально
Возможно, кому-то будет полезно:
Добавил в конец order_done.php следующий код:
и увидите весь массив доступных данных. Если там нет изображения, то его можно получить по ID товара, подключив еще одну модель, по аналогии с тем, как это происходит в файле components/com_virtuemart/views/productdetails/view.html.php
В нет инф. о фото вообще, в view.html.php не могу найти где по id можно вывести фото.
Подскажите, пожалуйста, где именно копать, какую строчку.
Но проще, наверное, запросом в БД:
$product = VirtueMartModelProduct::getProductSingle($item->virtuemart_product_id);
На белой странице, без шаблона, выводит Спасибо за заказ и тд.
В консоле выдает Failed to load resource: the server responded with a status of 500 (Internal Server Error)
http://wedal.ru/uroki-joomla/joomla-faq.html
Не забудьте переопределить текущий макет в шаблон Joomla. Подробнее в этой статье: http://wedal.ru/rasshireniya-joomla/nastrojka-shablona-virtuemart-3.html
у меня 2.6.3 и работает как ни странно (сделал так с артикулом)
есть ли среди них нужные вам настраиваемые поля. Если есть, можно вывести довольно легко, если же нет, то нужно будет сначала получить ID заказанных товаров и по ним получить значения полей.
Именно в ней будет выводиться кнопка Робокассы (по крайней мере должна, если они не придумали у себя в плагине что-то экзотическое). Дальше просто выводите нужный вам текст перед этой переменной.
Также обратите внимание, что в новых VM макетов "Спасибо за заказ" два: orderdone.php и order_done.php. Я, честно говоря, всегда их путаю теперь - какой и когда используется. Пробуйте с одним, если текст не выведется, то с другим.