Редактирование шаблона ошибки perror.php
- Andrey
- Автор темы
- Не в сети
- Новый участник
Less
Больше
- Сообщений: 5
- Спасибо получено: 0
8 года 10 мес. назад #7556
от Andrey
Andrey создал тему: Редактирование шаблона ошибки perror.php
Здравствуйте. Данная ошибка возникает если покупатель пытается купить товар, который уже не в наличии. То есть когда покупатель заходил на страницу товар еще был в наличии, а когда пытается купить - товар не в наличии (его уже кто-то купил).
Быстро воспроизвести такую ошибку можно так:
1. Заходим на страницу какого-то товара в магазине.
2. Админ-панель -> Страница редактирования товара -> вкладка Статус -> в поле В наличии ставим 0.
3. На странице товара нажимаем кнопку "Купить" -> всплывает окно с ошибкой.
Шаблон с ошибкой находится в папке /components/com_virtuemart/views/cart/tmpl/perror.php
Подскажите, пожалуйста, как в данном шаблоне вывести ссылку на товар и кнопку на страницу "Уведомить о поступлении товара" ?
Быстро воспроизвести такую ошибку можно так:
1. Заходим на страницу какого-то товара в магазине.
2. Админ-панель -> Страница редактирования товара -> вкладка Статус -> в поле В наличии ставим 0.
3. На странице товара нажимаем кнопку "Купить" -> всплывает окно с ошибкой.
Шаблон с ошибкой находится в папке /components/com_virtuemart/views/cart/tmpl/perror.php
Подскажите, пожалуйста, как в данном шаблоне вывести ссылку на товар и кнопку на страницу "Уведомить о поступлении товара" ?
Пожалуйста Войти или Зарегистрируйтесь, чтобы присоединиться к беседе.
- Wedal
- Не в сети
- Администратор
Less
Больше
- Сообщений: 2868
- Спасибо получено: 659
8 года 10 мес. назад #7558
от Wedal
Wedal ответил в теме Редактирование шаблона ошибки perror.php
Andrey,
прежде всего скопируйте этот макет в
templates/имя_вашего_шаблона/html/com_virtuemart/cart/
Далее вносите изменения в этот скопированный файл.
Все доступные в этом макете данные можно посмотреть, если временно добавить в него код (в самом конце):
прежде всего скопируйте этот макет в
templates/имя_вашего_шаблона/html/com_virtuemart/cart/
Далее вносите изменения в этот скопированный файл.
Все доступные в этом макете данные можно посмотреть, если временно добавить в него код (в самом конце):
Code:
<pre><?php print_r($this); ?></pre>
Пожалуйста Войти или Зарегистрируйтесь, чтобы присоединиться к беседе.
- Andrey
- Автор темы
- Не в сети
- Новый участник
Less
Больше
- Сообщений: 5
- Спасибо получено: 0
8 года 10 мес. назад - 8 года 10 мес. назад #7560
от Andrey
Andrey ответил в теме Редактирование шаблона ошибки perror.php
Не совсем понял, что мне это дает?
Вот что получилось:
Вот что получилось:
Code:
VirtueMartViewCart Object
(
[_name:protected] => cart
[_models:protected] => Array
(
)
[_basePath:protected] => .../www/components/com_virtuemart
[_defaultModel:protected] =>
[_layout:protected] => perror
[_layoutExt:protected] => php
[_layoutTemplate:protected] => _
[_path:protected] => Array
(
[template] => Array
(
[0] => .../www/templates/jv_theme/html/com_virtuemart/cart/
[1] => .../www/components/com_virtuemart/views/cart/tmpl/
)
[helper] => Array
(
[0] => .../www/components/com_virtuemart/helpers/
)
)
Последнее редактирование: 8 года 10 мес. назад пользователем Andrey.
Пожалуйста Войти или Зарегистрируйтесь, чтобы присоединиться к беседе.
- Wedal
- Не в сети
- Администратор
Less
Больше
- Сообщений: 2868
- Спасибо получено: 659
8 года 10 мес. назад #7562
от Wedal
Wedal ответил в теме Редактирование шаблона ошибки perror.php
Andrey, должно быть побольше информации, в макете есть переменные:
$this->continue_link
$this->errorMsg
$this->product_name
Они должны быть в этом списке. Вы ничего не перепутали?
$this->continue_link
$this->errorMsg
$this->product_name
Они должны быть в этом списке. Вы ничего не перепутали?
Пожалуйста Войти или Зарегистрируйтесь, чтобы присоединиться к беседе.
- Andrey
- Автор темы
- Не в сети
- Новый участник
Less
Больше
- Сообщений: 5
- Спасибо получено: 0
8 года 9 мес. назад #7565
от Andrey
Andrey ответил в теме Редактирование шаблона ошибки perror.php
Сделал все на тестовом сайте со стандартным шаблоном. Вот что получилось:
Как мне это использовать?
Конпку "Уведомит о поступлении товара" пытался безуспешно вывести так:
Code:
VirtueMartViewCart Object
(
[_name:protected] => cart
[_models:protected] => Array
(
)
[_basePath:protected] => /home/u521245593/public_html/demo/components/com_virtuemart
[_defaultModel:protected] =>
[_layout:protected] => perror
[_layoutExt:protected] => php
[_layoutTemplate:protected] => _
[_path:protected] => Array
(
[template] => Array
(
[0] => /home/u521245593/public_html/demo/templates/vmbeez5/html/com_virtuemart/cart/
[1] => /home/u521245593/public_html/demo/components/com_virtuemart/views/cart/tmpl/
)
[helper] => Array
(
[0] => /home/u521245593/public_html/demo/components/com_virtuemart/helpers/
)
)
[_template:protected] => /home/u521245593/public_html/demo/templates/vmbeez5/html/com_virtuemart/cart/perror.php
[_output:protected] =>
[_escape:protected] => htmlspecialchars
[_charset:protected] => UTF-8
[_errors:protected] => Array
(
)
[baseurl] => /demo
[product] =>
[products] =>
[errorMsg] => Product out of stock
[layoutName] => perror
[cart] => VirtueMartCart Object
(
[products] => Array
(
)
[_inCheckOut] =>
[_dataValidated] =>
[_blockConfirm] =>
[_confirmDone] =>
[_inConfirm] =>
[_redirect] =>
[_redirect_disabled] =>
[_lastError] => Product out of stock
[vendorId] => 1
[lastVisitedCategoryId] => 0
[virtuemart_shipmentmethod_id] => 0
[virtuemart_paymentmethod_id] => 0
[automaticSelectedShipment] =>
[automaticSelectedPayment] =>
[BT] => 0
[ST] => 0
[tosAccepted] =>
[customer_comment] =>
[couponCode] =>
[order_language] =>
[cartData] =>
[lists] =>
[order_number] =>
[virtuemart_order_id] =>
[customer_number] => nonreg_
[pricesUnformatted] =>
[pricesCurrency] =>
[paymentCurrency] =>
[STsameAsBT] => 1
[productParentOrderable] => 1
[_triesValidateCoupon] => Array
(
)
[layout] => default
[layoutPath] =>
[useSSL] => 0
[useXHTML] =>
)
[continue_link] => /demo/default-products
[continue_link_html] => Continue Shopping
[cart_link] => /demo/cart
)
Конпку "Уведомит о поступлении товара" пытался безуспешно вывести так:
Code:
<a href="<?php echo JRoute::_ ('index.php?option=com_virtuemart&view=productdetails&layout=notify&virtuemart_product_id=' . $this->product->virtuemart_product_id); ?>" class="notify"><?php echo JText::_ ('COM_VIRTUEMART_CART_NOTIFY') ?></a>
Пожалуйста Войти или Зарегистрируйтесь, чтобы присоединиться к беседе.
- Wedal
- Не в сети
- Администратор
Less
Больше
- Сообщений: 2868
- Спасибо получено: 659
8 года 9 мес. назад #7566
от Wedal
Wedal ответил в теме Редактирование шаблона ошибки perror.php
Andrey, видимо параметры товара в этот макет не передаются.
Придумал для вас не очень надежный, но, тем не менее, действующий способ получения ссылки на товара в этом макете:
Так вы выводите URL предыдущей страницы, с которой пользователь попал в этот макет. Это, соответственно, либо карточка товара, если товар добавлялся в корзину из нее, либо категория товаров, если пользователь добавил товар в корзину из категории.
А вот как сделать кнопку "Уведомить о поступлении товара", без хаков я не знаю. Если в данный макет не передается ID товара, то вы не сможете передать этот ID его скрипту подписки на уведомление, без чего работать скрипт не будет. Можно, конечно исхитриться, вернув пользователя на страницу товара, передав при этом дополнительный параметр уведомления, считав его на странице товара и выполнив запуск всплывающего окошка подписки уведомления уже на странице товара, но это совсем костыль. Уж проще тогда внести хак, который будет передавать ID товара в макет perror.php.
Придумал для вас не очень надежный, но, тем не менее, действующий способ получения ссылки на товара в этом макете:
Code:
echo isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '';
А вот как сделать кнопку "Уведомить о поступлении товара", без хаков я не знаю. Если в данный макет не передается ID товара, то вы не сможете передать этот ID его скрипту подписки на уведомление, без чего работать скрипт не будет. Можно, конечно исхитриться, вернув пользователя на страницу товара, передав при этом дополнительный параметр уведомления, считав его на странице товара и выполнив запуск всплывающего окошка подписки уведомления уже на странице товара, но это совсем костыль. Уж проще тогда внести хак, который будет передавать ID товара в макет perror.php.
Пожалуйста Войти или Зарегистрируйтесь, чтобы присоединиться к беседе.