Куда идем?

У вас есть интернет-магазин на Joomla 3 + Virtuemart 3, и вы хотите изменить или отредактировать какой-то блок на страницах магазина? В этой статье я расскажу, как это сделать.

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

Информация из данной статьи на 95% применима и для Virtuemart 2.

Шесть лет назад (Боже, неужели прошло 6 лет !?) я уже писал мега-статью с описанием всех макетов Virtuemart. Та статья была разбита на 3 части. Вы и сейчас сможете найти ее в серии статей Virtuemart – интернет-магазин на Joomla. В той статье были описаны макеты Virtuemart 1.1.x для Joomla 1.5.

Зачем нужна новая статья? Дело в том, что макеты в Virtuemart 2 и Virtuemart 3 совершенно другие. Сам я, по роду деятельности, так часто делаю интернет-магазины на Virtuemart, что выучил почти все макеты наизусть. Но если вы не зашли столь же далеко, то информация о том, где какая страница Virtuemart 3 редактируется, может быть очень полезной при создании сайта на Joomla.

В этот раз я не буду разбирать описание всех макетов на несколько статей. Вся выжимка по макетам с изображениями представлена для вас в этой мега-статье.

Оглавление

Основные макеты Virtuemart 3

Подмакеты Virtuemart 3 (блоки, которые могут встречаться на разных страницах)

Переопределение макетов и подмакетов Virtuemart 3. Важно!

Не вносите изменения непосредственно в макеты Virtuemart, которые находятся в директории components/com_virtuemart/views/.Такие изменения будут потеряны при первом же обновлении Virtuemart. Чтобы не потерять изменения, необходимо вносить их в макеты, которые переопределены в используемый вами шаблон Joomla.

Общее правило переопределения макетов

Чтобы переопределить макет в шаблон Joomla, скопируйте файл:

components/com_virtuemart/views/КАТЕГОРИЯ_МАКЕТА/ tmpl/НАЗВАНИЕ_МАКЕТА.php

в директорию:

templates/ВАШ_ШАБЛОН/html/com_virtuemart/КАТЕГОРИЯ_МАКЕТА/

Пример переопределения макетов:

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

components/com_virtuemart/views/productdetails/ tmpl/default.php

в директорию:

templates/ВАШ_ШАБЛОН/html/com_virtuemart/productdetails/

Общее правило переопределения подмакетов

Чтобы переопределить подмакет в шаблон Joomla, скопируйте файл:

components/com_virtuemart/sublayouts/НАЗВАНИЕ_МАКЕТА.php

в директорию:

templates/ВАШ_ШАБЛОН/html/com_virtuemart/sublayouts/

Пример переопределения подмакетов:

Для переопределения подмакета цен товара нужно скопировать файл:

components/com_virtuemart/sublayouts / prices.php

в директорию:

templates/ВАШ_ШАБЛОН/html/com_virtuemart/sublayouts/

Основные макеты Virtuemart 3. Главная страница (virtuemart)

components/com_virtuemart/views/virtuemart/default.php – основной макет главной страницы. Содержит описание магазина, список категорий верхнего уровня вложенности, и список товаров в зависимости от настроек в админке.

1

components/com_virtuemart/views/virtuemart/feed.php – макет RSS-фида товаров VM.

components/com_virtuemart/views/virtuemart/off_line.php – макет страницы выключенного магазина.

Основные макеты Virtuemart 3. Страница категории товаров  (category)

components/com_virtuemart/views/category/default.php – основной макет категории товаров Virtuemart. Содержит описание категории, список дочерних категорий, список товаров категории.

components/com_virtuemart/views/category/categories.php – макет списка дочерних категорий заданной категории.

2

Основные макеты Virtuemart 3. Страница товара (productdetails)

components/com_virtuemart/views/productdetails/default.php – основной макет страницы товара. Содержит всю информацию о товаре, а также вызывает большинство макетов страницы товара, описанных ниже.

3

components/com_virtuemart/views/productdetails/default_images.php –макет основного изображения на странице текущего товара Virtuemart. Содержит также скрипты, обрабатывающие основное и дополнительные изображения.

components/com_virtuemart/views/productdetails/default_images_additional.php – макет дополнительных изображений текущего товара Virtuemart.

components/com_virtuemart/views/productdetails/default_manufacturer.php – макет содержит блок со списком производителей текущего товара Virtuemart.

components/com_virtuemart/views/productdetails/default_pdf.php –макет отображения текущего товара в формате PDF.

components/com_virtuemart/views/productdetails/default_reviews.php – макет отзывов о текущем товаре Virtuemart.

components/com_virtuemart/views/productdetails/default_showcategory.php – макет, показывающий дочерние категории той категории, в которой содержится текущий товар на странице этого товара.

components/com_virtuemart/views/productdetails/mail_html_notify.php – макет уведомления покупателей, которые подписались на ожидание информации о поступлении товара, в формате HTML.

components/com_virtuemart/views/productdetails/mail_raw_notify.php php – макет уведомления покупателей, которые подписались на ожидание информации о поступлении товара, в формате RAW.

components/com_virtuemart/views/productdetails/notify.php – макет формы подписки на уведомления о поступлении товара. Показывается в случае, когда товара нет в наличии и выставлены соответствующие настройки в конфигурации Virtuemart.

4

Основные макеты Virtuemart 3. Корзина товаров (cart)

Макеты корзины сложные. Я советую заниматься их редактированием только тем, кто может хорошо читать код PHP и HTML. Для всех остальных проще купить готовое расширение одностраничного оформления заказа Virtuemart.

