Добро пожаловать, Гость
Логин: Пароль: Запомнить меня

Редактирование шаблона ошибки perror.php

Редактирование шаблона ошибки perror.php 1 год 6 мес. назад #7556

  • Andrey
  • Andrey аватар
  • Не в сети
  • Прохожий
  • Сообщений: 5
  • Репутация: 0
Здравствуйте. Данная ошибка возникает если покупатель пытается купить товар, который уже не в наличии. То есть когда покупатель заходил на страницу товар еще был в наличии, а когда пытается купить - товар не в наличии (его уже кто-то купил).

Быстро воспроизвести такую ошибку можно так:
1. Заходим на страницу какого-то товара в магазине.
2. Админ-панель -> Страница редактирования товара -> вкладка Статус -> в поле В наличии ставим 0.
3. На странице товара нажимаем кнопку "Купить" -> всплывает окно с ошибкой.

Шаблон с ошибкой находится в папке /components/com_virtuemart/views/cart/tmpl/perror.php

Подскажите, пожалуйста, как в данном шаблоне вывести ссылку на товар и кнопку на страницу "Уведомить о поступлении товара" ?
Чтобы оставлять сообщения нужно зарегистрироваться.

Редактирование шаблона ошибки perror.php 1 год 6 мес. назад #7558

  • Wedal
  • Wedal аватар
  • Не в сети
  • Администратор
  • Сообщений: 2552
  • Спасибо получено: 600
  • Репутация: 217
Andrey,

прежде всего скопируйте этот макет в
templates/имя_вашего_шаблона/html/com_virtuemart/cart/

Далее вносите изменения в этот скопированный файл.
Все доступные в этом макете данные можно посмотреть, если временно добавить в него код (в самом конце):
<pre><?php print_r($this); ?></pre>
Чтобы оставлять сообщения нужно зарегистрироваться.

Редактирование шаблона ошибки perror.php 1 год 6 мес. назад #7560

  • Andrey
  • Andrey аватар
  • Не в сети
  • Прохожий
  • Сообщений: 5
  • Репутация: 0
Не совсем понял, что мне это дает?

Вот что получилось:
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/
                )
        )
Последнее редактирование: 1 год 6 мес. назад от Andrey.
Чтобы оставлять сообщения нужно зарегистрироваться.

Редактирование шаблона ошибки perror.php 1 год 6 мес. назад #7562

  • Wedal
  • Wedal аватар
  • Не в сети
  • Администратор
  • Сообщений: 2552
  • Спасибо получено: 600
  • Репутация: 217
Andrey, должно быть побольше информации, в макете есть переменные:

$this->continue_link
$this->errorMsg
$this->product_name

Они должны быть в этом списке. Вы ничего не перепутали?
Чтобы оставлять сообщения нужно зарегистрироваться.

Редактирование шаблона ошибки perror.php 1 год 6 мес. назад #7565

  • Andrey
  • Andrey аватар
  • Не в сети
  • Прохожий
  • Сообщений: 5
  • Репутация: 0
Сделал все на тестовом сайте со стандартным шаблоном. Вот что получилось:
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
)
Как мне это использовать?

Конпку "Уведомит о поступлении товара" пытался безуспешно вывести так:
<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>
Чтобы оставлять сообщения нужно зарегистрироваться.

Редактирование шаблона ошибки perror.php 1 год 6 мес. назад #7566

  • Wedal
  • Wedal аватар
  • Не в сети
  • Администратор
  • Сообщений: 2552
  • Спасибо получено: 600
  • Репутация: 217
Andrey, видимо параметры товара в этот макет не передаются.

Придумал для вас не очень надежный, но, тем не менее, действующий способ получения ссылки на товара в этом макете:
echo isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '';
Так вы выводите URL предыдущей страницы, с которой пользователь попал в этот макет. Это, соответственно, либо карточка товара, если товар добавлялся в корзину из нее, либо категория товаров, если пользователь добавил товар в корзину из категории.

А вот как сделать кнопку "Уведомить о поступлении товара", без хаков я не знаю. Если в данный макет не передается ID товара, то вы не сможете передать этот ID его скрипту подписки на уведомление, без чего работать скрипт не будет. Можно, конечно исхитриться, вернув пользователя на страницу товара, передав при этом дополнительный параметр уведомления, считав его на странице товара и выполнив запуск всплывающего окошка подписки уведомления уже на странице товара, но это совсем костыль. Уж проще тогда внести хак, который будет передавать ID товара в макет perror.php.
Чтобы оставлять сообщения нужно зарегистрироваться.
Время создания страницы: 0.222 секунд

Вверх