[download] Модуль вывода товаров для VirtueMart (1.2.3 и 2.1)

  • 1448 Ответов
  • 321375 Просмотров

0 Пользователей и 1 Гость просматривают эту тему.

*

beliyadm

  • ********
  • 8359
  • + 1527 -
  • Севастополь == Россия

Представляю Вашему внимания достаточно универсальный модуль для VirtueMart, версия mod_VirtueMart_universal для Joomla 1.5.


Версия модуля 2.1.1 (теперь в общем доступе)
Скачать


[spoiler title=Новые возможности модуля версии 2.1]
  • кнопка "добавить в корзину" на ajax
  • визуальный выбор категорий и возможность включать вложенные подкатегории
  • различные варианты вывода цены (с учетом налога и скидки)
  • многоязычность (в текущем виде только рус\англ), константы вынесены в языковые файлы language\ru-RU\ru-RU.mod_virtuemart_universal.ini
  • различные варианты вывода изображения в модуле с эффектами lightbox и\или zoom
   
[/spoiler]

Почему этот модуль, а не родной от разработчика VirtueMart Soeren - родной модуль на 6 товаров генерит от 40 запросов в БД, мой же только один SQL запрос

Возможности
 - показать последние добавленные товары
 - показать наиболее продаваемые товары
 - показать товары, отмеченные как featured
 - показывать случайные товары
 - задать количество показываемых товаров
 - задать категории для выборки (ID через запятую)
 - возможно включения JS подсказок для ссылок в модуле, с использованием либо встроенной библиотеки Mootools либо Jquery. Внимание - Jquery не включена в модуль, подключение библиотеки в код контролируйте самостоятельно. Если на сайте одновременно подключены обе библиотеки - JS эффект подсказок отрабатывать не будет, покажется стандартный title для ссылки. JS эффекты отрабатываются для элемента title для .mod_vm_universal a, для полноценного управления изучите CSS. Оформление заложено в файле modules\mod_VirtueMart_universal\files\mod_virtuemart_universal.css (см. комментарии)

Дополнительно:
 - код максимально документирован, смотрите файл modules\mod_VirtueMart_universal\tmpl\default.php для создания собственного шаблона (внимание - класс mod_vm_universal используется для работы JS tooltip)
[spoiler title=справка по шаблону]
   Справка по использованию шаблона:
Код: php
	$item->pname 	- заголовок (название) товара
$item->link - ссылка на полную карточку товара
$item->pimage - картинка товара, не забываем про полный путь до нее
$item->price - цена товара
$item->currency - валюта (денежная единица)
$item->intro - краткое описание товара, очищенное от HTML тегов, по умолчанию выводится как TITLE для картинки и ссылки  "подробнее"
[/spoiler]
 - для достижения валидности и уменьшения нагрузки на сервер перед публикацией сайта на production рекомендуется все JS и CSS файлы компоновать в один файл и применять сжатие (работа соответствующих инструментов и азы создания сайтов находятся вне данной темы)
 - для достижения валидности необходимо подключить скрипт Jquery и  Mootools до вызова скриптов тултипов (всплывающих подсказок), смотри комментарии в helper.php) в блоке HEAD, по умолчанию они выводятся в BODY для работы на 99% хостов без конфликтов
 - по умолчанию HTML структура модуля для каждого элемента такова:
[spoiler title=html вывод элементов модуля]
Код: php-brief
<div class="mod_vm_universal">
 <span class="mod_vm_title">Название товара</strong><br />
 <a href="link" title="Название товара - краткое описание" class="mod_vm_link">
    <img src="linkImg" alt="Название товара - краткое описание" />
  </a>
  <br />
  <a href="link" title="Название товара - краткое описание" class="mod_vm_readmore">Подробнее</a>
  <br />
  <span class="mod_vm_price">Цена: 1000 рублей</span>
