Форум русской поддержки Joomla!® CMS
03.12.2016, 08:40:50 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1] 2 3 4   Вниз
  Добавить закладку  |  Печать  
Автор

Модуль - Универсальный модуль вывода товаров

 (Прочитано 16138 раз)
0 Пользователей и 1 Гость смотрят эту тему.
artlux
Завсегдатай
*****

Репутация: +58/-0
Offline Offline

Пол: Мужской
Сообщений: 468



« : 10.05.2013, 00:51:34 »

1.модуль может выводить товары в виде карусели, либо обычным видом;
2.выбирает товары из текущей категории, либо все товары, либо из выбранной категории;
3.опционально вывод текущего товара, если он есть;
4.можно указать количество для вывода, также количество вывода в строку(либо видимая часть слайдера), можно указать шаг для промотки слайдера;
5.опционально показывать цены;
6.опционально показывать кнопку купить;
7.возможность вывода товаров по производителю можно выбрать или использовать текущего;
8.возможность вывода модуля - только в детальном виде товара;
9.возможность скрывать товары которых нет на складе
10. Возможность выводить последние просмотренные товары

Почему лучше использовать модуль, вместо хака в теме (ссылка выше)
тест на 20 товарах, включаем кеш и на 426 запросов меньше в БД...

Важно! во время настройки модуля и его модификации отключаем кеш в настройках модуля!

v.1.1 стала довольно универсальной. Теперь задачи типа:
"Вывести товары в подробном виде из текущей категории и с текущим производителем";
"Вывести товары из всех категорий с текущим производителем и наоборот" и т.п.;
- решаемы с помощью данного модуля и без хаков...

идея, x-render, http://joomlaforum.ru/index.php/topic,262593.0.html

История версий
Показать текстовый блок

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

* mod_virtuemart_randcatproduct_v.1.2.zip (15.64 Кб - загружено 1621 раз.)
« Последнее редактирование: 23.06.2013, 22:21:48 от artlux » Записан
 
melkiialex
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 152


« Ответ #1 : 10.05.2013, 10:29:54 »

Гуд супер все работает, только вот гемор у меня наверное из за шаблона http://templates.yag-demo.com/joomla/free/vision/component/content/article/77-demo-contents/90-sidebar-sidebar-content
публикую модуль в позицию Main Content Bottom а он отображается не горизонтально, а вертикально.
 Sad - поставил, постарался исправить и в нес в CSS
Код:
.mod_rand_product { float: left; }
- вроде встало все горизонтально.

Кстати было бы хорошо размер картинкам сделать настраиваемый, а то хочется что бы они были поменьше, чем в параметрах магазина, а то ставишь например 5 товаров в строке, а они друг на друга лезут, так как в параметрах магазина стоит 200px ширина картинки, вот если бы их уменьшать в модуле или как то стилем до 120 например, тогда в строк увлезит 5 товаров

+1 в карму  Cheesy

« Последнее редактирование: 10.05.2013, 10:54:08 от melkiialex » Записан
x-render
Осваиваюсь на форуме
***

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 25



« Ответ #2 : 10.05.2013, 10:54:24 »

Супер. Работает отлично, то что надо. drink
Плюсище поставил.
Цитировать
кстати было бы хорошо размер картинкам сделать настраиваемый, а то хочется что бы они были поменьше, чем в параметрах магазина
Это стилями можно оформить.
« Последнее редактирование: 10.05.2013, 11:09:03 от x-render » Записан
melkiialex
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 152


« Ответ #3 : 10.05.2013, 11:40:10 »

Как подскажите человеку тупому?
Записан
x-render
Осваиваюсь на форуме
***

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 25



« Ответ #4 : 10.05.2013, 11:45:47 »

Ну в стилях именно для img в этом модуле .mod_rand_product img{width:120px;}
Записан
melkiialex
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 152


« Ответ #5 : 10.05.2013, 11:57:53 »

