Показ наличия товара в категории и карточке товара в virtuemart 2

Опубликовано: 17 Ноябрь, 2013
Обновлено: 18 Май, 2016
Категория: Настройка VirtueMart
Комментариев: 114

Показ наличия или отсутствия товара на складе - это составляющая любого серьезного (и не очень 🙂 ) интернет-магазина.

В этой статье рассмотрим простейший вариант показа наличия товара на складе. Если товар есть на складе, то выведем надпись "В наличии" (так же можно будет указать точное количество оставшегося товара). Если товара нет - то надпись "Нет в наличии".

Есть два варианта решения:

  • использование настраиваемого поля
  • автоматический вывод надписей в зависимости от количества товара на складе

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

Количество каждого конкретного товара указывается в его карточке во вкладке Статус.

настройка количества товараТак же для показа наличия в категории в настройках Virtuemart во вкладке Внешний вид активируем Отображать уровень запаса.

отображать уровень запаса в категории

После этого на странице категории у нас получится что-то вроде этого.

вид текущего уровня запасов

Заменим красную картинку на "Нет в наличии", а зеленую на "В наличии", а так же уберем лишние надписи.

Для этого в файле components\com_virtuemart\views\category\tmpl\default.php заменим

на

В языковом файле language\ru-RU\ru-RU.com_virtuemart.ini поменяем

на

и

заменим на

После этого страница категорий будет выглядеть так.

готовая страница категорий

Чтобы наличие отображалось в карточке товара заменим весь код, который выводит наличие в файле components\com_virtuemart\views\productdetails\tmpl\default.php

на

В результате под кнопкой Купить будет показываться наличие товара.

наличие в карточке товара

Для вывода точного количества оставшегося товара на странице категорий в файле components\com_virtuemart\views\category\tmpl\default.php сразу после

добавим

Получим такую картину

наличие товара с количеством в категории

Для карточки товара в файле components\com_virtuemart\views\productdetails\tmpl\default.php заменим

на

Получим следующее

наличие товара с количеством в карточке товара

Надеюсь, что статья окажется вам полезной 🙂

