Эта статья является продолжением статьи VirtueMart – интернет-магазин на Joomla. Часть 19. Редактирование шаблона VirtueMart (Начало). В ней я расскажу о назначении файлов шаблона VirtueMart в двух из оставшихся четырех папок: common и product_details. Данная информация пригодится всем тем, кому требуется изменить внешний вид интернет-магазина, сделанного на VirtueMart, настроив его под себя.
Содержание
Итак, в предыдущей статье мы рассмотрели шаблоны корзины, страницы списка товаров и оформления заказа VirtueMart. Далее остаются шаблоны fly-страницы товара, e-mail-сообщения и некоторых других мест интернет-магазина. Начнем рассмотрение с fly-страницы товара, т.к. все дальнейшее описание будет строиться именно на ней.
Подпапка product_details
Папка product_details содержит шаблоны возможных вариантов страницы товара и дополнительных включений в нее.
Шаблоны страницы:
1) flypage.tpl.php – стандартный шаблон страницы товара. Выглядит, как показано на рисунке:
Данный шаблон задается в настройках VirtueMart и в настройках категории товаров. В этом шаблоне редактируется положение всех общих элементов, но не сами элементы.
2) flypage_images.tpl.php – шаблон, предназначенный для отображения страницы товара с дополнительными изображениями. Кстати сказать, дополнительные изображения добавляются не в настройках товара, а при клике в списке товаров по ссылке в столбце «Медиа».
3) flypage_lite_pdf.tpl.php – данный шаблон предназначен для удобного конвертирования в PDF. Он не показывает некоторые элементы интернет-магазина, например, кнопку добавления в корзину, и должен использоваться когда VirtueMart работает только как каталог.
4) flypage_new.tpl.php – просто другой вид страницы. См. рисунок:
5) flypage-ask.tpl.php – просто другой вид страницы. См. рисунок:
6) garden_flypage.tpl.php – изображение справа. См. рисунок:
Хочу заметить, что данные шаблоны первоначально выглядят ужасно и требуют редактирования кода, для создания приятного глазу вида страницы товара. Для редактирования требуются знания html и CSS. Знание PHP здесь не критично.
Примечание
- Вы смотрите страницу товара в браузере
- Изменяете шаблон страницы товара в настройках категории
- Обновляете страницу браузера
- Видите все тот же старый шаблон.
В чем дело?
Дело в том, что шаблон задается в ссылке на страницу товара. При изменении шаблона в настройках магазина вид ссылки на страницу товара из категории изменяется, т.о. при переходе из категории, мы увидим новый шаблон, но при обновлении страницы ссылка не изменяется, потому видим старый. Будьте внимательны!
Таковы стандартные шаблоны страницы товара VirtueMart. Из качество оставляет желать лучшего, но в целом, они содержат в себе все необходимое для тонкой настройки.
В папке product_details имеется еще подпапка includes. Рассмотрим содержащиеся в ней файлы:
1) addtocart_advanced_attribute.tpl.php – шаблон отображения свойств и атрибутов товара на странице товара VirtueMart
2) addtocart_custom_attribute.tpl.php – шаблон отображения свойств, которые вводятся вручную. См. рисунок:
3) addtocart_drop.tpl.php – отвечает за выпадающий список атрибутов и свойств. Особо тут редактировать нечего.
4) addtocart_form.tpl.php – собственно, форма добавления товара в корзину. См. рисунок
5) addtocart_list_multi.tpl.php – с этим файлом вообще долгая история. Он отвечает за форму добавления товара в корзину, но применимо:
- К дочерним товарам (я про это).
- При отображении кнопки добавления сразу для всех дочерних товаров (включается в Товар –> Показать опции –> Установить «Использовать список "бокс" для зависимых товаров» – > Выбрать «Кнопка "Добавить в корзину" для каждого зависимого товара»). Такая вот мутотень. Вообще говоря, эта опция только для очень искушенных пользователей т.к.:
- Типы товаров уже сами по себе очень сложны для понимания
- Настройки, описанные мной выше нельзя применить сразу ко всем товарам, можно только к каждому отдельно. Конечно, есть SQL-запросы, но все это для продвинутых Web-мастеров.
6) addtocart_list_single.tpl.php – тоже самое, что и addtocart_list_multi.tpl.php, но: ….. «Одна кнопка "Добавить в корзину"».
Чтобы было более понятно как добиться такого отображения привожу рисунок с настройками:
7) quantity_box_general.tpl.php – шаблон формы ввода количества товара перед добавлением в корзину:
8) quantity_box_radio.tpl.php – шаблон формы ввода количества товара перед добавлением в корзину, при стиле отображения «ratio». Этот стиль отображения количества задается в настройках товара, но как-то плохо работает. Мне не удалось толком настроить отображение через radio, если у кого получится – пишите.
На этом шаблоны fly-страницы товара VirtueMart заканчиваются. Правда некоторые из них еще будут перекликаться с шаблонами из папок common и pages, которые мы рассмотрим далее.
Подпапка common
Судя по названию в этой подпапке содержаться шаблоны VirtueMart, общие для многих частей интернет-магазина. Сюда входят аж 18 файлов:
1) availability.tpl.php – шаблон информации о доступности товара:
2) buttons.tpl.php – шаблон иконок печати, pdf, сообщения:
3) categoryChildlist.tpl.php – шаблон отображения подкатегорий данной категории на странице товара. Рисунок скажет нагляднее:
4) couponField.tpl.php – как видно из названия, этот шаблон отвечает за поле ввода купона, которое находится в разделе корзины:
5) featuredProducts.tpl.php – шаблон рекомендуемых товаров, отображающихся на странице списка товаров категории (browse)
6) login_form.tpl.php – шаблон формы авторизации после нажатия ссылки «оформить заказ» в корзине:
7) minicart.tpl.php – шаблон мини-корзины, которая отображается через главный модуль VirtueMart.
8) moreImages.tpl.php – пустой файл
9) pathway.tpl.php – как понятно из названия это шаблон пути к товару. Отображение этого пути должно быть включено в настройках шаблона VirtueMart.
10) price.tpl.php – шаблон цены товара. Относится как к странице товара, так и к странице категорий товаров! Именно в нем определяется вид зачеркнутых цен.
11) productsnapshot.tpl.php – шаблон сопутствующих товаров, отображаемых на странице товара. Для того, чтобы они показывались, нужно задать их в настройках товара, вкладка «Сопутствующие товары».
12) recent.tpl.php – шаблон недавно просмотренных товаров на странице товара:
13) relatedProducts.tpl.php – данный файл отвечает за тоже, что и файл productsnapshot.tpl.php, только если первый выводит именно единичный товар, то этот выводит список тех файлов. Бррр… Получилось ужасно. Еще раз. Файл productsnapshot.tpl.php это товар, а файл relatedProducts.tpl.php – цикл создающий несколько товаров из productsnapshot.tpl.php. В общем, как-то так. Не знаю зачем было делать все так сложно, но мы имеем именно такую структуру.
14) reviewform.tpl.php – шаблон формы добавления отзыва на странице товара.
15) reviews.tpl.php – шаблон отзывов на странице товара.
16) shopIndex.tpl.php – заголовок главной страницы VirtueMart.
17) voteform.tpl.php – теоретически этот файл должен отвечать за форму голосования за товар на странице товара(там, где звездочки), но у меня не отвечает. Код выглядит как-то по-другому, не так как должен. Честно говоря, не знаю, почему так. Если кто разберется – напишите, буду признателен.
18) votes_allvotes.tpl.php – шаблон отображения голосов за товар на странице списка товаров (browse)
Следующая статья будет завершающей в истории про редактирование шаблона. В ней я расскажу про оставшиеся папки order_emails и pages.
Постовой:
Нашел полезную программу для вебмастеров, зарабатывающих в Sape - Sape Sitemap Generator. Она поможет добиться добавления абсолютно всех страниц вашего сайта в SAPE (даже если на нём полно страниц с УВ4 и с УВ5), и соответственно увеличить ваши доходы.
Большой респект!
addtocart_list_single.tpl.php – тоже самое, что и используется при отмеченной функции «Одна кнопка "Добавить в корзину". а на картинке ниже - наоборот..
ну да .. с ней..
ВОПРОС: как сделать чтобы "рекомендлованные товары" featuredProducts.tpl.php отображались в две колонки?
Точно, перепутал. Спасибо. Поправлю.
Так в шаблоне и смотрите. Немножко с ним разобраться и все будет.
Да уж там... внутри просто есть параметры!!
Великая ВЕЩЬ VM!!!
СПАСИБО.
ВОЗМУТИТЕЛЬНО не по теме! =)
Я тоже присоединюсь к Alexander : Cайт Отличный
До многой информации изложенной здесь самому дорыться очень сложно. Иногда даже просто вопрос-то не сформулировать для поисковиков или для форумов.
А здесь вот изучай и действуй! Только прочтешь статью а потом на пару ночей работы сразу появляется! =)
В скором времени здесь станет еще интереснее, а у посетителей появятся много новых возможностей.
во всех шаблонах блок, формируемый
availability.tpl.php (то есть ДОСТУПНОСТЬ товара) находиться на одном уровне с блоком за который отвечает addtocart_form.tpl.php (то есть добавление товара в корзину)
как сделать чтобы эти блоки шли один под другим (а не рядом) как по умолчанию?
где описывается что они рядом?
В вашем случае решений два: простое и нудное и сложное, но быстрое:
1) Можно вручную создать меню Joomla с соответствующими ссылками меню VirtueMart. Т.е. в меню Joomla все его пункты будут ссылками на соответствующие страницы товаров(списков товаров) VirtueMart. Этот способ прост, но осложняется дальнейшее редактирование меню.
2) Модуль выводится в определенной позиции, которая помещена в php-условие, при котором она показывается, только если текущая страница = Главной. Так довольно сложно понять, но если немножко покопаться в шаблонах и разобраться в условиях php, то делается очень быстро и просто. Единственный недостаток способа - в позиции должен быть только один модуль, иначе при уходе с главной страницы пропадут все модули, находящиеся в данной позиции в независимости от настроек.
Респект автору. Толково, доходчиво
Немного не по теме данного повествования, но столкнулся с проблемой 3 сутки не могу решить.
Суть: в панели администрирования VirtueMart при нажатии на любую ссылку выпадает 404 ошибка. Слетели иконки в простом виде, при переключении на расширенный имеем 404. Подозреваю что что-то напутал с глобальными настройками VirtueMart, но вернуться и что либо исправить не получается. Сам сайт с модулями VirtueMart есть, а управлять не получается. В нете подобные проблемы подымаются но толковых ответов нет. Надеюсь на помощь гуру
причина в настройках безопасности Site URL поменял Site URL повторно когда начал смотреть и изучать УРОКИ ). В результате URL админпанели VirtueMart стал , отличный от исходного в joomla. (кажется правильно выразился). вылечил след образом в /administrator/components/com_virtuemart/virtuemart.cfg.php в секции
//these path and url definitions here are based on the Joomla! Configuration
define( 'URL', 'http://site/mag' );
define( 'SECUREURL', 'http://site/' );
убрал /site/mag т.е привел к виду define( 'URL', 'http://site/' );
Может кому поможет и он не убьет столько времени как я
Вот скинул линк на товар
vodoliycomua.s18.yourdomain.com.ua/index.php?page=shop.product_details&flypage=flypage.tpl&product_id=1&category_id=2&option=com_virtuemart&Itemid=1
Спасибо что думаете над моей проблемой ...
vodoliy.com.ua/index.php?page=shop.product_details&category_id=2&flypage=flypage.tpl&product_id=1&option=com_virtuemart&Itemid=1
извините что столько пишу, уж очень хочу проблему эту решить ...
у меня вопрос по поводу товаров и категорий
создал 400 категорий в админке начал заполнять товары но увидел что не получаеться товар к категории привязать поскольку поле категория становиться пустым
но в списке категорий они все есть
на сайте тоже отображаеться
где я можу исправить в коде отображение категорий в товаре огромное спасибо
Это можно исправить изменив лишь одну цифру в одном файле, правда не помню в каком, давно дело было. Посмотрите комментарии в статьях по VirtueMart ответ точно есть в какой-то статье этой серии.
Получилось отредактировать файлом productsnapshot.tpl.php.
Но теперь вопрос в featuredProducts.tpl.php. Оформила его таблицей, после этого вместо трёх позиций на строку отображается один товар. Без таблички совсем плохо. Что с этим можно сделать? Спасибо
Нужно редактировать его самого или есть другой файл, который отвечает за данный вывод?
Спасибо за внимание, Wedal
Подскажите пожалуйста путь к файлу и название самого файла, где можно добавить к слову "Цена" слово "от". Например: было "Цена 300 руб", а чтобы стало "Цена от 300 руб" и так на каждой страничке товара.
Спасибо!
У меня вопрос: как поправить код чтобы на кнопке "Купить", после самого слова "купить" шло название товара (чтобы была кнопка [Купить nokia 3310] например)
Но если все же вам интересно, то могу дать вектор (сам сейчас искать не хочу). Само слово "купить" находится в языковом файле VirtueMart. Там же можно посмотреть переменную, которой оно присваивается. Далее ищем эту переменную в коде и добавляем к ней переменную названия товара. Как-то так.
Сначала нашел файлик addtocart_form.tpl , в котором есть строчка рядом с ('PHPSHOP_CART_ADD_TO') вставил вот эту строчку , но в итоге страница переставала работать "Ошибка".
Я в php полный дилетант, может вставляю не то и не в то место?
Убрать стандартный "купить" убрал. Но фон не могу найти.
Вот скрин.
http://ipicture.ru/uploads/20101125/7rZQ6Xz5.png
как от него избавиться?
Там в папках Browse и Product_details есть подпапки includes, в них файлы addtocart_form.tpl.php. Смысл в том, чтобы из такого файла, который в папке product_details перенести часть данных в аналогичный, но в папке browse. Вроде было так, но точнее не скажу, не помню в упор. Давно дело было...
Forbidden access
(script tag in POST)
у тебя по ходу на теги ругается((
Нужно кликнуть по ней, выбрать язык, на котором написан код а потом уже вставлять его.
Именно так я и сделал
Высота изображения 100рх не вызывает такой проблемы, а 150рх - уже плохо.
Такая беда случается например в блоке "Вас, возможно, заинтересуют следующие товары" внизу карточки товара.
Вот здесь можно посмотреть пример:
http://igruana.ru/stil-zhizni/nastolnaya-igra-bonanza.html
По умолчанию стоит значение 120 px.
может знаете, юзаю
addtocart_list_multi.tpl.php
Подтовары выводятся все ок А вот кнопки КУПИТЬ нету - исчезает ((( Я не пойму в чем прикол может поля налазиют друг на друга (( уже всю голову сломал подскажите как зафиксировать кнопку Addtocart в форме ??
Спасибо.
Да и опечатку исправьте:
Для начала большущий респек админу - пользуюсь сайтом постоянно...
Вопрос в следующем:
У меня в вирте стоят настройки на addtocart_list_single.tpl.php, так же поставил использование название подтовара как ссылку. При данных настройках отображаются свойства всех подтоваров сразу, и при перещелкивании подтоваров (по ссылкам) ничего не меняется (кроме разве что типовых значений).
1. Подскажите пожалуйста как сделать так чтобы отображались свойства только выбранного подтовара.
2. Возможно ли сделать свойства не открывающимся списком, а выбором с проставлением галочек? Как это сделать если возможно?
Благодарю заранее!!!
спасибо за отличную статью - не в первый раз уже она мне помогает! Но вот нюанс: вывела $product_availability на flypage - все чудесно, подключается шаблон availabilbity.tpl из папки common. Довела его до ума - красота.
Теперь хочу то же самое увидеть на странице категорий. Добавляю в шаблон browes ту же переменную: $product_availability - выводится только содержание самой переменной, шаблон с дополнительными заголовками и красивыми стилями и не думает подключаться. Пробовала перебросить шаблон в папку browse/includes - не помогает. Подскажите, что делать?
Уф, вроде разобралась: вставила содержимое файла availability.tpl в шаблон browse - теперь все работает! :)))
Я так понимаю, что за вывод информации о доступности отвечает блок
который находится в flypage.tpl.php.
Скажите, у всех так или только у меня (нет информации если созданы дочерние товары)?
1) Со страницы browse - все как положено. Появляется уведомление "товар добавлен в корзину", и два варианта: продолжить покупки или просмотреть корзину
2) Со страницы flypage - не работает совсем (при наведении курсор меняется, но после клика ни чего не происходит)
3) В меню "сопутствующие товары", в моем переводе: "может вас заинтересуют следующие товары" (ниже flypage) работает, но сразу перекидывает в корзину.
изображение у кнопок идентичное, так понимаю, применяется один стиль css.
Возникает вопрос: одна ли это функция или разные? Возможно ли использовать нормально работающую кнопку с browse, в других элементах? Подскажите где найти, и что заменить.
P.S. Шаблон не стандартный, но структура папок и файлов идентичная
Пример; есть магазин цветов, клиент выбирает букет а сопутствующий товар это коробка конфет, шампанское и т.п. Он просто выделяет их галочкой на странице букета и и по нажатию кнопки "купить букет" все ложится в корзину.
Буду очень признателен если поможете советом как это реализовать
Пробовал вставлять данный код но он выводит одинаковые артикли для всех дочерних товаров.
15) reviews.tpl.php – шаблон отзывов на странице товара. Смог изменить только "MORE" = "Ещё комментарии". Менял цифры, чистил кеш, не помогает.
находит файл
Y:\home\joomla15\www\administrator\components\com_virtuemart\classes\ps_reviews.php
жму f4 открывается блокнот (у меня notepad++), и теперь ищу поиском по файлу где упоминается "reviews.tpl.php", это функция product_reviews, на строке №101 вижу лимит поумолчанию 0..5
но мы легких путей не ищем...
вижу у этой функции есть параметр $limit, если тот кто вызывает этот метод не передаст этот параметр, то лимит ставится по умолчанию (навсякий случай можно и тут поменять), но теперь все же найдем, кто использует этот метод, ищем также в тотале, только в качестве текста будем искать "ps_reviews::product_reviews"
находит два файла
\administrator\components\com_virtuemart\html\shop.product_details.php
(функция вызывается на строке №361
$product_reviews = ps_reviews::product_reviews( $product_id );
исправим на
$product_reviews = ps_reviews::product_reviews( $product_id, ваша цифра ); )
и файл \administrator\components\com_virtuemart\classes\ps_reviews.php
т.е. этот файл в которм и сама функция находится. Вызывается вложенным методом строка №29
function show_reviews( $product_id ) {
echo ps_reviews::product_reviews( $product_id );
}
можем добавить тут также как и выше
function show_reviews( $product_id, ваше кол-во ) {
echo ps_reviews::product_reviews( $product_id, ваше кол-во );
PS. я сам еще не копался с отзывами, только осваиваю этот магазин, специально расписал процесс поиска с одной стороны что бы люди чему-то научились (тогда не придется на многие вопросы отвечать потому что этих вопросов не будет), а во вторых ингда в комментах бывает что-то полезное, а комменты на этом сайте например мне читать не очень просто уж межстрочный интервал маленький и в глазах рябит, если люди научатся сами отвечать на эти вопросы, останутся только комменты поинтересней и мне не придется ломать себе глаза - взаимовыгода
PPS на поиск потратил меньше пары минут
(дольше этот коммент писал, а пока комменты прочитал, аж глаза слезится стали)
PPPS не обижайтесь, я не злой
PPPPS Виталий, пожалуйста увеличте слегка расстояние в комментах междустрок и шрифт по темнее, а то не знаю раньше на старом стандартном мониторе вроде нормально было, а тут на широком вроде как бувы чуть смазывает, если можно конечно.
СПАСИБО за ваши труды!!!
PPPPS вопросы можно задавать на форуме
Об этом писалось ранее. Посмотрите что настройки флайпэйдж в категории преобладают над глобальными настройками.
А еще может банально быть то, что вы просто обновляете страницу, а в строке адреса так и стоит garden_lypage
Надо снова зайти по ссылке на новый сгенереный флайпейдж урл.
Подскажите пожалуйста (vm1.1.4,Joomla 1.5.23)у меня не выбираются сопутствующие товары в карточке товара, не пойму в чем дело-облазил все настройки и интернет,очень надо!!!!
Подскажите пожалуйста (j 1.5, wm 1.1.5) вот по какому вопросу.
Есть галерея товаров, в ней отображаются товары из какой либо категории, без краткого описания (название товара, картинка товара, особености) и есть кнопка подробнее, кликнув на которую переходим в карточку товара.
Как можно сделать чтобы переход на карточку товара был при клике на особенность товара , а не на подробнее.
Спасибо, за внимание!
посмотрел шаблоны, нашел нечто похожее
addtocart_advanced_attribute.tpl
но как оказалось это для карточки товара,
а нужно бы для галереи, (что имею ввиду по словом галерея- это список товаров в категории)
буду признателен , если подскажете какой это шаблончик
Подскажите: Форма "addtocart_form.tpl.php" В предыдущем шаблоне убрал рамку,а в новом она не прописывается.
Хотя в /components /com_virtuemart /themes /default/ theme.css
Стоит:
.vmCartContainer { /* Cart Container */
width: auto;
float: right;
background: #33FF00;
border: 5px
solid #FF4500;
padding: 3px;
Ставлю старый шаблон,там рамка с этими параметрами есть.
Я так понимаю наложения шаблона получается,а где это исправить можно не могу найти.
У меня ещё несколько вопросов, подскажите где поковырять:
1. На странице товара, при открытии изображений Lightbox-стрелочка Next стала появляться на середине картинки,а не справа. И в обратном порядке перестали пролистываться изображения
2. Дописывал browse_5.php. Добавил рамку для изображения:
{
}
Рамка прописалась,а цвет никак не хочет меняться. Выдает черный и всё. В css точно ничего такого не прописывал.
3. Модуль поиска активирован: mod_virtuemart_search Стал выдавать позиции по 3-шт в строчку. Ещё и вместе с "Доступностью" и формой "Заказать". Модуль ковырял, но там что-то ничего похоже не нашел,что можно было отредакировать. Да и модуль вообще не трогал.
Ссылка на сайт: http://sport-iron.tomsk.ru
Заранее большое спасибо!!
'class="browseProductImage" align="left" border="5" solid #FF6600" title="'.$product_name.'" alt="'.$product_name .'"
Joomla 2,5 VM 2 с чем-то.
Нужно просто чуть-чуть увеличить шрифт цены. В карточке товара получилось без проблем, а в категории сколько не бъюсь - не получается, может у меня просто уже глаз "замылился" :(
Правлю файлы: "com_virtuemart\views\category\tmpl\default.php" в нем строчка:
"echo '-' .$this->currency->createPriceDiv ('salesPrice', 'COM_VIRTUEMART_PRODUCT_SALESPRICE', $product->prices);"
дает в итоге код на готовой странице: "2400,00 руб".
вроде все просто, в файле "com_virtuemart\assets\css\vmsite-ltr.css"
задаю стиль:
".PricesalesPrice{font-size:18px; font-weight: bold; color: rgb(128,0,128);}"
и все, что он из него будет это Bold ... ссылка на сайт: http://atma-textil.ru/catalog/matras/bambuk-matrasi
Тоже стиль используется в графе конкретного товара и там все работает.