Сделал, вот что показывает фиребаг
Код:
<div class="mod_rand_image"> - для него поставил { width: 120px; }, а ниже идет так
<a title="Campri Waterproof JktLd30" href="/shop/index.php/ru/glavnaya/zhenskaya-odezhda/verkhnyaya-odezhda2013-04-26-15-10-47_/campri-waterproof-jktld30-detail">
<img class="featuredProductImage" border="0" alt="wj59" src="/shop/images/stories/virtuemart/product/resized/wj59_236x306.png">
и почему то все равно значение 236x306.png лидирует, а 120px не работает
Записан
x-render
Осваиваюсь на форуме
***

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 25



« Ответ #6 : 10.05.2013, 12:50:46 »

.mod_rand_image img {width:120px !important} навсякий случай !important если другой стиль перекрывает
Записан
melkiialex
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 152


« Ответ #7 : 10.05.2013, 13:05:52 »

 Cheesy Cheesy Cheesy +1

все работает
« Последнее редактирование: 30.06.2014, 00:28:38 от fsv » Записан
melkiialex
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 152


« Ответ #8 : 10.05.2013, 13:19:48 »

кстати как его опубликовать, что бы он был только в товаре а не в других пунктах меню, сделать настройки модуля что бы выводил только в определенном меню не как, так как на сайте 2 меню
главная - это главная магазина и потом контакты, то есть нету каждого товара.
а щас модуль выводиться везде.
Записан
x-render
Осваиваюсь на форуме
***

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 25



« Ответ #9 : 10.05.2013, 13:23:31 »

в модуле после
Код:
if (!empty($product->prices['salesPriceWithDiscount'])) {
echo $currency->createPriceDiv ('salesPriceWithDiscount', '', $product->prices, FALSE, FALSE, 1.0, TRUE);
}

вставь
Код:
if ($product->prices['discountAmount']>0) {echo $currency->createPriceDiv ('priceWithoutTax', '', $product->prices, FALSE, FALSE, 1.0, TRUE);}

и должна появится цена без скидки
Записан
melkiialex
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 152


« Ответ #10 : 10.05.2013, 13:33:09 »

Не хочет, а если взять код который работает у меня
Код:
if ($this->show_prices == '1') {
if ($product->prices['salesPrice']<=0 and VmConfig::get ('askprice', 1) and  !$product->images[0]->file_is_downloadable) {
echo JText::_ ('COM_VIRTUEMART_PRODUCT_ASKPRICE');
}
//todo add config settings
if ($this->showBasePrice) {
echo $this->currency->createPriceDiv ('basePrice', 'COM_VIRTUEMART_PRODUCT_BASEPRICE', $product->prices);
echo $this->currency->createPriceDiv ('basePriceVariant', 'COM_VIRTUEMART_PRODUCT_BASEPRICE_VARIANT', $product->prices);
}
echo $this->currency->createPriceDiv ('variantModification', 'COM_VIRTUEMART_PRODUCT_VARIANT_MOD', $product->prices);
if (round($product->prices['basePriceWithTax'],$this->currency->_priceConfig['salesPrice'][1])!= $product->prices['salesPrice']) {
echo '<span class="price-crossed" >' . $this->currency->createPriceDiv ('basePriceWithTax', 'COM_VIRTUEMART_PRODUCT_BASEPRICE_WITHTAX', $product->prices). "</span>";
}
if (round($product->prices['salesPriceWithDiscount'],$this->currency->_priceConfig['salesPrice'][1])!= $product->prices['salesPrice']) {
echo $this->currency->createPriceDiv ('salesPriceWithDiscount', 'COM_VIRTUEMART_PRODUCT_SALESPRICE_WITH_DISCOUNT', $product->prices);
}
if($product->prices[salesPrice] != $product->prices[priceWithoutTax]) {
                   echo $this->currency->createPriceDiv('salesPrice', 'Цена со скидкой: ', $product->prices);
                   echo $this->currency->createPriceDiv('priceWithoutTax', 'Обычная цена: ', $product->prices);
                      } else {
                   echo $this->currency->createPriceDiv('salesPrice', 'Обычная цена: ', $product->prices);
                   echo $this->currency->createPriceDiv('priceWithoutTax', '', '');
                      }
echo $this->currency->createPriceDiv ('discountAmount', 'COM_VIRTUEMART_PRODUCT_DISCOUNT_AMOUNT', $product->prices);
echo $this->currency->createPriceDiv ('taxAmount', 'COM_VIRTUEMART_PRODUCT_TAX_AMOUNT', $product->prices);
$unitPriceDescription = JText::sprintf ('COM_VIRTUEMART_PRODUCT_UNITPRICE', $product->product_unit);
echo $this->currency->createPriceDiv ('unitPrice', $unitPriceDescription, $product->prices);
} ?>

