|
beliyadm
|
 |
« : 13.07.2009, 01:52:57 » |
|
Представляю Вашему внимания достаточно универсальный модуль для VirtueMart, версия mod_VirtueMart_universal для Joomla 1.5. Версия модуля слайдера товаров 2.0 (VM1.1.9 J1.5)Демонстрация и информацияВерсия модуля 2.1ДемонстрацияПодробная информацияНовые возможности модуля версии 2.1 - кнопка "добавить в корзину" на ajax
- визуальный выбор категорий и возможность включать вложенные подкатегории
- различные варианты вывода цены (с учетом налога и скидки)
- многоязычность (в текущем виде только рус\англ), константы вынесены в языковые файлы language\ru-RU\ru-RU.mod_virtuemart_universal.ini
- различные варианты вывода изображения в модуле с эффектами lightbox и\или zoom
Почему этот модуль, а не родной от разработчика 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) Справка по использованию шаблона: $item->pname - заголовок (название) товара $item->link - ссылка на полную карточку товара $item->pimage - картинка товара, не забываем про полный путь до нее $item->price - цена товара $item->currency - валюта (денежная единица) $item->intro - краткое описание товара, очищенное от HTML тегов, по умолчанию выводится как TITLE для картинки и ссылки "подробнее" - для достижения валидности и уменьшения нагрузки на сервер перед публикацией сайта на production рекомендуется все JS и CSS файлы компоновать в один файл и применять сжатие (работа соответствующих инструментов и азы создания сайтов находятся вне данной темы) - для достижения валидности необходимо подключить скрипт Jquery и Mootools до вызова скриптов тултипов (всплывающих подсказок), смотри комментарии в helper.php) в блоке HEAD, по умолчанию они выводятся в BODY для работы на 99% хостов без конфликтов - по умолчанию HTML структура модуля для каждого элемента такова: html вывод элементов модуля <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> - если у вас VirtueMart используется в качестве каталога (и соответственно нет цен) - решение нижеВозможные баги: - возможно все, поскольку я не очень хорошо знаю структуру товаров магазина. Пожелания и предложения по развитию оставляем в комментариях Тестировал на Joomla 1.5.10-12 и VirtueMart 1.1.3, огромная благоданость Sulpher за тестирование и общие рекомендации - Если для товара не назначено изображение выводится картинка по умолчанию components/com_virtuemart/themes/default/images/noimage.gif (спасибо Sulpher)
- Добавлена возможность показа иконки для товаров с скидкой
- Добавлена возможность либо автоматически определять ItemID ссылки в меню, ведущей на магазин, либо руками задавать в настройках модуля. Для чего - чтобы при переходе по ссылкам модуля корректно работала активность пункта меню, хлебные крошки и прочие привязки
UPD- Добавлена возможность обрезания цены до точки (пример: 48.12000 -> 48)
- Добавлена случайная сортировка товаров (если при кол-ве записей в БД более 10 000 будут проблемы с производительностью - пишите, будут менять алгоритм)
|
|
|
|
« Последнее редактирование: 19.02.2012, 00:08:24 от beliyadm »
|
Записан
|
|
|
|
| |
beagler
Moderator
   
Репутация: +316/-4
Offline
Пол: 
Сообщений: 2994
http://beagler.ru/
|
 |
« Ответ #121 : 02.10.2009, 23:45:39 » |
|
cherry, а я не понял. А смысл практически заменять этим модулем весь вывод на front VirtueMart? Ведь вы пытаетесь продублировать функционал shop.browse.php
|
|
|
|
|
Записан
|
|
|
|
|
beliyadm
|
 |
« Ответ #122 : 02.10.2009, 23:51:07 » |
|
cherry, а я не понял. А смысл практически заменять этим модулем весь вывод на front VirtueMart?
да нет, смысл есть К примеру я хочу показать на главной самые продаваемые товары (100 штук) и дать юзверю возможность сортировать по цене, названию и другим параметрам. Такого функционала магазин не дает, потому придется дописывать модуль
|
|
|
|
|
Записан
|
|
|
|
cherry
Осваиваюсь на форуме
 
Репутация: +2/-0
Offline
Пол: 
Сообщений: 54
|
 |
« Ответ #123 : 03.10.2009, 00:36:04 » |
|
cherry, а я не понял. А смысл практически заменять этим модулем весь вывод на front VirtueMart? Ведь вы пытаетесь продублировать функционал shop.browse.php
А что я теряю? может я целиком еще не осознаю будущие "грабли" выбранного пути.. Ну мне очень удобно разбираться с этим модулем, а в компоненте VM еще сложнова-то ориентируюсь, и нет понятной документации и шаблонизации. Для меня сейчас главное дизайн довести до ума и с модулем юниверсал у меня неплохо получается С Joomla знакома ровно неделю. Поэтому очень вам благодарна за отзывчивость, дельные советы и подсказки! Спасибо вам большое! 
|
|
|
|
|
Записан
|
|
|
|
cherry
Осваиваюсь на форуме
 
Репутация: +2/-0
Offline
Пол: 
Сообщений: 54
|
 |
« Ответ #124 : 05.10.2009, 23:27:13 » |
|
Подскажите пожалуйста! хочу этот грид http://trirand.com/jqgrid/jqgrid.html# или на рус. http://www.simplecoding.org/jquery-grid-plugin-prodvinutoe-reshenie-dlya-sozdaniya-tablic.html прицепить к компоненте VirtueMarUniversal.. вот этот код вроде как в default.php нужно вставить: <table id="list" class="scroll"></table> <div id="pager" class="scroll" style="text-align:center;"></div> <script type="text/javascript" src="jquery-1.3.1.min.js"></script> <script type="text/javascript" src="jquery.jqGrid.js"></script> <script type="text/javascript"> jQuery(document).ready(function(){ jQuery("#list").jqGrid({ url:'getdata.php', datatype: 'utf8', mtype: 'POST', colNames:['#', 'Наименование', 'спец.предложение', 'кол-во','цена','в корзину'], colModel :[ {name:'id', index:'id', width:30} ,.................................... ], pager: jQuery('#pager'), rowNum:5, rowList:[5,10,30], sortname: 'id', sortorder: "asc", viewrecords: true, imgpath: 'themes/basic/images', caption: 'заголовок' }); }); </script> но из-за небольшого опыта возникает массу вопросов  самый главный: мне нужно передать параметр url:'getdata.php' , как в примере. Где файл getdata.php формирует данные для грида. он содержит приблизительно такой код из примера: 1. <?php 2. try { 3. //читаем параметры 4. $curPage = $_POST['page']; 5. $rowsPerPage = $_POST['rows']; 6. $sortingField = $_POST['sidx']; 7. $sortingOrder = $_POST['sord']; 8. 9. //подключаемся к базе 10. $dbh = new PDO('mysql:host=localhost;dbname=name', 'user', 'pass'); 11. //указываем, мы хотим использовать utf8 12. $dbh->exec('SET CHARACTER SET utf8'); 13. 14. //определяем количество записей в таблице 15. $rows = $dbh->query('SELECT COUNT(id) AS count FROM users'); 16. $totalRows = $rows->fetch(PDO::FETCH_ASSOC); 17. 18. $firstRowIndex = $curPage * $rowsPerPage – $rowsPerPage; 19. //получаем список пользователей из базы 20. $res = $dbh->query('SELECT * FROM users ORDER BY '.$sortingField.' '.$sortingOrder.' LIMIT '.$firstRowIndex.', '.$rowsPerPage); 21. 22. //сохраняем номер текущей страницы, общее количество страниц и общее количество записей 23. $response->page = $curPage; 24. $response->total = ceil($totalRows['count'] / $rowsPerPage); 25. $response->records = $totalRows['count']; 26. 27. $i=0; 28. while($row = $res->fetch(PDO::FETCH_ASSOC)) { 29. $response->rows[$i]['id']=$row['id']; 30. $response->rows[$i]['cell']=array($row['id'], $row['surname'], $row['fname'], $row['lname']); 31. $i++; 32. } 33. echo json_encode($response); 34. } 35. catch (PDOException $e) { 36. echo 'Database error: '.$e->getMessage(); 37. } 38. 39. // end of getdata.php
Но у нас же в Joomla за формирование данных отвечает helper.php. я ж не буду его в параметре функции в default.php указывать. Объясните пожалуйста, как мне это все связать?!
|
|
|
|
|
Записан
|
|
|
|
|
beliyadm
|
 |
