Статусы товара в Virtuemart

Внезапно товар перестал выпускаться… Досадно, но клиенты звонят и его хотят, а производитель с ними (с клиентами) ни разу не солидарен… Беда-беда огорчение, особенно если товар был достаточно популярен.

Это хорошо, что он еще есть, но товары, как и все прекрасное, имеет свойство заканчиваться, а сайт показывает «Есть в наличии»…

Может быть, мой способ и топорный, но он сработал.Итак, для Virtuemart 1.0. Нам нужны будет файл administrator\components\com_virtuemart\classes\ps_product.php

В нем поменяем строчки:

строка: 1964
код в оригинале:

$html = $no_price_html;

код измененный:

$html = "";//$no_price_html;

строка: 2260
код в оригинале:

$html .= "<span style=\"font-weight:bold;\">".$VM_LANG->_PHPSHOP_DELIVERY_TIME." </span><br /><br />";

код измененный:

//$html .= "<span style=\"font-weight:bold;\">".$VM_LANG->_PHPSHOP_DELIVERY_TIME." </span><br /><br />";

 

и

строка: 2236
код в оригинале:

$heading = "<div style=\"text-decoration:underline;font-weight:bold;\">".$VM_LANG->_PHPSHOP_AVAILABILITY."</div><br />";

код измененный:

//$heading = "<div style=\"text-decoration:underline;font-weight:bold;\">".$VM_LANG->_PHPSHOP_AVAILABILITY."</div><br />";

Номера строк могут отличаться если были какие-то изменения (а у меня они были).

Далее идем в папку components\com_virtuemart\shop_image\availability\

и загружаем туда свои изображения («Нет на складе», «В пути», «Снят с производства», «Есть на складе» — это кому как угодно). Стоит отметить, что изначально поддерживаются изображения JPG, GIF, PNG, но никто не мешает разрешить поддержку любых других, поддерживаемых браузером.

строка: 2258
код в оригинале:

if (stristr($pav, "gif") || stristr($pav, "jpg") || stristr($pav, "png")) {

код измененный:

if (stristr($pav, "gif") || stristr($pav, "jpg") || stristr($pav, "png") || stristr($pav, "bmp")) {

Надо сказать, что ограничения весьма условные и созданы лишь для того, чтобы отображать только картинки, а не выводить в список выбора в админке, например, файл index.htm, который там лежит (и не надо его удалять).

Теперь если цена не задана (просто пустое поле) — больше не будет надписи «Позвоните, чтобы уточнить цену», а также будут адекватные надписи (в виде картинок).

Еще нужно упомянуть, что для того, чтобы это все отобразилось в карточке товара, необходимо в файле \administrator\components\com_virtuemart\html\templates\product_details\flypage.php

поставить заглушку {product_availability} в то место, куда вы хотите поставить картинку со статусом товара.

0

Статусы товара в Virtuemart: 7 комментариев

  1. JediG

    К какой версии VM это относится, а то у себя в указанных строках, да и не только в них не могут найти подобного.
    И если можно то поконкретней какая строчка на что влияет. Я бы например вместо картинок предпочел текст, а сейчас и с картинками проблема..

  2. merinovkv Автор записи

    Это для Virtuemart 1.0, пардон, не указал сразу. Поправил…
    Просто по заглушке видно, что 1.0, не подумал, что будет непонятно 🙁
    А в 1.1.х статусы товара можно менять во вкладке «Статусы товара», поле «Доступность». Если там укаать текст — выведется текст. Если указать имя файла с картинкой — выведется картинка (надо, чтобы она лежала в паке /components/com_virtuemart/themes/default/images/availability/)

    1. JediG

      Спасибо за ответ. У меня как раз 1.1.х, но что-то с ним не то, почему-то если что угодно вписать в это поле показывает картинку not-available.gif
      если картинку выбрать то все ок

      буду думать дальше

      1. merinovkv Автор записи

        Для 1.1.х
        В файле components/com_virtuemart/themes/default/templates/common/availability.tpl.php
        начиная со строки 43 (у меня) идет проверка на картинку:
        if( is_file( VM_THEMEPATH."images/availability/".$product_availability)) {
        echo vmCommonHTML::imageTag( VM_THEMEURL."images/availability/".$product_availability, $product_availability );
        }

        Добавляем ниже после «}»:
        else { ?>

        < ?php echo $product_availability; ?>

        < ?php }

        И вроде все. Если надо - могу скинуть мой файл на мыло.

        1. JediG

          У меня вот такой код:

          if( is_file( VM_THEMEPATH.»images/availability/».$product_availability)) {
          echo vmCommonHTML::imageTag( VM_THEMEURL.»images/availability/».$product_availability, $product_availability );
          }
          else {
          echo $product_availability;
          }

          Можно попробовать посмотреть ваш файл. Пробовал поправить, но страница оказалась не работоспособной.

          Мне это вообще все не нравится, но не вижу чтобы кто-то этот вопрос обсуждал и что-то дорабатывал, а сам я не программист и php для меня пока тяжело.

  3. JediG

    Кстати если удалить все картинки и попробовать что-нибудь написать то выдает вместо картинки текст: not-available.gif
    Кроме того свои картинки с собственными именами не добавляются, работают только те что есть в наборе, можно залить другие вместо них, но как-то это тоже не очень правильно.

Добавить комментарий