</div>
[/spoiler]
 - если у вас VirtueMart используется в качестве каталога (и соответственно нет цен) - решение ниже

[spoiler title=скриншот модуля]

[/spoiler]

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

Тестировал на Joomla 1.5.10-12 и VirtueMart 1.1.3, огромная благоданость Sulpher за тестирование и общие рекомендации

[spoiler title=Версия модуля 1.2.3]
  • Если для товара не назначено изображение выводится картинка по умолчанию components/com_virtuemart/themes/default/images/noimage.gif (спасибо Sulpher)
[/spoiler]

[spoiler title=Версия модуля 1.2.2]
  • Добавлена возможность показа иконки для товаров с скидкой
  • Добавлена возможность либо автоматически определять ItemID ссылки в меню, ведущей на магазин, либо руками задавать в настройках модуля. Для чего - чтобы при переходе по ссылкам модуля корректно работала активность пункта меню, хлебные крошки и прочие привязки
[/spoiler]

UPD
[spoiler title=Версия модуля 1.2.1]
  • Добавлена возможность обрезания цены до точки (пример: 48.12000 -> 48)
  • Добавлена случайная сортировка товаров (если при кол-ве записей в БД более 10 000 будут проблемы с производительностью - пишите, будут менять алгоритм)
[/spoiler]

[вложение удалено Администратором]
« Последнее редактирование: 24.05.2015, 13:33:11 от beliyadm »
Все истины, которые я хочу вам изложить, — бесстыдная ложь.
Записки нетрезвого кодера || -=Joomla FAQ=- || -=все плохо=- || skype: beliyadm_pb

*

morph

  • ******
  • 906
  • + 103 -
+1 однозначно!первый модуль для VirtueMart  со структурой и использованием всего функционала 1.5.
joomla zoo virtuemart joomshopping yii

*

Sulpher

  • *******
  • 2130
  • + 374 -
  • Шаблоны и расширения Joomla

*

Arkadiy

  • *****
  • 5342
  • + 440 -
  • Крепитесь, други.
Пётр, у тебя так быстро и хорошо получилось, может ты нам и vm перепишешь? :) +1

*

beliyadm

  • ********
  • 8359
  • + 1527 -
  • Севастополь == Россия
может ты нам и vm перепишешь?
чур меня чур :)
Все истины, которые я хочу вам изложить, — бесстыдная ложь.
Записки нетрезвого кодера || -=Joomla FAQ=- || -=все плохо=- || skype: beliyadm_pb

*

sova

  • ***
  • 138
  • + 21 -
Модуль супер.
А для универсальности есть ли возможность добавить:
1. Возможность вывода случайных товаров.
2. Выбор вывода товаров -  (горизонтально/вертикально).?

Поживу - увижу, доживу - узнаю, выживу - учту

*

Sulpher

  • *******
  • 2130
  • + 374 -
  • Шаблоны и расширения Joomla
2. Выбор вывода товаров -  (горизонтально/вертикально).?
Это можно сделать с помощью CSS. Модуль специально написан на div'ах, дабы не засорять сайт таблицами.

*

beliyadm

  • ********
  • 8359
  • + 1527 -
  • Севастополь == Россия
Модуль супер.
А для универсальности есть ли возможность добавить:
1. Возможность вывода случайных товаров.
2. Выбор вывода товаров -  (горизонтально/вертикально).?
спасибо :)
1 - можно, заложил на будущее, на днях добавлю (сделано в версии 1.2.1)
2 - настраивается в CSS, по умолчанию для mod_vm_universal прописаны стили float: left, убрать и будут выстраиваться друг под другом
« Последнее редактирование: 13.07.2009, 19:13:58 от beliyadm »
Все истины, которые я хочу вам изложить, — бесстыдная ложь.
Записки нетрезвого кодера || -=Joomla FAQ=- || -=все плохо=- || skype: beliyadm_pb

*

beliyadm

  • ********
  • 8359
  • + 1527 -
  • Севастополь == Россия
Модуль обновлен до 1.2.1
  • Добавлена возможность обрезания цены до точки (пример: 48.12000 -> 48)
  • Добавлена случайная сортировка товаров (если при кол-ве записей в БД более 10 000 будут проблемы с производительностью - пишите, будут менять алгоритм)
« Последнее редактирование: 13.07.2009, 19:10:26 от beliyadm »
Все истины, которые я хочу вам изложить, — бесстыдная ложь.
Записки нетрезвого кодера || -=Joomla FAQ=- || -=все плохо=- || skype: beliyadm_pb

*

dmon47

У меня почему то модуль ничего не отображает. Опубликовал его, вывел в позицию left. Название модуля появилось, но больше ничего не отображается. В VirtueMart забито 2 товара в одну категорию, остальные 5 категорий пустые. В модуле даже выставлял Id категории, в которой есть товары.

Я использую Joomla 1.5.12 и VirtueMart 1.1.3.

Не подскажите, что может быть не так?

*

beliyadm

  • ********
  • 8359
  • + 1527 -
  • Севастополь == Россия
dmon47 - товары опубликованы? У них есть цена (в текущей версии модуля если у товара нет цены - он не выводится)?
Других условий как бы нет..
Все истины, которые я хочу вам изложить, — бесстыдная ложь.
Записки нетрезвого кодера || -=Joomla FAQ=- || -=все плохо=- || skype: beliyadm_pb

*

dmon47

Товары опубликованы, но цены нет. VirtueMart работает в режиме каталога.
А где копать, чтобы выводилось даже если цен нет? В модуле или шаблоне?

*

beliyadm

  • ********
  • 8359
  • + 1527 -
  • Севастополь == Россия
Товары опубликованы, но цены нет. VirtueMart работает в режиме каталога.
А где копать, чтобы выводилось даже если цен нет? В модуле или шаблоне?
В модуле.
1 - в файле helper.php модуля найти запрос
Код: php
		$query = 'SELECT p.product_id AS pid, p.product_sku AS psku, p.product_thumb_image AS pimage, p.product_name AS pname, ' .
' cx.category_id AS catid, '.$ceil_price.', p.product_s_desc AS pintro, pp.product_currency AS currency '.
' FROM #__vm_product p ' .
' RIGHT JOIN #__vm_product_category_xref AS cx ON p.product_id = cx.product_id'.
' RIGHT JOIN #__vm_product_price as pp ON pp.product_id = p.product_id ' .
' WHERE p.product_publish= "Y" '.$where.' GROUP BY pid  ORDER BY '.$ordering.' LIMIT '.$max_items.'';
и заменить на
Код: php
		$query = 'SELECT p.product_id AS pid, p.product_sku AS psku, p.product_thumb_image AS pimage, p.product_name AS pname, ' .
' cx.category_id AS catid, p.product_s_desc AS pintro '.
' FROM #__vm_product p ' .
' RIGHT JOIN #__vm_product_category_xref AS cx ON p.product_id = cx.product_id'.
' WHERE p.product_publish= "Y" '.$where.' GROUP BY pid  ORDER BY '.$ordering.' LIMIT '.$max_items.'';
Ниже в этом же файле удалить строки
Код: php
$lists[$i]->price 		= $row->pprice;
$lists[$i]->currency = $row->currency;
И из tmpl\default.php убрать строку
Код
<span class="mod_vm_price">Цена: <?php echo $item->price; ?> <?php echo $item->currency; ?></span>

После этого по идее должно работать
Все истины, которые я хочу вам изложить, — бесстыдная ложь.
Записки нетрезвого кодера || -=Joomla FAQ=- || -=все плохо=- || skype: beliyadm_pb

*

dmon47

ОГРОМНОЕ СПАСИБО!!! Все заработало!

*