« Ответ #125 : 06.10.2009, 17:39:06 » |
|
cherry - какое кол-во данных требуется выводить в модуле? Может быть стоит использовать плагин tablesorter без AJAX подгрузки данных если их немного? Его прицепить вообще проблем нет, задать классы для заголовков таблицы и подключить JS\CSS файлы плагина. А в данном случае я бы в helper.php прописал дополнительно функцию по обработке AJAX запросов. Хотя в принципе когда делал сам подобную штуку написал отдельно компонент из одного файла обработчика, к которому обращался подобным образом index.php?option=com_ajax&view=select (то есть этот компонент заменял файл getdata.php и использовал стандартное API движка для работы с БД)
|
|
|
|
|
Записан
|
|
|
|
cherry
Осваиваюсь на форуме
 
Репутация: +2/-0
Offline
Пол: 
Сообщений: 54
|
 |
« Ответ #126 : 06.10.2009, 18:34:40 » |
|
я смотрела tablesorter, работает шустренько, но в нем нет постраничной навигации и поиска по товарам. объемы думаю будут не более 200 товаров на категорию Хотя в принципе когда делал сам подобную штуку написал отдельно компонент из одного файла обработчика, к которому обращался подобным образом index.php?option=com_ajax&view=select (то есть этот компонент заменял файл getdata.php и использовал стандартное API движка для работы с БД) это для меня сложнова-то будет, я еще не на столько сильна в Joomla да и в аяксе, чтоб такое написать.. а вы не могли бы поделиться примерчиком, если у вас есть, как прикрутить к вашему компоненту этот скриптик.
|
|
|
|
|
Записан
|
|
|
|
|
beliyadm
|
 |
« Ответ #127 : 06.10.2009, 18:39:27 » |
|
Увы, поделится не могу, там слишком специфичное решение в рамках проекта не для распространения Но смысл тот же - пишем пустой совершенно компонент (за болванку можно взять мой демо пример) и все что происходит в getdata.php писать в теле компонента (обращаясь соответственно по адресу типа index.php?option=com_demo). Вообще работа с AJAX далеко не тривиальная задача, сам постоянно ничего не понимаю в происходящем 
|
|
|
|
|
Записан
|
|
|
|
cherry
Осваиваюсь на форуме
 
Репутация: +2/-0
Offline
Пол: 
Сообщений: 54
|
 |
« Ответ #128 : 06.10.2009, 18:51:05 » |
|
Оки попробую написать.. Я правильно поняла? этот компонентик будет невизуальный, а просто будет возвращать данные которые я буду в default.php передавать в функцию?
|
|
|
|
|
Записан
|
|
|
|
|
beliyadm
|
 |
« Ответ #129 : 06.10.2009, 18:56:44 » |
|
Да конечно, на него нигде не надо давать никаких ссылок, он будет обрабатывать AJAX запросы из модуля и возвращать результат. Конечно можно делать и отдельным файликом getdata.php, но с компонентом проще работать с API движка (доступ к БД и прочее), суть едина
|
|
|
|
|
Записан
|
|
|
|
wounderer
Осваиваюсь на форуме
 
Репутация: +3/-0
Offline
Пол: 
Сообщений: 101
|
 |
« Ответ #130 : 07.10.2009, 14:01:50 » |
|
beliyadm
Так модуль научился таки выводить на главной странице только категории товаров или нет ? Если нет, то направте на путь истинный как это реализовать )
Заранее извиняюсь, интернет жутко тормозит, все посты не смог прочитать без эмоционального взрыва )))
|
|
|
|
|
Записан
|
|
|
|
|
beliyadm
|
 |
« Ответ #131 : 07.10.2009, 14:04:28 » |
|
Так модуль научился таки выводить на главной странице только категории товаров или нет ? Если нет, то направте на путь истинный как это реализовать )
Нет не научился и не планирует, модуль предназначен для показа товаров из категорий, но не самих категорий. Как это сделать - найти подходящий готовый модуль, написать свой, заказать разработку по предоставленному ТЗ
|
|
|
|
|
Записан
|
|
|
|
|
dushman1
Гость
|
 |
« Ответ #132 : 08.10.2009, 13:46:46 » |
|
привет всем у меня не получается установить этот модуль пробывал с админ понели и даже пробывал установить разархировав в папку Z:\home\localhost\www\site.ru\administrator\components\com_installer\module все равно не получается говорит Установочный файл не найден: Z:\home\localhost\www\site.ru\administrator\components\com_installer\module\ а при первом вореанте установки говорит Загрузка module - Загрузка сорвана Неисправимая ошибка "PCLZIP_ERR_BAD_FORMAT (-10)" [ Продолжить ... ] Загрузка module - Сорвана Установочный файл не найден: [ Продолжить ... ]
может кто поможет решить проблему? очь надо
joomla 1.0.15 vertuematr 1.0.15 а ну теперь все понятно там верху форума написано подходит для Joomla 1.5
|
|
|
|
« Последнее редактирование: 08.10.2009, 15:26:58 от dushman1 »
|
Записан
|
|
|
|
|
beliyadm
|
 |
« Ответ #133 : 08.10.2009, 17:20:39 » |
|
а ну теперь все понятно там верху форума написано подходит для Joomla 1.5
Да, модуль написан только для версии движка 1.5 и под 1.0 портироваться с моей стороны не будет
|
|
|
|
|
Записан
|
|
|
|
wounderer
Осваиваюсь на форуме
 
Репутация: +3/-0
Offline
Пол: 
Сообщений: 101
|
 |
« Ответ #134 : 09.10.2009, 10:35:15 » |
|
Еще один вопрос если не трудно.
Все работает просто замечательно, за модуль огромное спасибо! Единственное, у меня цена отображается в формате "Цена: XX.XX000 руб" Тоесть добивает нули в конец. Как привести разрядность к формату "Цена: XX.XX руб" ?
Ах да )) И где бы мне ввести проверку на имя изображения, и не отображать товары с "noimage.gif". Тоесть показывать товары только с изображениями..
Заранее спасибо )
|
|
|
|
« Последнее редактирование: 09.10.2009, 10:40:14 от wounderer »
|
Записан
|
|
|
|
|
beliyadm
|
 |
« Ответ #135 : 09.10.2009, 12:34:15 » |
|
Как привести разрядность к формату "Цена: XX.XX руб" ? Для этого в модуле есть опция Обрезать цену (Обрезает значение цены до первой точки (пример: 48.12000 -> 48)) И где бы мне ввести проверку на имя изображения, и не отображать товары с "noimage.gif". Тоесть показывать товары только с изображениями.. Чуть сложней. Открываем хелпер модуля, находим главный запрос $query, в нем строку ' WHERE p.product_publish= "Y" '.$where.' GROUP BY pid ORDER BY '.$ordering.' LIMIT '.$max_items.''; заменяем на ' WHERE p.product_publish= "Y" '.$where.' AND p.product_thumb_image <> '' GROUP BY pid ORDER BY '.$ordering.' LIMIT '.$max_items.'';
|
|
|
|
|
Записан
|
|
|
|
wounderer
Осваиваюсь на форуме
 
Репутация: +3/-0
Offline
Пол: 
Сообщений: 101
|
 |
« Ответ #136 : 09.10.2009, 16:27:19 » |
|
Не помогает...
T_CONSTANT_ENCAPSED_STRING
Я не особо силен в php, но я как понимаю это из за неправильно оформленной строки ? В частности кавычек ?
А по поводу цены.. Тоесть решения для округления или приведения к определнной разрядности нет ? ((( Только либо с разрядами либо нет ?
|
|
|
|
|
Записан
|
|
|
|
|
beliyadm
|
 |
« Ответ #137 : 09.10.2009, 16:35:25 » |
|
Опция обрезания цены использует функцию floor (Возвращает наибольшее целое число, меньшее или равное указанному числовому выражению.)
По поводу ошибки - по идее моя модификация не должна вызывать такую, максимум что должно быть - просто пустой экран модуля из-за неправильного запроса. Приложи здесь свой хелпер с изменением
|
|
|
|
|
Записан
|
|
|
|
wounderer
Осваиваюсь на форуме
 
Репутация: +3/-0
Offline
Пол: 
Сообщений: 101
|
 |
« Ответ #138 : 09.10.2009, 16:43:22 » |
|
Вот..
|
|
|
|
|
Записан
|
|
|
|
wounderer
Осваиваюсь на форуме
 
Репутация: +3/-0
Offline
Пол: 
Сообщений: 101
|
 |
« Ответ #139 : 09.10.2009, 16:48:41 » |
|
И по поводу стоимости, можно ли на каком то этапе тогда вставить round(значение цены, 2); ??
|
|
|
|
|
Записан
|
|
|
|
|
beliyadm
|
 |
« Ответ #140 : 09.10.2009, 16:50:44 » |
|
И по поводу стоимости, можно ли на каком то этапе тогда вставить round(значение цены, 2); ??
можно конечно, весь хелпер и шаблон в твоем распоряжении
|
|
|
|
|
Записан
|
|
|
|
wounderer
Осваиваюсь на форуме
 
Репутация: +3/-0
Offline
Пол: 
Сообщений: 101
|
 |
« Ответ #141 : 09.10.2009, 16:53:38 » |
|
Поэксперементирую :-) А вообще внесу свое скромное предложение в модуль добавить подобную функцию с возможностью выбора из админ панели количества цифр после запятой :-) Очень удобно и актуально  П.С. Спасибо за подсказки :-) Со стоимостью по крайней мере разобрался ))
|
|
|
|
« Последнее редактирование: 09.10.2009, 16:58:26 от wounderer »
|
Записан
|
|
|
|
|
beliyadm
|
 |
« Ответ #142 : 09.10.2009, 16:55:29 » |
|
А вообще внесу свое скромное предложение в модуль добавить подобную функцию с возможностью выбора из админ панели количества цифр после запятой :-) Очень удобно и актуально  еще раз - почему я всего этого не делаю - потому что не знаю структуру магазина досконально, какие именно данные могут лежать в этом поле и прочее. Поставил демо данные, увидел разделитель и внес возможность. В прочем же модификации не запрещены. Я пока такой опции вносить не буду
|
|
|
|
|
Записан
|
|
|
|
wounderer
Осваиваюсь на форуме
 
Репутация: +3/-0
Offline
Пол: 
Сообщений: 101
|
 |
« Ответ #143 : 09.10.2009, 17:08:56 » |
|
Ну тогда на всякий случай оригинальный helper.php приаттачиваю, который при обрезке цены оставляет копейки.. Может кому пригодится )
|
|
|
|
|
Записан
|
|
|
|
wounderer
Осваиваюсь на форуме
 
Репутация: +3/-0
Offline
Пол: 
Сообщений: 101
|
 |