и в ставить его?
Просто пытаюсь его вставить вместо
Код:
if ($show_price==1){
echo'<div class="mod_rand_price">';
if (!empty($product->prices['salesPrice'])) {
echo $currency->createPriceDiv ('salesPrice', '', $product->prices, FALSE, FALSE, 1.0, TRUE);
}
if (!empty($product->prices['salesPriceWithDiscount'])) {
echo $currency->createPriceDiv ('salesPriceWithDiscount', '', $product->prices, FALSE, FALSE, 1.0, TRUE);
if ($product->prices['discountAmount']>0) {echo $currency->createPriceDiv ('priceWithoutTax', '', $product->prices, FALSE, FALSE, 1.0, TRUE);}
}
echo'</div>';
}

не работает, то ошибка, то пустая страница белая.
Сорри не селен в PHP
Записан
x-render
Осваиваюсь на форуме
***

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 25



« Ответ #11 : 10.05.2013, 13:39:42 »

Код:
if ($show_price==1){
echo'<div class="mod_rand_price">';
if (!empty($product->prices['salesPrice'])) {
echo $currency->createPriceDiv ('salesPrice', '', $product->prices, FALSE, FALSE, 1.0, TRUE);
}
if (!empty($product->prices['salesPriceWithDiscount'])) {
echo $currency->createPriceDiv ('salesPriceWithDiscount', '', $product->prices, FALSE, FALSE, 1.0, TRUE);
if ($product->prices['discountAmount']>0) {echo $currency->createPriceDiv ('priceWithoutTax', '', $product->prices, FALSE, FALSE, 1.0, TRUE);}
}
echo'</div>';
}
не туда вставил
Код:
if ($show_price==1){
echo'<div class="mod_rand_price">';
if (!empty($product->prices['salesPrice'])) {
echo $currency->createPriceDiv ('salesPrice', '', $product->prices, FALSE, FALSE, 1.0, TRUE);
}
if (!empty($product->prices['salesPriceWithDiscount'])) {
echo $currency->createPriceDiv ('salesPriceWithDiscount', '', $product->prices, FALSE, FALSE, 1.0, TRUE);

}
                        if ($product->prices['discountAmount']>0) {echo $currency->createPriceDiv ('priceWithoutTax', '', $product->prices, FALSE, FALSE, 1.0, TRUE);}
echo'</div>';
}
или
Код:
if ($show_price==1){
echo'<div class="mod_rand_price">';
if (!empty($product->prices['salesPrice'])) {
echo $currency->createPriceDiv ('salesPrice', '', $product->prices, FALSE, FALSE, 1.0, TRUE);
}
if (!empty($product->prices['salesPriceWithDiscount'])) {
echo $currency->createPriceDiv ('salesPriceWithDiscount', '', $product->prices, FALSE, FALSE, 1.0, TRUE);

}
                        if($product->prices['salesPrice'] != $product->prices['priceWithoutTax']) {
                   echo $currency->createPriceDiv('salesPrice', 'Цена со скидкой: ', $product->prices, FALSE, FALSE, 1.0, TRUE);
                   echo $currency->createPriceDiv('priceWithoutTax', 'Обычная цена: ', $product->prices, FALSE, FALSE, 1.0, TRUE);
                      } else {
                   echo $currency->createPriceDiv('salesPrice', 'Обычная цена: ', $product->prices, FALSE, FALSE, 1.0, TRUE);
                   echo $currency->createPriceDiv('priceWithoutTax', '', $product->prices, FALSE, FALSE, 1.0, TRUE);
                      }
}
должно работать
« Последнее редактирование: 10.05.2013, 13:52:48 от x-render » Записан
melkiialex
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 152