components/com_virtuemart/views/cart/default.php – основной макет корзины. Содержит всю информацию, отображающуюся в корзине, а также вызывает большинство макетов корзины, описанных ниже.

5

components/com_virtuemart/views/cart/default_address.php – макет блока адресов «Кому»/ «Куда», которые показаны над списком товаров в корзине.

components/com_virtuemart/views/cart/default_cartfields.php – макет, содержащий поля «Примечания и специальные запросы», согласие с условием обслуживания, а также дополнительные поля, заполняемые пользователем в корзине.

components/com_virtuemart/views/cart/default_coupon.php – макет формы добавления купона в корзине.

components/com_virtuemart/views/cart/default_pricelist.php – макет таблицы товаров в корзине.

components/com_virtuemart/views/cart/default_shopperform.php – макет изменения покупателя заказа. Используется только если в настройках VM на вкладке «Оформление заказа» активирована соответствующая опция.

components/com_virtuemart/views/cart/mini_cart.php – на текущий момент нигде не используется.

components/com_virtuemart/views/cart/order_done.php – макет страницы оформленного заказа, на которую попадает покупатель после подтверждения заказа/оплаты.

components/com_virtuemart/views/cart/padded.php – макет всплывающего окна «Товар добавлен в корзину».

6

components/com_virtuemart/views/cart/perror.php – макет страницы всплывающего окна с ошибкой о невозможности добавления в корзину. Такое бывает в некоторых случаях.

components/com_virtuemart/views/cart/select_payment.php – макет способов оплаты в корзине.

components/com_virtuemart/views/cart/select_shipment.php – макет способов доставки в корзине.

Основные макеты Virtuemart 3. Страница производителя (manufacturer)

components/com_virtuemart/views/manufacturer/default.php – основной макет страницы производителя. Содержит список производителей магазина. Этот макет будет показан для типа пункта меню Joomla Virtuemart –> Производители.

7

components/com_virtuemart/views/manufacturer/default.php – макет страницы отдельного производителя. Содержит изображение производителя, описание производителя  и ссылку на товары производителя. Этот макет будет показан для типа пункта меню Joomla Virtuemart –> Производитель.

8

Вы можете спросить: «А где же макет списка товаров производителей?». Его нет. Роль данного макета выполняет макет категории. По-моему, это очень спорное решение. Отличие URL товаров заданного производителя от товаров категории только в том, что в первом случае передается параметр virtuemart_manufacturer_id вместо ID категории.

Основные макеты Virtuemart 3. Выписанный счет/Страница просмотра информации о заказе (invoice)

Данные макеты очень похожи на макеты из директории orders. Не путайте их! Инвойсы служат для отображения информации о сделанном заказе в браузере. Это та страница, где нужно ввести номер заказа и секретный ключ, та страница, что задействована в письме и может использоваться для его редактирования: Просмотр письма с подтверждением заказа по ссылке в браузере. Также инвойс генерирует выписанный счет в PDF. Ордеры же используются в личном кабинете для отображения заказов.

components/com_virtuemart/views/invoice/invoice.php – основной макет счета. Содержит параметры и позиции заказа, а также вызывает большинство макетов счета, описанных ниже.

components/com_virtuemart/views/invoice/invoice_order.php – содержит подробности заказа, статус заказа, информацию о доставке.

components/com_virtuemart/views/invoice/invoice_items.php – содержит позиции заказа.

components/com_virtuemart/views/invoice/invoice_history.php – содержит историю движения заказа (смены статусов заказа).

Основные макеты Virtuemart 3. Письма с подробностями заказов, отправляемые продавцу и покупателю (invoice mail)

Макеты писем сложные. Я советую заниматься их редактированием только тем, кто может хорошо читать код PHP и HTML. Для всех остальных проще купить Virtuemart Email Manager Plus.

Все макеты писем представлены в двух форматах: html-письмо и raw-письмо (обычное текстовое). Ниже описаны макеты только для формата html. Макеты писем raw имеют точно тот же смысл. Выбрать формат писем можно в общих настройках Virtuemart.

components/com_virtuemart/views/invoice/mail_html.php – основной макет письма. Содержит всю информацию, отображающуюся в письме, а также вызывает большинство макетов письма, описанных ниже.

components/com_virtuemart/views/invoice/mail_html_header.php – шапка письма. Содержит изображение магазина и информацию о магазине.

components/com_virtuemart/views/invoice/mail_html_footer.php – подвал письма.

components/com_virtuemart/views/invoice/mail_html_pricelist.php – таблица заказанных товаров, их цен и статусов в письме.

components/com_virtuemart/views/invoice/mail_html_shopper.php – информация о покупателе в письме.

components/com_virtuemart/views/invoice/ mail_html_shopper_more.php – пустой макет.

components/com_virtuemart/views/invoice/mail_html_shopperaddresses.php – адрес доставки товара, указанный при оформлении заказа, в письме.

components/com_virtuemart/views/invoice/mail_html_vendor.php – расширенный формат письма для продавцов. Если вы не используете функционал мультипродавцов в VM, а скорее всего так и есть, данный макет вам не нужен.

components/com_virtuemart/views/invoice/mail_html_vendor_more.php – пустой макет.

9

Основные макеты Virtuemart 3. Список заказов в личном кабинете (orders)

components/com_virtuemart/views/orders/list.php – макет списка заказов в личном кабинете. Отображает перечень заказов, подробности каждого из которых выводит следующий макет.

10