« Ответ #144 : 13.10.2009, 17:12:47 » |
|
beliyadm, а как заставить модуль выводить только определнные товары ? Добавить к этим товарам аттрибут Futured ? И соответственно включить функции только Futured ? А другие методы решения задачи какие посоветуете ?
|
|
|
|
|
Записан
|
|
|
|
|
beliyadm
|
 |
« Ответ #145 : 13.10.2009, 17:15:10 » |
|
beliyadm, а как заставить модуль выводить только определнные товары ? Добавить к этим товарам аттрибут Futured ? И соответственно включить функции только Futured ? А другие методы решения задачи какие посоветуете ?
в данный момент только так, подобная возможность не рассматривалась и соответственно не внедрялась. По аналогии весьма несложно сделать модификацию - добавить в XML параметр ID товара через запятую (см. категории) и в хелпере по образу и подобию работы с получением категорий и разделением их на отдельный ID из общей строки добавить в SQL запрос в WHERE условие выборки
|
|
|
|
|
Записан
|
|
|
|
wounderer
Осваиваюсь на форуме
 
Репутация: +3/-0
Offline
Пол: 
Сообщений: 101
|
 |
« Ответ #146 : 13.10.2009, 17:22:43 » |
|
Очередное спасибо, буду работать ))) Как только закончу и оттестирую отчетаюсь о порядке действий на будущее :-)
|
|
|
|
|
Записан
|
|
|
|
|
beliyadm
|
 |
« Ответ #147 : 13.10.2009, 17:27:24 » |
|
В ХМЛ добавляем <param name="product_id" type="text" default="" label="ID категории" description="Вы можете через запятую указать ID требуемых товаров, если пусто - выборка идет из всех категорий" /> В хелпер $product_id = $params->get( 'product_id', null ); и после раздергивания $category_id добавляем if ($product_id) { $ids2 = explode( ',', $product_id ); JArrayHelper::toInteger( $ids ); $where .= ' AND (p.product_id=' . implode( ' OR p.product_id=', $ids2 ). ')'; } Если нигде не ошибся (писал на глаз) то больше ничего не потребуется, если вносим через запятую нужные товары - то только они будут показываться
|
|
|
|
|
Записан
|
|
|
|
gora4o
Захожу иногда

Репутация: +0/-0
Offline
Сообщений: 21
|
 |
« Ответ #148 : 13.10.2009, 22:27:57 » |
|
Подскажите пожалуйста, как добавить кнопку купить к товару?
И сделать так, что бы цена бралась из флайпейджа категории? Это необходимо, так как у меня в базе все товары забиты в долларах, но стоит хак, обеспечивающий мультивалютность, с перерасчетом курсов и цена выводится уже в гривне, с заданным курсом перерасчета. А Ваш модуль выводит валюту по умолчанию.
P.S. Решение я так и не нашел, а думаю будет интересно всем, если кто может решить вопрос.
|
|
|
|
|
Записан
|
|
|
|
|
beliyadm
|
 |
« Ответ #149 : 13.10.2009, 22:32:02 » |
|
И сделать так, что бы цена бралась из флайпейджа категории? не понял, что за фронтпейдж как добавить кнопку купить к товару Выдрать кусок кода из flypage и добавить в шаблон модуля, все параметры в принципе в нем уже есть Возможно сделать все, но обе данные вариации в логику модуля не заложены, я ближайшие недели реализовывать не собирался
|
|
|
|
|
Записан
|
|
|
|
gora4o
Захожу иногда

Репутация: +0/-0
Offline
Сообщений: 21
|
 |
« Ответ #150 : 14.10.2009, 00:00:52 » |
|
Я вот высмотрел такой плагин, как vmproductsnapshots_1.1.3.j15
Там это работает, только как это объединить с твоим модулем, было бы очень супер.
|
|
|
|
|
Записан
|
|
|
|
|