114 комментариев

    Владислав

    Спасибо, полезно....

    Вячеслав

    А можно ли настроить показ наличия товара для определенной категории? сли да, то как внести изменения?

      admin

      admin

      самый простой способ, на мой взгляд - это привязать к категории, где будет показываться наличие, к отдельному шаблону
      на форуме для другой задачки рассматривалось как такое сделать

    Вячеслав

    Или для определенного цвета, если товар разных цветов

    Владимир

    Такая проблема, делаю импор товаров через csv, VM2 последняя версия, товары опубликованы, есть в наличии но на сайте не отображаются, но заметил такой глюк, если просто зайти в админке в описание товара и выйти — он сразу появляется на сайте, товаров очень много, надеялся облегчи себе работу, но походу придется чтоб товар появился на сайте вручну открывать и закрывать каждый товар в админке. Может кто-то подскажет решение?

    Владислав

    Странно. Я все сделал, но у меня так и осталось графическое окошко с красным цветом. Не подскажете, в чем может быть дело?

      admin

      admin

      уточните вопрос, зашел на сайте, но окошка так и не нашел 🙂

        Владислав

        Окошка сейчас нет, потому что я отключил его показ: магазин действующий и не хочется показывать везде красный квадратик. Суть вопроса в том, что не появилась надпись вместо красного квадратика - как будто бы я ничего и не делал 🙂

    Артем

    Автору сайта - большая благодарность. За эту статью отдельное спасибо, все получилось с первого раза. Возник вопрос - как сделать надпись "В наличии" , к примеру, зеленым цветом, а "Нет в наличии" - красным? Покопался - и не смог найти куда приспособить определение цвета. Заранее спасибо.

      admin

      admin

      Я это сделал так
      в языковом файле вместо В наличии прописал

      соответственно классу nal можно задать любой цвет
      то же самое и для товара не в наличии, только другой класс

      для карточки товара дополнительный класс можно прописать прямо в div, в котором выводится текст

        Артем

        класс создавать в файле components\com_virtuemart\views\category\tmpl\default.php ?
        или в css стилях?

          Артем

          Все разобрался, спасибо за ответ.

            slavyo

            а где создавать? 🙂

            admin

            admin

            в файле стилей

    Владислав

    Разобрался, благодаря Вашему же сайту и обсуждению статьи "Упрощаем корзину" 🙂 Действительно, некоторые производители шаблонов прячут свои файлы по другому пути: \templates\шаблон\html\com_virtuemart\category\default.php

    А у меня возник следующий вопрос. Как сделать, чтобы надпись "Нет в наличии" выводилась, например, красным цветом и жирным шрифтом?

    Владислав

    Страница была загружена из кэша. Только написал свой вопрос про цвет, как тут же она обновилась и увидел, что Вы уже ответили на этот вопрос. Спасибо за Ваш ответ! 🙂

    Алексей

    Подскажите пожалуйста, а как решить такую проблему: когда я выбираю количество товара которое я желаю купить, в данном случае, кнопкой "+" как сделать чтобы счетчик не крутился дальше количества которое есть на складе?

      admin

      admin

      как это сделать автоматически не знаю, но можно в ручную в каждом товаре задать максимальное количество для заказа (во вкладке статус)

    Стас

    Подскажите пожалуйста. Когда прописываю код в карточке товара, то вместо "Нет в наличии" пишет абракадабра ��� � �������.
    Если пишу английскими буквами,то все нормально.
    Как исправить проблему?

      admin

      admin

      измените кодировку файла на UTF-8 (без ВОМ)
      сделать это можно, например, в помощью Notepad++

    Владислав

    Возможно, не в эту тему пишу. Но у меня творится что-то странное: главная страница virtuemart стала выводиться во всех карточках товара (внизу), в корзине (внизу) и т.д. Никак не могу отключить это наваждение. Подскажите, пожалуйста, как избавиться от этого кошмара!

      admin

      admin

      посмотрел сайт, не заметил дублей главной

    Владислав

    У меня главная страница virtuemart выводится не на главной странице сайта, а на странице "Каталог". И вот этот "каталог" прилепляется ко всем товарам (внизу) и даже в корзине (внизу). В нем идут "Натуральные масла", "Косметические линии".

      admin

      admin

      у вас автоматически выводятся похожие категории
      удалите в файле templates/шаблон/html/com_virtuemart/views/productdetails/default.php

    Владислав

    Я Вас, наверное, уже замучил. Но данное решение не помогает. Я виноват, не до конца объяснил проблему. Дело в том, что "Каталог" я устроил так, что он не выводит категории от virtuemart, а выводит модули. "Натуральные масла"- один модуль. "Косметические линии" - 3 модуля: каждый модуль выводит по 1 строке. В итоге, сколько строк - столько и модулей. Получилось, что страница "Каталог" состоит из 4-х модулей. И эта страница "Каталог" объявлена у меня главной страницей virtuemart.
    И вдруг, эти 4 модуля выводятся на всех страницах, связанных с virtuemart, внизу: во всех карточках товарах, во всех категориях, даже в корзине. Поскольку модули включены показываться только на одной странице "Каталог", то я так понимаю, что дело не в модулях. Видимо главная страница virtuemart ("Каталог")каким-то образом выводится внизу всех страниц. Откуда это взялось? Совсем недавно этого не было. И вот как это отключить?!

    Спасибо, за Ваше терпение и внимание!

      admin

      admin

      теперь все понятно 🙂
      чтобы эти модули не показывались на страницах категорий и товаров вам нужно создать пункты меню (с типом virtuemart категориЯ) для каждой категории
      их даже не обязательно публиковать
      это должно помочь

    Владислав

    Спасибо за помощь! Действительно, есть какая-то "таинственная" связь между модулями и "virtuemart категория". Ваше решение действительно помогает. Правда действовать начинает только при опубликованных категориях и очень необычно: отрубает все модули и выводит только модуль, принадлежащий данной категории. Но это даже смотрится с шармом 🙂 В общем, теперь буду разбираться, благо направление Вы мне подсказали. Еще раз спасибо! 🙂

    Super_Panda

    Добрый день. В настройках Virtuemart пишет ошибки наверху. В чем может быть проблема?

    vmError: Attention file ������ has no extension in view category and directory Z:\home\joom\www\components\com_virtuemart\views\category mpl
    vmError: Attention file ����� ����� has no extension in view category and directory Z:\home\joom\www\components\com_virtuemart\views\category mpl

      admin

      admin

      скорее всего в вашем шаблоне идет переопределения шаблонов virtuemart
      templates/ваш_шаблон/html/com_virtuemart
      проверьте внутри папок в папке com_virtuemart не должно быть папок tmpl

    Toliks

    вопрос по теме отображение наличия доступного товара

    столкнулись с такой ситуацией под кнопкой купить выводили инфу *НЕТ В НАЛИЧИИ* но чё-то либо клиенты не грамотные и читать не умеют либо я не догоняю. На кнопочку всё равно нажимали. в итоге стоит вопрос сокрытия кнопки *КУПИТЬ* при количестве 0 товара на складе

      admin

      admin

      в настройках virtuemart во вкладке Внешний вид в поле Действие при поступлении товара на склад можно выбрать что делать если товара нет на складе

    егор

    Добрый день! Поскажите пожалуйста как сделать чтобы поле доступность "картинка" (в моем случае под заказ) выводилось в результатах поиска товара, уже все перепробовал.Спасибо

      admin

      admin

      для поиска товаров используйте модуль Virtuemart Поиск товаров, тогда страница поиска будет аналогична странице категорий и на ней будет выводится та же информация что и в категориях

    Алексей

    Здравствуйте, подскажите пожалуйста, как сделать отображение количества в цифрах только для авторизованных пользователей, а гостям показывать только в наличии или нет в наличии. Пробовал разные условия if CurrentUser, но ни одно не работает.

      admin

      admin

      не сталкивался с таким, если найдете решение, то, пожалуйста, поделитесь

        Алексей

        Добавил условие, в том месте где нужно вывести количество в цифрах, вставляем этот код:

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

          admin

          admin

          спасибо, что поделились!

    Катерина

    Так как мне хотелось, чтобы "В наличии" было зеленым цветом, а "Нет в наличии" - красным, я вывела показ наличия немного по-другому:
    1. Подготовила слова "В наличии" и "Нет в наличии" в виде изображения.
    2. Залила картинку на сервер.
    3. Подправила CSS (изменила адрес изображения, размеры, background-position и добавила margin).
    4. Чтобы убрать надпись "Текущий уровень запасов" нашла ее в Менеджере языков -- Переопределение констант и удалила текст (ничего умнее не придумала).
    Вот как получилось на странице Категорий:
    http://igruana.ru/strategicheskie

    И теперь мне осталось вывести наличие в карточке товара. Быть может вы подскажете какой код отвечает за вывод тех самых изображений? И куда его вставить?

      Катерина

      Правильно ли я думаю, что необходимо скопировать из этого файла components\com_virtuemart\views\category\tmpl\default.php
      что-то типа этого кода:

      и вставить его в файл components\com_virtuemart\views\productdetails\tmpl\default.php
      А?

        admin

        admin

        а тот способ что описан в статье для карточки товара у вас не работает?
        если вы хотите выводить наличие разным цветом, то можно заключить надписи в тег и присвоить разный класс
        в таблице стилей назначить для каждого класса свой цвет

    Владмир

    Убрать кнопку купить если товара нет в наличии, можно так сделать?

      admin

      admin

      Virtuemart->Настройки->Внешний вид
      В области Действие при поступлении товара на склад выберите Показывать 'Известить меня' вместо кнопки 'Добавить в корзину'

        Владмир

        Ничего не изменилось, когда выбираешь функцию "Показывать ‘Известить меня’ вместо кнопки ‘Добавить в корзину’", что должно происходить?

          admin

          admin

          если товара нет в наличии, то будет показываться кнопка Известить меня

            Владмир

            все сделал как вы сказали но результат так и нет, в категории все равно отображается кнопка купить. Не подскажите где в каком файле находится код "известить меня"

            Владмир

            Так как в категорию добавил кнопку купить - теперь даже если товар отсутствует - весит кнопка купить - а в карточке товара в правильно, как решить проблему с категорией?

    Ира

    Здравствуйте! Подскажите, пожалуйста, как сделать так, чтобы для товаров которые есть в наличии не выводился статус "В наличии" на странице категории?

      admin

      admin

      Здравствуйте!
      В языковом файле вместо

      напишите

        Ира

        Если в языковом фале отредактировать, то будет англ. локализация выводится, а если и там убрать, то будет так: COM_VIRTUEMART_STOCK_LEVEL_DISPLAY_NORMAL_TIP.
        Думаю, нужно непосредственно в php убирать.

          admin

          admin

          в русском файле оставьте вместо слова один пробел
          это должно помочь

            Ира

            Спасибо!

            admin

            admin

            Пожалуйста 🙂

    Евгений

    А как можно сделать, чтобы учитывались дочерние товары? У меня товары продаются с 2 вкусами. Их остатки положительные, а в категории пишет, что нет на складе.

      admin

      admin

      не сталкивался с таким
      если найдете решение, то поделитесь пожалуйста

        Евгений

        Пришлось управлять остатками основного товара

    Павел

    Спасибо!

    Марина

    Здравствуйте!
    Как вывести на карточке товара "Доступность товара"?
    Например, если товар в наличии, выводим значение поля "доступность товара" (заполняется при создании товара, раздел "статус"); а если товар не в наличии - выводим значение поля "доступность" (настройки->внешний вид->действие при поступлении товара на склад->товары, которых нет в наличии, могут заказываться, отображается поле "доступность")

    Владислав

    Добрый день.
    Подскажите как вообще убрать в наличие и нет в наличие через админку все галочки проставил, "Товары, которых нет в наличии, могут заказываться. Никаких специальных действий." Всё норм пытался через virtuemart.ini удалить так там вообще их не оказалось. И получается убрать не как не могу. Может есть какое то решение через CSS - ссылка на два примера один в наличие другой нет в наличие сайт

      admin

      admin

      Здравствуйте!
      У вас не стандартный шаблон, поэтому настройки из админки могут не работать
      Судя по сайту наличие на странице категорий вы убрали, в карточку товара не смог попасть, ошибка соединения с базой данных

    fixbob

    Осталось только дезактивировать кнопку Добавить в корзину при отсутствии товара.

      admin

      admin

      Virtuemart->Настройки->Внешний вид
      в области Действие при поступлении товара на склад можно настроить поведении кнопки Купить с зависимости от наличия товара

        fixbob

        Вот теперь в принципе статья закончена - спасибо за статью - помогла

    Сергей

    Спасибо за статью, скажите, а можно вывести наличие товара в "Похожих товарах" и в модуле Virtuemart "Товары"?

      admin

      admin

      Для вывода в модуле Virtuemart товары добавьте в файл modules/mod_virtuemart_product/tmpl/default.php

      для похожих товаров добавьте в файл \components\com_virtuemart\views\productdetails\tmpl\default_relatedproducts.php

        Сергей

        Спасибо за ответ!
        В модулем "Товары" всё сработало, а вот в похожих товарах нет. Этот код выводит наличие, но не правильно. У всех похожих товаров пишется именно такое наличие как у основного. Это как-то можно исправить?

          admin

          admin

          Точного решения не знаю, если решите проблему, то, пожалуйста, поделитесь

            alxfom_16

            Для похожих товаров работает первый код:

    alxfom_16

    Выкладываю код файла default_relatedproducts.php сопутствующих товаров где работает наличие, выше указный код не работает со стандартным файлом.

    Администратор удалите, пожалуйста, мой комментарий от Дек 5, 2014 5:59 пп, спасибо!

    Михаил

    А как сделать так, чтобы те товары, которых нет в наличии нельзя было купить? Кнопка Купить чтобы не отображалась либо выводилось сообщение?

      admin

      admin

      Virtuemart > Настройки > Внешний вид
      В области Действие при поступлении товара на склад выберите Показывать 'Известить меня' вместо кнопки 'Добавить в корзину'
      В файле \components\com_virtuemart\views\productdetails\tmpl\default_addtocart.php удалите или замените на свое сообщение

    Павел

    Добрый день, подскажите как вывести Есть или нет в наличии на главной странице в рекомендуемых товарах? Делал двумя вышеуказанными способами, то в карточке товара все вывелось и категории, а вот на главной в рекомендуемых не выводиться(

      admin

      admin

      Здравствуйте!
      Рекомендуемые товары у вас выводятся в модуле или через настройки в админке?

        Владимир

        Добрый день. У меня вопрос тот же. Рекомендуемые товары выводятся через настройки в админке. Пятался добавить ваш код в файл htmlcom_virtuemartvirtuemartdefault_products.php но там он не срабатывает.

        dark19

        Через настройки в админке, я поставил отметку рекомендуемое на нужный мне товар.

          admin

          admin

          В файле \components\com_virtuemart\views\virtuemart\tmpl\default_products.php добавьте код

            dark19

            Во спасибо, выручили, может еще подскажите как изменить кнопку "В корзину" на главной, она сейчас ведет в корзину, а нужно чтобы добавляла товар в корзину.

            Вот код кнопки сейчас:

            dark19

            Вот сайт, забыл написать: http://aqualink.com.ua/

            Владимир

            Добавил. Работает. Спасибо.

    Стас

    Спасибо! Очень полезный материал!

      admin

      admin

      Рад, что статья оказалась полезной

    Стас

    P/S/ для админов, может добавите в материал. В которых шаблонах файлы для редактирования: categorytmpldefault.php , productdetailstmpldefault.php находятся здесь: /templates/ИМЯ_ШАБЛОНЫ/html/com_virtuemart/productdetails , /templates/ИМЯ_ШАБЛОНЫ/html/com_virtuemart/category

    Евгений

    Статья хорошая, комментарии тоже полезные. Добавлю для логичной сортировки нужно поправить код как здесь http://joomlaforum.ru/index.php/topic,287855.msg1438256.html#msg1438256

    Вопрос: Можно слово "Нет в наличии" написать вместо ценника?

      admin

      admin

      Здравствуйте!

      Создал отдельную тему на форуме
      http://virtuemart.su/forums/topic/skryt-cenu-u-tovarov-kotoryx-net-v-nalichii/

        Евгений

        Или вот так модернизировать код на странице вывода категорий, только цена у товаров которых нет в наличии должна быть равно нулю

          Дмитрий

          Помогните пожалуйста добавил строчку в языковой файл, но не получается присвоить цвет и размер классу nal

            admin

            admin

            Мешают стили, заданные в шаблоне.
            Нужно использовать более точное нацеливание.
            Например, для категории

    Дмитрий

    Спасибо большое выручили, успехов вашему проекту.

      admin

      admin

      Спасибо, у Вам успехов!

    Виктор

    Добрый вечер.
    Сделал все как Вы написали и присвоил цвет в языковом файле.
    "Нет в наличии"-отображается красным,а вот "В наличии"-не отображается зеленым(присвоил ему цвет "green").

    Помогите пожалуйста разобраться в чем дело.

      admin

      admin

      Здравствуйте!

      В файле стилей шаблоне нет стиля для класса .green
      Добавьте

    Виктор

    Большое спасибо :up 🙂

    дима

    Подскажите плиз, а как выводить остаток товара только авторизированным юзерам?

      admin

      admin

      Заключите код вывода остатка в условие

        Сергей

        Добрый день! не могу вставить код, можете поподробней объяснить.
        Все перепробовал страничка перестает полностью работать.

          admin

          admin

          Здравствуйте!

          Создайте тему на форуме. В теме прикрепите zip архив с файлом, который генерирует ошибку.

    Trofim

    Добрый день, стоит версия VirtueMart 3.0.12 , и шаблон protostar, не как не могу в магазине сделать настройки чтобы вывести кол-во на складе по вашей статье не канает, расскажите поподробней что я не так делабю

      admin

      admin

      Здравствуйте!

      Уточните, в чем конкретно ошибка?
      Надпись совсем не выводится?
      Весь код, приведенный в статье, должен работать и для vm3.

        Trofim

        Все спасибо увидел, у меня он оказывается выводит когда захожу в товар он не под словом корзина а на самом верху товара выводит количество, а на главное у меня изображения квадратиков/
        Осталось шрифт увеличить

    Вилена

    Спасибо, очень помогло мне, а как изменить цвет шрифта "в наличии"? Шрифт красный у меня, хотелось бы изменить его...

      admin

      admin

      У Вас по какой-то причине текст выводится уже в теге с цветом. Конечно, можно его заменить, но это не самый лучший способ. Все же лучше изначально вывести текст в блоке с определенным классом.
      Так же посмотрите в комментариях, там обсуждалась эта проблема, например, http://virtuemart.su/pokaz-nalichiya-tovara-v-kategorii-i-kartochke-tovara-v-virtuemart-2/#div-comment-27782
      если не получится, то используйте

    Вилена

    Спасибо, пишите статьи чаще)

      admin

      admin

      Буду стараться)

    Дмитрий

    Добрый день. У меня virtuemart 3.0.16 и строчки с упоминанием класса "vmicon" в файле default.php по адресу components\com_virtuemart\views\category\tmpl\ нет. Где может находится строка, которую нужно заменить? Пересмотрел все файлы, поиск по ключевым словам ничего не даёт, хотя в css этот класс описан.
    Спасибо.

      admin

      admin

      В virtuemart 3 наличие подключается в файле /components/com_virtuemart/sublayouts/products.php этим кодом

      сам код вывода наличия находится в файле /components/com_virtuemart/sublayouts/stockhandle.php

        Мая

        здравствуйте. у меня тоже в 3 нет такого в файле... я нашла в products.php что Вы сказали, но замена этого кода "ломает" сайт.. что в этом случае нужно заменить) подскажите пож совсем тёмному человеку))..

          admin

          admin

          Скорее всего код вывода наличия переопределен в шаблоне. Уточните, что именно Вы хотите сделать и какие изменения вносите для этого.

    annyka

    Вероятно не сюда пишу. Но никак не могу разобраться...
    Joomla3 в V3 есть функция уведомления клиентов из админ панели, которые нажали уведомить при появлении товара. Настройки VM -> Статус -> Отправить письмо. Там и e-mail пользователей появляется, которые подписались на появление товара. Но эта кнопка не работает. Я смотрю код и вообще не вижу никакого скрипта для отправки этих писем, при чем я просмотрела многие версии VM3.
    У кого-то вообще эти уведомления отправляются с VM3??

    И уведомления о том, что товар заканчивается админу тоже приходят... хотя с остальными письмами о заказах и др. - все норм.

    Что это такое 🙁 Куда копать вообще? 🙁

      admin

      admin

      С этим функционалом есть проблемы.
      Попробуйте это решение.

    Руслан

    А не подскажете как побороть выключение Добавление в корзину при наличии 0 товаров? То есть при добавлении товара в наличии прописывается НОЛЬ. Но Добавить в корзину карточке товара все равно остается.

      admin

      admin

      В Virtuemart > Настройки > Внешний вид в области Действие при поступлении товара на склад активируйте опцию Показывать 'Известить меня' вместо кнопки 'Добавить в корзину'.

    Дмитрий

    Добрый день! Подскажите пожалуйста ))) Если у нас товаров например 10 а зарезервировано 20 то его нет в наличии. Как сделать так чтоб он не считал резерв?
    Заранее спасибо!

      admin

      admin

      Здравствуйте!

      Нужно отключить возможность заказывать товары, которых нет в наличии. Сделать это можно с помощью опции Показывать 'Известить меня' вместо кнопки 'Добавить в корзину' в Virtuemart > Настройки > Внешний вид.

        Дмитрий

        Вы меня наверное не правильно поняли! Товар у нас есть в наличии просто его когда то покупали и он получается в резерве (во вкладке статус) а товары мы в стандартной джумле не проводим и они там будут постоянно висеть а количество на складе у нас каждый день обновляется а резерв купленного товара не меняется

          admin

          admin

          Т.е. Вам нужно изменить информацию о статусе, чтобы учитывались данные только из поля В наличии? Для этого нужно править шаблон вывода наличия. Если у Вас шаблон, купленный на virtuemart.su, то задайте вопрос в ветке поддержки покупателей шаблона. Если шаблон сторонний, то пришлите ссылку на страницу с проблемой и ссылку на шаблон карточки товара или категории, в зависимости от того где нужно править.

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*
Для вставки кода заключите его в теги [php] [/php]
*

С 15-18 июня admin в отпуске.

Ответы на все вопросы и ссылки на товары будут присланы 19 июня.

Спасибо за понимание и хороших выходных.

×