components/com_virtuemart/views/orders/details.php – основной макет отдельного заказа в личном кабинете. Содержит всю информацию, отображающуюся в заказе, а также вызывает большинство макетов письма, описанных ниже.

11

components/com_virtuemart/views/orders/details_order.php – основная информация о заказе в личном кабинете.

components/com_virtuemart/views/orders/details_items.php – позиции заказа в личном кабинете.

components/com_virtuemart/views/orders/details_history.php – история изменения статусов заказа в личном кабинете.

12

components/com_virtuemart/views/orders/details_pdf.php – пустой макет.

Основные макеты Virtuemart 3. Редактирование данных пользователя в личном кабинете (user)

В макетах пользователя есть одна особенность: пользователь может быть как покупателем, так и продавцом магазина. В зависимости от прав пользователя, часть макетов может не использоваться, а другая часть заменяться другими макетами. Из названий макетов в целом понятно, для каких прав он используется. Скриншоты не привожу, т.к. они слишком неоднозначные.

components/com_virtuemart/views/user/edit.php – основной макет страницы редактирования данных пользователя Virtuemart 3. Может быть получен путем добавления в меню пункта типа Virtuemart –> Учетная запись. Содержит всю информацию о пользователе в полях, позволяющих ее изменить, а также его заказы и другие элементы. Вызывает большинство макетов письма, описанных ниже.

components/com_virtuemart/views/user/edit_address.php – макет редактирования адреса доставки авторизованного пользователя в личном кабинете и при оформлении заказа неавторизованного пользователя Virtuemart 3. Макет сложный. Реализован крайне неоднозначно.

components/com_virtuemart/views/user/edit_address_addshipto.php – макет выбора адреса доставки из существующих адресов.

components/com_virtuemart/views/user/edit_address_userfields.php – макет полей пользовательских данных адреса.

components/com_virtuemart/views/user/edit_orderlist.php – макет списка заказов пользователя в личном кабинете при редактировании полей. Реализован в отдельной вкладке. Зачем он нужен, когда есть список components/com_virtuemart/views/orders/list.php, мне непонятно.

components/com_virtuemart/views/user/edit_shopper.php – макет полей пользовательских данных.

components/com_virtuemart/views/user/edit_vendor.php – редактирование данных продавца. Только для пользователей с правами продавца.

components/com_virtuemart/views/user/edit_vmshopper.php – макет полей пользовательских данных.

components/com_virtuemart/views/user/login.php – форма авторизации пользователя в корзине и личном кабинете.

components/com_virtuemart/views/user/mail_html_reguser.php – макет отправки письма после регистрации покупателя.

components/com_virtuemart/views/user/mail_html_regvendor.php – макет отправки письма после регистрации продавца.

Основные макеты Virtuemart 3. Форма всплывающего окна «Задать вопрос по товару» (askquestion)

components/com_virtuemart/views/askquestion/form.php – основной макет страницы формы «Задать вопрос по этому товару» Virtuemart 3. Показывается во всплывающем окне на странице товара, когда пользователь нажимает соответствующую кнопку.

components/com_virtuemart/views/askquestion/mail_confirmed.php – макет с подтверждением отправки запроса (не письмо!).

components/com_virtuemart/views/askquestion/mail_html_question.php – письмо с запросом.

13

Подмакеты Virtuemart 3 (блоки, которые могут встречаться на разных страницах)

В Virtuemart 3 появились так называемые «подмакеты» или «sublayouts». Подмакеты представляют собой элементы магазина, которые могут встречаться на разных страницах. Самый яркий пример подмакета – блок цен товара. Он одинаков и в категории и в карточке товара. Теперь, если вы хотите изменить что-то в блоке цен, вам не нужно редактировать несколько макетов в разных местах. Достаточно отредактировать один подмакет и изменения появятся сразу на всех страницах. Рассмотрим подмакеты, которые предлагает нам Virtuemart 3:

components/com_virtuemart/sublayouts/addtocart.php – подмакет блока добавления товара в корзину. Включает в себя подмакеты addtocartbar, addtocartbtn, customfields. Почему так сложно? Форма добавления товара в корзину может содержать в себе дополнительные поля, являющиеся атрибутами корзины. И не просто поля, а такие, которые могут иметь несколько значений, одно из которых выбирает покупатель перед добавлением товара в корзину. Чтобы все работало правильно должно быть так, как есть.

components/com_virtuemart/sublayouts/addtocartbar.php – подмакет кнопки добавления товара в корзину с формой ввода количества товара.

components/com_virtuemart/sublayouts/addtocartbtn.php – подмакет кнопки добавления товара в корзину.

components/com_virtuemart/sublayouts/askrecomjs.php – подмакет, содержащий скрипты всплывающего окна «Задать вопрос по этому товару» и «Рекомендовать другу». Если у вас какие-либо проблемы со скриптами этих окон, то вы можете подправить их в данном подмакете.

components/com_virtuemart/sublayouts/categories.php – подмакет списка дочерних категорий родительской категории.

components/com_virtuemart/sublayouts/customfield.php – PHP-класс, генерирующий отображение настраиваемых полей. Вынесен сюда, как я понимаю, не случайно, а для того, чтобы каждый сайт мог переопределить этот класс и подправить его под особенности бизнеса. Иногда это бывает необходимо.  Решение не очень правильное с точки зрения Joomla и MVC, но наиболее простое.

components/com_virtuemart/sublayouts/customfields.php – подмакет настраиваемых полей Virtuemart.  

components/com_virtuemart/sublayouts/prices.php – подмакет цен товара Virtuemart 3.

components/com_virtuemart/sublayouts/products.php – подмакет списка товаров категории Virtuemart 3.

components/com_virtuemart/sublayouts/products_horizon.php – подмакет списка товаров категории Virtuemart 3 в другом формате.

components/com_virtuemart/sublayouts/rating.php – подмакет рейтинга товара.

components/com_virtuemart/sublayouts/related.php – подмакет похожего товара. 1 штука.  

components/com_virtuemart/sublayouts/snippets.php – подмакет сниппетов микроразметки Schema.org.

components/com_virtuemart/sublayouts/stockhandle.php – подмакет остатков товара.

components/com_virtuemart/sublayouts/tos.php – подмакет условий обслуживания товара.

Примерно вот такое количество файлов нужно обработать, чтобы создать качественный шаблон интернет-магазина Virtuemart. Не стоит удивляться тому, что они стоят дорого, а интернет-магазин с уникальным дизайном еще дороже.

Отсюда же вытекает, что бесплатные шаблоны Virtuemart в 99% случаев либо некачественные, либо не бесплатные.

Надеюсь, данная статья поможет вам самостоятельно отредактировать оформление Virtuemart 3, а также сэкономит сотню другую зеленых енотов =).

P.S.: Рекомендую также почитать про переопределение файлов скриптов и стилей Virtuemart.

Об авторе
Wedal
(Виталий). Веб-разработчик полного цикла (Full Stack). Создатель и автор сайта Wedal.ru.
Основной профиль – создание сайтов и расширений на CMS Joomla.
Добавить комментарий

Комментарии  
4
Огромное спасибо за статью! Добавил в закладки и на стену вконтакте, чтобы не дай бог не потерять! :-) Теперь больше не придётся каждый раз лихорадочно перерывать папки в поисках нужного документа!
5
Огромное спасибо, исчерпывающая статья. Ничего лишнего, все то что "доктор прописал".
0
Здравствуйте! Подскажите в каком файле выводится кнопка "Уведомить меня", когда товар заканчивается на складе? Буду очень признателен за ответ!
0
Дмитрий, components/com_virtuemart/sublayouts/addtocartbar.php
0

Цитирую Wedal:

Дмитрий, components/com_virtuemart/sublayouts/addtocartbar.php


Большое Вам спасибо!
Подскажите, возможно еще узнать в каком файле генерируется pdf-файл счета заказа?
3
Дмитрий, можно. Вы узнаете это, если внимательно прочитаете данную статью.
0
Добрый день. Подскажите в каком файле .php править код превьюшки с рекомендуемыми товарами?
Превьюшки товаров категории сделал под себя, а вот рекомендуемые товары не нахожу где править...
0
Александр, если вы имеете ввиду рекомендуемые товары, которые появляются в карточке товара, то /productdetails/default_relatedproducts.
0

Цитирую Wedal:

Александр, если вы имеете ввиду рекомендуемые товары, которые появляются в карточке товара, то /productdetails/default_relatedproducts.


где найти данный файл? у меня такого файла в компоненте VirtueMart 3 просто нет...
Рекомендуемые я обычно вывожу на главной странице, в магазине выставлял галочки, что товар рекомендуемый и он отображается на главной у меня. НЕ в карточке товара.
1
Александр, тогда это должен быть файл components/com_virtuemart/sublayouts/products.php
Именно он вызывается в макете главной страницы для рекомендуемых товаров.
А вообще, лично мне больше нравится не стандартная главная страница VM, а самодельная, составленная из модулей. Вы можете сделать главной страницей магазина обычную статью Joomla, а в ней вывести любые модули Virtuemart с помощью конструкции {loadposition позиция_модуля}.
1

Цитирую Wedal:

Александр, тогда это должен быть файл components/com_virtuemart/sublayouts/products.php
Именно он вызывается в макете главной страницы для рекомендуемых товаров.
А вообще, лично мне больше нравится не стандартная главная страница VM, а самодельная, составленная из модулей. Вы можете сделать главной страницей магазина обычную статью Joomla, а в ней вывести любые модули Virtuemart с помощью конструкции {loadposition позиция_модуля}.


Спасибо за ответы.я разобрался.
Модуль я вывожу в статье.
А настройка отображения рекомендуемых товаров находится "mod_virtuemart_product/default.php" либо single.php
Эти параметры выбираются при создании данного модуля.
А почему я тупил. Т.к менял в дпнном файле код и ничего не обновлялось. Затем я пересохранил модуль и после этого произошли изменения на странице.
Всем спасибо и может кому пригодится.
0
Доброго времени суток.

В карточке товара перестали открываться дополнительные изображения. "Открывать дополнительные изображения в области основного изображения" - стоит галка. Но они просто показываются как иконки. Некоторое время назад всё открывалось нормально. Подскажите, что необходимо поправить?
0
vviitteekk, это какой-то конфликт скриптов, либо вы изменили стандартные классы блоков в макете с основным(дополнительными) изображением. Покажите страницу сайта, где наблюдается проблема. Постараюсь подсказать как исправить.
0
Например, http://worldofsurprises.ru/nastolnaya-igra-monopoliya-voronezh-moj-gorod-detail. Подобное наблюдается у всех товаров.
0
Проблему удалось решить восстановлением данных из бэкапа. Скорее всего, это был конфликт fancybox с jQuery. Решил, что jQuery можно отключить и снял галки в настройках магазина. Пока всё работает.
0
Вопрос опять открыт. Проблема опять появилась. Какая-то мистика или хостер виноват?
0
Вопрос решён. Дело было в модуле "Поиск товаров". После его отключения доп. изображения не показываются. При включении - показываются.
0
Здравствуйте,
Подскажите пожалуйста, в каких файлах формируется название страницы в браузере для категории и карточки товара?
Необходимо изменить:
категория - с "название категории" на "назв категории - название сайта"
товар - с "назв категории : назв товара" на "назв товара - назв сайта".
0
Станислав, это чуть сложнее. Если нужно добавить название сайта в URL, то это можно сделать в общих настройках Joomla(опция "Включать название сайта в заголовки страниц") . Но этот вариант добавит название сайта на все страницы.

Если нужно только к товарам и категориям, то вам нужно вставить в соответствующие макеты код, подобный этому, подправив Title так, как вам нужно:

Код:


$document = JFactory::getDocument();

if ($product->customtitle) {
$document->setTitle(strip_tags(html_entity_decode($product->customtitle,ENT_QUOTES)));
} else {
$document->setTitle(strip_tags(html_entity_decode(($category->category_name ? (vmText::_($category->category_name) . ' : ') : '') . $product->product_name,ENT_QUOTES)));
}

0
Доброго времени суток.
Подскажите пожалуйста, необходимо в макет prices, добавить: код товара, размер, рост, вес, Цена самовывоза, Цена с доставкой.
Спасибо за внимание!
0
Utilizator, а что подсказать-то?
0
Благодарю за статью!
0
Здравствуйте!
Подскажите, где на сайте найти статью про пакетное добавление категорий, товаров и изображений товаров в 3-м виртмарте?
0
Татьяна, есть такая статья, но она уже устарела:
https://wedal.ru/rasshireniya-joomla/virtuemart-internet-magazin-na-joomla-chast-22-simplecsv.html

Принципы остались схожими, только вместо SimpleCSV сейчас нужно использовать CSV Improved.
0

Цитата:

Для переопределения макета карточки товара нужно скопировать файл: components/com_virtuemart/views/productdetails/ tmpl/default.php в директорию: templates/ВАШ_ШАБЛОН/html/com_virtuemart/productdetails/

В директории ВАШ_ШАБЛОН/html/com_virtuemart/productdetails уже есть файл default.php. Содержание у них разное. Как быть в данной ситуации?
0
Татьяна, это означает, что в вашем шаблоне макет страницы товара уже переопределен. В этом случае просто редактируйте существующий в шаблоне файл, без замены его оригинальным.
0
Здравствуйте! Подскажите пожалуйста, в каком файле можно отредактировать тег H1 для категорий товаров Virtuemart? Сейчас все заголовки в категориях идут как H3. Спасибо.
0
Юрий, components/com_virtuemart/views/category/tmpl/default.php
Только не забудьте сначала переопределить этот макет в шаблон Joomla и редактируйте уже там.
0
Подскажите есть ли какое то решение для макета карточки товара, чтобы зажав плюсик количество товара начало автоматические прибавляться, чтобы не кликать много раз?
0
Guest, это можно сделать без дополнительных расширений, но придется немного разобраться.

1) Есть jQuery-плагин, который накручивает число: https://github.com/johnjcamilleri/jquery-spincrement
2) В jQuery есть события, фиксирующие нажитие и отжатие кнопки мыши: mousedown и mouseup соответственно.

Всё, что вам нужно - подключить плагин на сайте и написать небольшой jQuery-скрипт, который будет активировать его по нажатию кнопки увеличения количества и отключать на отжатие кнопки.

Если самостоятельно вам сложно это сделать, можете запросить у меня платную помощь через форму контактов.
0
только начинаю разбирать "потроха" VM. Вопрос: все файлы из components/com_virtuemart/views/ перенесла в /templates/мой-шаблон/html/com_virtuemart. А где в настройках VM прописать этот путь? Сделала Настройки - Шаблоны - Настройки файлов - Основная директория - всё поплыло сразу...
0
Liza, в настройках этот путь прописывать не нужно. Joomla ищет переопределенные макеты до загрузки макетов компонента. Если вы скопировали макет правильно, то сразу после копирования будет загружаться он, а не макет из компонента.
0
Спасибо, Wedal! Пока вникаю в эти тонкости, что и когда формируется и как грузится. Как не хватает "букваря" по этим моментам.
0
Liza, "букварь" по этим моментам: https://wedal.ru/uroki-joomla/joomla-layouts.html
0
Вывел на главной модуль слайдера производителей, mod_vm_manufacturer который и столкнулся с не типичной для себя проблемкой, url производителя в слайдере принимает вид .../manufacturers/... а при переходе на страницу бренда из карточки товара открывается url .../manufacturer/...
Разумеется, хочется чтобы при клике на иконку бренда в слайдере на главной был переход на страницу бренда, а сейчас из-за разницы в одну букву открывается пустая страница.
Сталкивались с подобным? Подскажите, плиз, как исправить.
0
Алексей, в VM есть страница производителя, а есть страница категории производителей. Возможно в этом разница. Если модуль дает такую ошибку, я бы переопределил в шаблон его макет и отредактировал в нем генерацию URL, заменив на нужную, вот и всё.
0
Спасибо за труды, Ветал! Из своего опыта не подскажешь: отредактировал шаблон формирования счета mail_html_pricelist.php под расчет веса позиций и общего веса заказа, работает всё четко, но в PDF выводится одна шапка.. Где копать?
0
Владимир, c PDF там были свои сюрпризы, начиная от некорректного отображения кириллицы в базовом шрифте и заканчивая мелкими ошибками. Если в PDF выводится только шапка, то возможно там какая-то ошибка PHP при генерации остальной информации. Попробуйте сначала разобраться, происходит это из-за переопределенных макетов или нет. Временно переименуйте папку html в вашем шаблоне. Так вы отключите все переопределения. Проверьте генерацию PDF. Если она будет работать, то таким же способом определите проблемный файл, если нет, то дело не в переопределениях и нужно искать ошибку в настройках.
0
Спасибо за вашу по-истине ВИКИ по виртумарту!
Пару вопросов.
1) не выводятся изображения сопутствующих товаров (related), которые указаны в карточке товара. Выводятся только названия товаров. Использовал разные рекомендации, эффект одинаковый. Сейчас за вывод отвечают строки:


Цитата:

echo '' . JHtml::link (JRoute::_ ('index.php?option=com_virtuemart&view=productdetails&virtuemart_product_id=' . $related->virtuemart_product_id . '&virtuemart_category_id=' . $related->virtuemart_category_id), $thumb, array('title' => $related->product_name,'target'=>'_blank')) . '';
echo JHtml::link (JRoute::_ ('index.php?option=com_virtuemart&view=productdetails&virtuemart_product_id=' . $related->virtuemart_product_id . '&virtuemart_category_id=' . $related->virtuemart_category_id),$related->product_name, array('title' => $related->product_name,'target'=>'_blank'));

Но картинок нет, выводится правильная ссылка на товар, но внутри этой ссылки нет тега , т.е. ссылка вообще без анкора. Как вывести картинку?

2) вопрос 2 - Хочется вывести список товаров, принадлежащих определенному производителю. Вместо этого сперва выводится страница с запросом что выводить и только там еще кнопка "Вывести все товары". Хочется убрать этот лищий шаг из стандартного алгоритма. Как?
0
Александр,

1) Нужно переопределить файл /components/com_virtuemart/sublayouts/customfield.php в шаблон, найти в нем строчку:

Код:

$related = $pModel->getProduct((int)$customfield->customfield_value,TRUE,$customfield->wPrice,TRUE,1);


и добавить после нее:

Код:

$pModel->addImages($related );	


Не скажу точно, но по идее, это должно работать. После, вы сможете найти картинки в переменной $related, которая передается в подмакет related.php

2) Пункта меню такого типа в VM, к сожалению, нет по умолчанию. Можно получить ссылку на список товаров с такой страницы и использовать ее для создания пункта меню. Другой вариант - написать свой тип пункта меню, который бы вы водил сразу товары производителя. Для этого нужно скопировать макет пункта, который выводит инфо о производителе, переименовать, убрать все лишнее, оставив только выбор производителя в XML-файле настроек. Далее получать из настроек производителя и выбирать для него товары, загружая на текущую страницу. В общем, с этим справитесь, только если можете писать PHP-код.
0
Здравствуйте. Очень доступно написано, очень полезная статья. Я увы не учился програмированию (занимаюсь продажей запасных частей к промышленному швейному оборудованию), но стараюсь сделать свой сайт. У меня возник вопрос: Google настоятельно рекомендует внедрить микроразметку, неделю борюсь (статтей много, а конкретики практически никакой) никак не получается. У Вас в статьи есть про snippets.php, но к сожелению не могу понять где именно и что точно править.
0
Сергей, микроразметка для VM может быть исправлена здесь (только не забудьте переопределить предварительно этот файл в шаблон Joomla):
/components/com_virtuemart/sublayouts/snippets.php
0
Я правильно понял? Скопировать файл с: componenets в: template
0
Сергей, да. По образу и подобию описанных в этой статье переопределений.
0
Добрый день. У меня все php-файлы которые находятся в:
components/com_virtuemart/sublayouts
идентичны файлам которые находятся в:
templates/мой_шаблон/html/com_virtuemart/sublayouts
В том числе и snippets.php
Изменил только 131 строку:
Был код: "price": "",
Стал: "price": "",
А что дальше прописать, никак не пойму.
Если глупые вопросы, прошу извинить, так как, в программировании "чайник". Который старается разобраться.
0
Сергей, раз уж речь зашла про глупые вопросы... А чем у вас в комментарии отличается код "был" от код "стал"?
0
Был: "price": "",
Стал: "price": "",
0
В файле default.php сделал такие изменения:
1) Было:
Стало:
0
Сергей, в комментариях вырезается код, вставленный как текст. Чтобы вставить код используйте последнюю иконку в редакторе. Т.е. код должен быть обрамлен тегом CODE.
0
Извините.
1. Было:

Код:

<div class="product-container productdetails-view productdetails">


Стало:

Код:

<div class="product-container productdetails-view productdetails itemscope itemtype="http://schema.org/Product">


2. Было:

Код:

<div class="vm-product-details-container">


Стало:

Код:

<div class="vm-product-details-container" itemprop="offers" itemscope itemtype="http://schema.org/offer">


3. Было:

Код:

<h1 class="noformat"><?php echo $this->product->product_name ?></h1>


Стало:

Код:

<h1 itemprop="name" class="noformat"><?php echo $this->product->product_name ?></h1>


4. Было:

Код:

<div class="product-short-description">


Стало:

Код:

<div class="product-short-description" itemprop="description">


5. Было:

Код:

echo shopFunctionsF::renderVmSubLayout('prices',array('product'=>$this->product,'currency'=>$this->currency));


Стало:

Код:

echo shopFunctionsF::renderVmSubLayout('prices',array('product'=>$this->product,'currency'=>$this->currency));
echo "<meta itemprop='price' content='".$this->product->prices['salesPrice']."'>";
echo "<meta itemprop='priceCurrency' content='".$this->currency->_vendorCurrency_code_3."'>";


6. Было:

Код:

echo shopFunctionsF::renderVmSubLayout('stockhandle',array('product'=>$this->product));


Стало:

Код:

echo shopFunctionsF::renderVmSubLayout('stockhandle',array('product'=>$this->product));
if($this->product->product_in_stock > 0){
echo "<meta itemprop='availability' content='http://schema.org/InStock' />";
} else {
echo "<meta itemprop='availability' content='http://schema.org/OutOfStock' />";


7. Было:

Код:

<div class="product-description">


Стало:

Код:

<div class="product-description" itemprop="description">


8. После строки:

Код:

defined('_JEXEC') or die('Restricted access');


Добавил:

Код:

$doc = JFactory::getDocument();

$head = '<meta property="og:title" content="'.$this->product->product_name.'"/>';
if(!empty($this->product->product_s_desc)) {
$head .=' <meta property="og:description" content="'.htmlspecialchars(strip_tags($this->product->product_desc)).'"/>';
}elseif (!empty($this->product->product_desc)) {
$head .= '<meta property="og:description" content="'.htmlspecialchars(strip_tags($this->prouct->product_desc)).'"/>';
}
$head .= '<meta property="og:image" content="'.JURI::base().$this->product->images[0]->file_url.'" />';
$head .= '<meta property="og:type" content="website" />';
$head .= '<meta property="og:site_name" content="sewpro.ltd"/>';
$head .= '<meta property="og:url" content="'.JFactory::getURI().'" />';
$doc->addCustomTag($head);

0
Кажется ничего не забыл. Огромадное спасибо Вам за обьяснения.
0
Здраствуйте Виталий. После того, как отредактировал файл default.php , решил проверить в google микроразметку. В итоге google показал 8 ошибок( хотя до этого было 5). Пришлось вернуть все обратно.
Единственное хорошее изменение:
в файле snippets.php, а именно:
Было:

Код:

"price": "<?php echo ($product->prices['salesPrice']); ?>",


Стало:

Код:

"price": "<?php echo round($product->prices['salesPrice']); ?>",


Насколько я понял, Google Merchant, после этого начал выводить правильную цену (до этого выводил цену в сотнях тисяч.
А что дальше сделать???? (хочу вывести для Гугла "brand", "review" "aggregateRating", включил отображение оценки товара, но aggregatRating так и не изменился).
Но не могу понять, что мне сделать.
Заранее благодарен за помощь!!!!!
0
Подскажите, как прикрутить рекапчу к кнопке оформления заказа без регистрации?
0
А зачем? Через оформление заказа спам не идет - слишком сложно для ботов.
0
Зато несложно настроить макрос для доброжелателей и конкурентов.
0

Цитирую Wedal:

А зачем? Через оформление заказа спам не идет - слишком сложно для ботов.


Ситуация такая. Есть проект интернет-магазина J3+Virtuemart 3. В целях упростить процедуру заказа отключили регистрацию и, соответственно, авторизацию на сайте. Таким образом антиспам-фильтра нет от слова совсем.
Согласен, ботам сложно пройти через алгоритм заказа на сайте. Но люди могут настроить макросы, имитирующие поведение реального пользователя и забить спамом заказы. Простая капча с вводом текста с картинки решает вопрос. Но для того, чтобы её прикрутить, нужно знать. какой файл обрабатывает форму заказа, чтобы запустить там проверку.
Коллеги, очень жду соображений по этому поводу.
0
Денис, никто не будет заниматься такой ерундой, т.к. разработка подобного макроса будет стоить значительно дороже, чем защита от его использования.

Обработчик формы корзины - это не слишком точное понятие для VM. Там пол движка затрагивается, когда оформляется заказ. Огромное количество классов и методов. Там вам и расчет цен, скидок, налогов, купонов, способов доставки, оплаты, пользовательских полей, групп.
0
Проблема актуальнее, чем кажется. у меня админ заморочился и буквально за час забил левыми заказами сайт. И это хорошо, чтоб мы в 1С-ку выгрузку отключили. В общем, решили вопрос использованием сторонней капчи и проверкой через AJAX. Надеюсь, этого будет достаточно.
0
Коллеги, а где находится обработчик формы корзины?
0
Wedal, добрый день.
Такая вроде бы простая задача, но решения не нашел.
у меня на главной выводятся:
1) модуль - шапка, с картинкой и названием сайта (название с тэгом H1)
2) товары категории VM (тип пункта меню - КАТЕГОРИЯ) - и там тоже выводится название категории с тегом H1. Что не очень хорошо для оптимизации

Вопрос: как убрать название категории? (п.2). Чтобы остался только один H1 (который выводится в модуле)

Версия VM 3.8.8.

Спасибо
0
hush, только редактировать макет категории товара. Нет возможности отключить заголовок через настройки. Файл:
/components/com_virtuemart/views/category/tmpl/default.php (его переопределяем в шаблон)

В нем есть строчка:


Код:

<?php if (!empty($this->category->category_name)) { ?>
<h1><?php echo vmText::_($this->category->category_name); ?></h1>
<?php } ?>



Нужно добавить в эту проверку также проверку на главную страницу.

Но вообще, выводить H1 в модуле - не лучшая идея, совсем не лучшая...
0
Но вообще, выводить H1 в модуле - не лучшая идея, совсем не лучшая...
- Почему?
0
H1 должен относиться к компоненту, а не модулю. Работать оно будет, да, я не спорю. Но логика усложняется. Вот вы, скажем, знаете, что для такой-то страницы заголовок генерируется не компонентом, не пунктом меню, а прописан в определенном модуле. А если придет другой разработчик? А если вы решите повторить эту затею для других страниц и насоздаете десятки модулей с заголовками? Админка станет похожа на чулан, в котором все свалено в кучу и не разобраться быстро что и где.
0
да, по H1 согласен. Но тут скорее ситуация нtстандартная - нужно вывести товары на главной, а нечем.

Вообще конечно странно - нет НИ ОДНОГО модуля, который бы нормально выводил товары категории плиткой, со всем доп полями. Ни одного не нашел - поэтому пришлось таким образом выкручиваться

спасибо
0
hush, так это ведь никак не связано с H1. У вас главная обязательно привязана к пункту меню, а у него в настройках вы можете задать уникальные H1 и Title. Зачем в модуль-то?

Насчет товаров плиткой - я бы взял стандартный модуль товаров VM, который mod_virtuemart_product, создал в нем альтернативный макет и сверстал плитку через флексы. Это даже быстрее, чем искать что-то готовое. Там в модуле задаете количество выводимых товаров и в макете остается html для цикла вывода товаров добавить и всё.
0
Доброго времени суток! Спасибо за статью, очень полезная! Простите за такой глупый вопрос, но можете, пожалуйста, подробнее написать как убрать +,- и 1 на странице возле товара, а оставить только ADD to cart?
Всем большое спасибо!
0
Оля, просто скрыть через CSS, добавив display:none;.
0
Отличная статья, непременно в закладки
0
Скажите, а как можно вывести дополнительные изображения товара на странице категории? Метод от второго виртуемарта не помогает.
0
Евгений, да. В макете категории товара (который должен быть предварительно переопределен в шаблон) где-нибудь в начале, до перебора товаров, добавьте:

Код:

$productModel = VmModel::getModel('Product'); 
$productModel->addImages($this->products);


После этого дополнительные изображения станут доступны. Правда это довольно ресурсоемкая задача...
0

Цитирую Wedal:

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

Код:

$productModel = VmModel::getModel('Product'); 
$productModel->addImages($this->products);


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



Прошу прощения, первый раз у Вас оставляю комментарий, не сразу увидел что код надо обрамлять тегом ((((

Смотрите, передо мной встала задача вывести в категории товаров, там где уже видно витрину товаров, но не заходя в сам товар , несколько изображений, решение 10-14 годов не помогает, просто роняет сайт, к сожалению ( Я попытался вставить ваш код выше в ../public_html/components/com_virtuemart/sublayouts/products.php после строчек :

Код:

defined('_JEXEC') or die('Restricted access');
$products_per_row = empty($viewData['products_per_row'])? 1:$viewData['products_per_row'] ;
$currency = $viewData['currency'];
$showRating = $viewData['showRating'];
$verticalseparator = " vertical-separator";
echo shopFunctionsF::renderVmSubLayout('askrecomjs');



Но сайт опять просто упал (

вставлял по старым инструкциям в этот же файл код:

Код:

<div class="additional-images">
<?php
if (!empty($product->images) and count ($product->images)>1) {
foreach ($product->images as $image)
{
echo '<div class="floatleft">' . $image->displayMediaThumb('class="product-image"', true, 'class="modal"', true, true) . '</div>';
}
}
?>
</div>



Сам блок отобразился на сайте где надо, но внутри он пустой, словно php вообще не понял о чем я его прошу. Я так полагаю собака там где-то зарыта, но и те строчки которые вы написали тоже нужны, только я не могу понять куда их пихать, можете чуть подробнее об этом? VM3 версии 3.8.8

P.s. И я буду крайне признателен если сможете помочь с тем кодом, который у меня отображается как пустой блок, что в нем может быть не так? Редактор никаких ошибок не выдаёт, то есть сам код php он считает валидным, сайт не падает, если его конкретно добавлять, но результат нулевой
0
Андрей, пробовали этот способ?
https://virtuemart.su/vyvod-dopolnitelnyx-izobrazhenij-tovara-na-stranice-kategorii-v-virtuemart-2/
0
Да, но в файле components/com_virtuemart/views/category/view.html.php строчка

Код:

$productModel->addImages($products,1);

Отсутствует ((( делал поиск по всем файлам сайта, не нашел нигде.
0

Цитирую Wedal:

Андрей, пробовали этот способ?
https://virtuemart.su/vyvod-dopolnitelnyx-izobrazhenij-tovara-na-stranice-kategorii-v-virtuemart-2/


Виталий, нашёёёёёёл !!!! :DDDDD Сморите какая штука ) Я раньше пытался сделать все так как это описано на форуме, ссылку на который вы написали выше ) Но ситуация такая - На версиях Virtuemart З.0.14 и вышe Нужный нам файл находится в папке: ../components/com_virtuemart/views/category/view.html.php
И вместо строчки

Код:

$productModel->addImages($products,1);

нас будет интересовать строчка

Код:

$imgAmount = VmConfig::get('prodimg_browse',1);

, у меня она находилась на строке под номером 248 )))) И Вот там, после первых двух манипуляций, мы прописываем число, где 0 - это все картинки которые есть) А любая другая цифра, это конкретно число ограничения ) Сейчас буду всё это дело дорабатывать в CSS, но радость в том что у меня получилось ) Спасибо Вам! )