« Ответ #12 : 10.05.2013, 13:48:36 »

Без изменений.  Sad

а как сделать, что бы этот модуль был только в карточке товара и больше ни в одном пункте меню его не было видно
Записан
x-render
Осваиваюсь на форуме
***

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 25



« Ответ #13 : 10.05.2013, 13:54:20 »

не много код подправил, проверь. Сейчас нет возможности мне у себя проверять. Про вывод модуля попозже напишу.
Записан
melkiialex
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 152


« Ответ #14 : 10.05.2013, 14:07:10 »

Нет тоже не показывает, ладно черт с этой ценой.
Главное что бы теперь модуль был только в карточке товара и больше не где и все будет изумительно красиво  Cheesy
Записан
artlux
Завсегдатай
*****

Репутация: +58/-0
Offline Offline

Пол: Мужской
Сообщений: 468



« Ответ #15 : 10.05.2013, 14:10:25 »

Цитировать
а как сделать, что бы этот модуль был только в карточке

В первом сообщении написано как вставить модуль в любое место шаблона...
Код:
<?
$document    = &JFactory::getDocument();
$renderer    = $document->loadRenderer('modules');
$options    = array('style' => 'noner'); //тут стиль вывода модуля, можно оставить как тут
$position    = 'rand'; //тут название позиции (ее можно задать при публикации модуля, можно просто вписать туда rand как тут)
echo $renderer->render($position, $options, null);
?>

заходите в ваш шаблон VirtueMart (Подробный вид товара и вставляете в нужное место этот код)
Записан
melkiialex
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 152


« Ответ #16 : 10.05.2013, 14:11:22 »

а публикацию шаблона в самой системе не делать?
и как понимаю noner - то когда просто вывод без карусели да?
Записан
artlux
Завсегдатай
*****

Репутация: +58/-0
Offline Offline

Пол: Мужской
Сообщений: 468



« Ответ #17 : 10.05.2013, 14:14:26 »

noner - это просто стиль выцвода модуля(они у вас в шаблоне формируются)... можете так и оставить, стиль просто не будет задаваться....
Записан
melkiialex
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 152


« Ответ #18 : 10.05.2013, 14:16:26 »

Сделал так
Код:
<?
$document    = &JFactory::getDocument();
$renderer    = $document->loadRenderer('modules');
$options    = array('style' => 'noner'); //тут стиль вывода модуля
$position    = 'main-content-bottom'; //тут название позиции
echo $renderer->render($position, $options, null);
?>
В админке отключил
но нечего не выводит.


Если же ставлю в настройках модуля в системе
опубликован, на всех страницах, и позиция main-content-bottom - то естественно он работает везде по мимо карточки товара.
Записан
artlux
Завсегдатай
*****

Репутация: +58/-0
Offline Offline

Пол: Мужской
Сообщений: 468



« Ответ #19 : 10.05.2013, 14:19:59 »

в админке должен быть включен на всех страницах... А вот позицию задаете любую которая не используется в шаблоне
Записан
melkiialex
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 152


« Ответ #20 : 10.05.2013, 14:28:38 »

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