beliyadm

  • ********
  • 8359
  • + 1527 -
  • Севастополь == Россия
ОГРОМНОЕ СПАСИБО!!! Все заработало!
и вам спасибо, не подумал про эту фишку, пока обновил первый пост в виде хака, позже надо будет внести в функционал модуля для следующей версии
Все истины, которые я хочу вам изложить, — бесстыдная ложь.
Записки нетрезвого кодера || -=Joomla FAQ=- || -=все плохо=- || skype: beliyadm_pb

*

Sulpher

  • *******
  • 2130
  • + 374 -
  • Шаблоны и расширения Joomla
Петь, а по поводу константы "цена" - забыли вынести в настройки модуля, чтобы можно было это слово на др. язык прямо из админки перевести, не лазя в исходник модуля (что, в принципе, тоже не сложно, но ради универсальности можно сделать то, о чем говорили ранее)

*

beliyadm

  • ********
  • 8359
  • + 1527 -
  • Севастополь == Россия
Жень - в следующей версии в настройки будет вынесено слово ЦЕНА и ПОДРОБНЕЕ, вместе с парой правок самого модуля, суть позже
Все истины, которые я хочу вам изложить, — бесстыдная ложь.
Записки нетрезвого кодера || -=Joomla FAQ=- || -=все плохо=- || skype: beliyadm_pb

*

Akirad

Модуль супер!!!
но есть перу нюансов: 1) Картинка выходит за облать модуля
                                 2) Валюта выводиться из списка валют, но не преобразовываеться в "Символ валюты:"
Если только у меня, то где это исправить?
СпС. !!!???!!!      

*

beliyadm

  • ********
  • 8359
  • + 1527 -
  • Севастополь == Россия
1 - это верстка, HTML вывод модуля я описал в первом посте (по умолчанию в стилях размеры одного блока заданы жестко, если у вас в настройках магазина картинка больше чем у меня при тестировании - будет выходить, поправить легко)
2 - я не закладывал преобразование валюты в символ, если надо поменять - открываем файл modules\mod_VirtueMart_universal\tmpl\default.php и заменяем <?php echo $item->currency; ?> на нужный нам символ валюты
Все истины, которые я хочу вам изложить, — бесстыдная ложь.
Записки нетрезвого кодера || -=Joomla FAQ=- || -=все плохо=- || skype: beliyadm_pb

*

Akirad

1 - это верстка, HTML вывод модуля я описал в первом посте (по умолчанию в стилях размеры одного блока заданы жестко, если у вас в настройках магазина картинка больше чем у меня при тестировании - будет выходить, поправить легко)
2 - я не закладывал преобразование валюты в символ, если надо поменять - открываем файл modules\mod_VirtueMart_universal\tmpl\default.php и заменяем <?php echo $item->currency; ?> на нужный нам символ валюты
Спс за быстрый ответ)
Если не сложно, ответить более широко.
Что нужно написать для вывода уменьшиного изображения?
на, что нужно заменить <?php echo $item->currency; ?> чтоб получить символ?
Зарание благодарен)

*

beliyadm

  • ********
  • 8359
  • + 1527 -
  • Севастополь == Россия
Что нужно написать для вывода уменьшиного изображения?
в файле стилей modules\mod_VirtueMart_universal\files\mod_VirtueMart_universal.css изменить ширину\высоту блока
Код: css
.mod_vm_universal {
float: left; width: 200px; height: 200px; border: 1px solid #ccc; margin: 5px; padding: 5px;
text-align: center !important;
}
на, что нужно заменить <?php echo $item->currency; ?> чтоб получить символ?
на символ валюты, к примеру $
Все истины, которые я хочу вам изложить, — бесстыдная ложь.
Записки нетрезвого кодера || -=Joomla FAQ=- || -=все плохо=- || skype: beliyadm_pb

*

Akirad

в файле стилей modules\mod_VirtueMart_universal\files\mod_VirtueMart_universal.css изменить ширину\высоту блока
Код: css
.mod_vm_universal {
float: left; width: 200px; height: 200px; border: 1px solid #ccc; margin: 5px; padding: 5px;
text-align: center !important;
}
на символ валюты, к примеру $
С символом все гуд.Спс.
А вот картинка, стоит на месте(
 изменяя ширину\высоту блока - не изменяеться размер картинки, думал вставить кусок кода вывода картинки с flypage-страницы ну что-то не выходить.
Может у Вас получиться прикруть ??


*

beliyadm

  • ********
  • 8359
  • + 1527 -
  • Севастополь == Россия
я совершенно не понимаю вашей проблемы, показали бы скриншот, сказали бы каких размеров превьюшка из товара выводится
Можете еще задать размеры картинки в html
Код
<img src="<?php echo JURI::base(); ?>components/com_VirtueMart/shop_image/product/<?php echo $item->pimage; ?>" alt="<?php echo $item->pname; ?> - <?php echo $item->intro; ?>" />
заменить на
Код
<img width="150" src="<?php echo JURI::base(); ?>components/com_VirtueMart/shop_image/product/<?php echo $item->pimage; ?>" alt="<?php echo $item->pname; ?> - <?php echo $item->intro; ?>" />
Все истины, которые я хочу вам изложить, — бесстыдная ложь.
Записки нетрезвого кодера || -=Joomla FAQ=- || -=все плохо=- || skype: beliyadm_pb

*

Akirad

:) Все было так просто!!!
Спасибо

 !!!???!!! Выручайте! Поставил модуль и сайт мой рухнул.
После длительного ожидания того, что страничка загрузится выпадает ошибка "CGI script error  Ошибка исполнения CGI приложения"
Админка работает, модуль удалял но ничего не изменилось!

*

beliyadm

  • ********
  • 8359
  • + 1527 -
  • Севастополь == Россия
Модуль (как и сам движок) к CGI приложениям не имеет никакого отношения и физически не может давать такую ошибку.
Значит причина не в этом, почитайте error.log сервера на предмет каких-либо ошибок
Все истины, которые я хочу вам изложить, — бесстыдная ложь.
Записки нетрезвого кодера || -=Joomla FAQ=- || -=все плохо=- || skype: beliyadm_pb

beliyadm

Можешь в аську выйти пообщаться?
ICQ 6947262

*

FenderQ

Спасибо!
Классный модуль!
Все настроил как надо вот только вопрос один...
Как можно сделать так что б модуль выводился только на одной странице (на главной, для которой я назначил отдельный шаблон с юзерблоком1, в котором и отображается этот модуль)? Просто если кликнуть на "подробнее" инфа грузится в томже шаблоне, который назначен для главной страницы...

*

beliyadm

  • ********
  • 8359
  • + 1527 -
  • Севастополь == Россия
FenderQ - есть такое дело, причина в том что модуль отдает информацию по ItemID текущей страницы, вот привязка шаблона и остается старой. Для решения внесем изменение в файл helper.php модуля
найдем строку
Код: php
$Itemid 		= JRequest::getInt( 'Itemid', 1, 'get' );
и заменим на
Код: php
$Itemid = '10';
где 10 это ItemID пункта меню, который собственно и ссылается на VirtueMart, а сам модуль в настройках привяжем только к главной странице

Наверно надо добавить в модуль дополнительный запрос, чтобы автоматом вытягивал ItemID из меню, что ссылается на магазин, но тут есть подводные камни (если ссылок несколько и так далее), надо будет подумать над решением
Все истины, которые я хочу вам изложить, — бесстыдная ложь.
Записки нетрезвого кодера || -=Joomla FAQ=- || -=все плохо=- || skype: beliyadm_pb

*

FenderQ

Сорри, уже сам нашел... проблема была в ИДшниках
Включил режим дружелюбных ссылок SEO и все норм