Код:
<!-- /Product Custom Fields -->
gfdgdfg
<?
$document    = &JFactory::getDocument();
$renderer    = $document->loadRenderer('modules');
$options    = array('style' => 'noner'); //тут стиль вывода модуля
$position    = 'main-content-bottom'; //тут название позиции
echo $renderer->render($position, $options, null);
?>
<!-- Related Products -->

причем если в настройках модуля в админке ставлю эту же позицию main-content-bottom - то в карточке отображается 2 раза модуль, а на страницах других 1 раз

фаил карточки находится в папке шаблона магазина, а не стандартный
« Последнее редактирование: 10.05.2013, 14:37:55 от melkiialex » Записан
artlux
Завсегдатай
*****

Репутация: +58/-0
Offline Offline

Пол: Мужской
Сообщений: 468



« Ответ #21 : 10.05.2013, 14:46:35 »

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

включу в следующий релиз... modules/mod_virtuemart_randcatproduct - просто с заменой файлы заливать

уже доступно в v.1.1
« Последнее редактирование: 09.07.2013, 17:42:53 от artlux » Записан
melkiialex
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 152


« Ответ #22 : 10.05.2013, 14:54:57 »

Гениально  Cheesy Cheesy Cheesy
Записан
artlux
Завсегдатай
*****

Репутация: +58/-0
Offline Offline

Пол: Мужской
Сообщений: 468



« Ответ #23 : 10.05.2013, 14:57:55 »

Впринципе предполагал, что возникнут проблемы с вставкой модуля только в подробный вид товара...
Сейчас подумаю что еще добавить в модуль... и сделаю обновление... (пока вариант с выводом товаров одного производителя, и товаров с примерно одной ценой - как предлагали в первой теме)
Записан
artlux
Завсегдатай
*****

Репутация: +58/-0
Offline Offline

Пол: Мужской
Сообщений: 468



« Ответ #24 : 10.05.2013, 19:55:45 »

v.1.1
- добавлена возможность выводить модуль только в детальном виде
- добавлены фильтры по производителю
- добавлена возможность указать категорию принудительно (что делает модуль универсальным)
- добавлена возможность менять шаг карусели
- сгрупированы параметры модуля
- разные полезные штуки

Для обновления модуля, заливаем файлы поверх (папка assets и tmpl - не изменялись). Если вы правили шаблон вывода модуля не позатирайте файлы Azn
Записан
x-render
Осваиваюсь на форуме
***

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 25



« Ответ #25 : 11.05.2013, 00:41:51 »

 Cheesy Браво. Это конечно круто получилось. Полная замена стандартному "mod_virtuemart_product". Огромнейшее спасибо.
Записан
ELLE
Support Team
*****

Репутация: +862/-0
Offline Offline

Пол: Женский
Сообщений: 4723



« Ответ #26 : 11.05.2013, 01:38:46 »

artlux, +1
 
Уже в FAQ'е
Записан
artlux
Завсегдатай
*****

Репутация: +58/-0
Offline Offline

Пол: Мужской
Сообщений: 468



« Ответ #27 : 23.06.2013, 22:18:26 »

v.1.2
Добавлена возможность вывода последних просмотренных товаров
Исправлен пакет установки (не копировалась папка fields) - и скачавшие модуль молчали, неужели все догадались скопировать?

прошу добавить в FAQ
10. Возможность выводить последние просмотренные товары (решения на форуме не было).

« Последнее редактирование: 03.07.2013, 15:28:48 от artlux » Записан
web11
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Пол: Мужской
Сообщений: 58


« Ответ #28 : 02.07.2013, 15:02:25 »

огромное спасибо за очень нужное решение!
на vm 2.0.20b все работает как часы
Записан
Snake 60
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 33


Скользкий тип...


« Ответ #29 : 12.07.2013, 23:24:32 »

Присоединяюсь ко всем, кто поблагодарил автора и хочу сказать от себя лично большое спасибо за проделанную работу. Как дадут ЗП - скину пару бонусов Wink
Записан
Страниц: [1] 2 3 4   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet