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

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

Как показать список товаров производителя, не нажимая кнопки "Показать все товары Производителя"

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

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

Сообщений: 10


« : 23.09.2012, 14:02:46 »

Народ, собственно загвоздка. Как показать список товаров производителя, не нажимая кнопки "Показать все товары Производителя"
Записан
Sm1Le55
Новичок
*

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

Сообщений: 2


« Ответ #1 : 29.09.2012, 06:51:29 »

В файле modules/mod_virtuemart_manufacturer/tmpl/default.php
необходимо заменить
Код:
$link = JROUTE::_('index.php?option=com_virtuemart&view=manufacturer&virtuemart_manufacturer_id=' . $manufacturer->virtuemart_manufacturer_id);
на
Код:
$link = JROUTE::_('index.php?option=com_virtuemart&view=category&virtuemart_manufacturer_id=' . $manufacturer->virtuemart_manufacturer_id);
Записан
monolit
Захожу иногда
**

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

Сообщений: 10


« Ответ #2 : 29.09.2012, 17:01:24 »

не работает этот вариант. Этот файл вообще не отвечает за эту функцию. Я даже удалил этот файл, а все равно все работало. Я нашел какой файл отечает за это: \components\com_virtuemart\views\manufacturer\tmpl\details.php
Но какой и где тут прописать код не имею понятия.
У меня вирт 2.0.10
Записан
Sm1Le55
Новичок
*

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

Сообщений: 2


« Ответ #3 : 30.09.2012, 12:19:02 »

Да.. сорри.. я просто сам с похожим эксперементировал.. немного перепутал, у меня чуток другое.

Мой способ для того, чтобы из модуля "Производители" вывести не описание производителя, а сразу его товары.
Записан
sk8er
Осваиваюсь на форуме
***

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

Сообщений: 27



« Ответ #4 : 13.10.2012, 22:27:11 »

Есть же модуль VirtueMart Производители. Или самому ссылки сгенерировать и кастомно вставлять.
Записан
Aventurier
Осваиваюсь на форуме
***

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

Сообщений: 135



« Ответ #5 : 31.10.2012, 02:55:29 »

https://forum.virtuemart.net/index.php?topic=102062.0 Здесь есть кривоватый, но все-таки хак. Смысл в том, что для показа производителя надо выбирать ту страницу, что показывается по ссылке "Показать все товары Производителя", а с помощью
echo '<h1>'.$this->products[0]->mf_name.'</h1>';
echo '<p>'.$this->products[0]->mf_desc.'</p>';
вывести там название и описание производителя.
Записан
Aventurier
Осваиваюсь на форуме
***

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

Сообщений: 135



« Ответ #6 : 06.11.2012, 02:19:12 »

В общем решил неправильным способом, что называется "в лоб". Не повторяйте за мной. Azn
А на самом деле, хотелось бы от знающих людей помощи, продолжения моих изысканий, может другого пути, так как вопрос интересный и не решен даже в англоязычной части поклонников VirtueMart, хотя не раз поднимался.
Код такой, вставляется просто в details.php:

Код
<?php
$db = &JFactory::getDBO();
$db->setQuery('SELECT virtuemart_product_id FROM #__virtuemart_product_manufacturers WHERE virtuemart_manufacturer_id='.$this->manufacturer->virtuemart_manufacturer_id);
$tov_ids = $db->loadResultArray();
if ($tov_ids) {
foreach ($tov_ids as $tov_id) {
?>
<div class="man_product">
<div class="man_product_img">
<?php
$db->setQuery('SELECT virtuemart_media_id FROM #__virtuemart_product_medias WHERE virtuemart_product_id='.$tov_id.' AND ordering=1');
$tovmedia = $db->loadResult();
if ($tovmedia) {
$db->setQuery('SELECT file_url_thumb FROM #__virtuemart_medias WHERE virtuemart_media_id='.$tovmedia);
$tovmedia_file = $db->loadResult();
?>
<img src="<?php echo $tovmedia_file;?>" alt="" />
<?php
} else {
?>
<img src="/components/com_virtuemart/assets/images/vmgeneral/noimage.gif" alt="" />
<?php
}
?>
</div>
<div class="man_product_name">
<?php
$db->setQuery('SELECT product_name, product_s_desc, product_desc, slug FROM #__virtuemart_products_'.VMLANG.' WHERE virtuemart_product_id='.$tov_id);
$tovs = $db->loadObjectList();
?><h3><?php echo $tovs[0]->product_name;?></h3><?php
?>
</div>
<div class="man_product_link">
<a href="/component/virtuemart/<?php echo $tovs[0]->slug;?>-full">Подробнее...</a>
</div>
</div>
<?php
}
}
?>

Минусы - вне логики MVC. Подозреваю что и базу данных сильно нагрузил. Но все мы учимся, как говорится.
Записан
biaggi32
Захожу иногда
**

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

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



« Ответ #7 : 15.11.2012, 14:01:03 »

 У меня тоже появилось желание вывести все товары заданного производителя на странице производителя. В своём случае не изменял файлы, а создал дополнительные категории с названием производителя и описанием производителя в категории. Затем создал пункт меню с названием производителя, оно-же название категории и поставил этот пункт в нужное место на сайте. Этот способ не подойдёт для магазинов с большим количеством производителей и товаров...
Записан
Aventurier
Осваиваюсь на форуме
***

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

Сообщений: 135



« Ответ #8 : 15.11.2012, 17:33:45 »

У меня тоже появилось желание вывести все товары заданного производителя на странице производителя. В своём случае не изменял файлы, а создал дополнительные категории с названием производителя и описанием производителя в категории. Затем создал пункт меню с названием производителя, оно-же название категории и поставил этот пункт в нужное место на сайте. Этот способ не подойдёт для магазинов с большим количеством производителей и товаров...
Спасибо, тоже возьму на заметку.
Записан
ctib
Новичок
*

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

Сообщений: 3


« Ответ #9 : 14.01.2013, 13:31:38 »

https://forum.virtuemart.net/index.php?topic=102062.0 Здесь есть кривоватый, но все-таки хак. Смысл в том, что для показа производителя надо выбирать ту страницу, что показывается по ссылке "Показать все товары Производителя", а с помощью
echo '<h1>'.$this->products[0]->mf_name.'</h1>';
echo '<p>'.$this->products[0]->mf_desc.'</p>';
вывести там название и описание производителя.
Aventurier, спасибо за ссылочку! Работает! Сделал как написал P2 Peter. Всё чудесно заработало.
Кстати, Sm1Le55 писал почти правильно. Этот файл
modules\mod_virtuemart_manufacturer\tmpl\default.php
нужно править, но, как говорил P2 Peter: во-первых, нужно заменить
Код:
$link = JROUTE::_('index.php?option=com_virtuemart&view=manufacturer&virtuemart_manufacturer_id=' . $manufacturer->virtuemart_manufacturer_id);
дважды, то есть в двух местах! Я сначала тоже думал что не работает, а потом почитал внимательнее и он сказал дважды надо изменить и действительно, ниже в коде есть еще раз повтор этой строчки. А во-вторых, надо ставить ссылку без JROUTE с ним почему-то не работает. Надо заменить на
Код:
$link = "index.php?option=com_virtuemart&view=category&virtuemart_category_id=&virtuemart_manufacturer_id=" . $manufacturer->virtuemart_manufacturer_id;
И всё будет гуд, нажимая на производителя вы сразу же попадаете на список всех товаров производителя.
Если же вам нужно чтобы и описание производителя выводилось, тогда надо дописать в файле вашей темы
templates\***your template***\html\com_virtuemart\category\default.php
следующий код:
Код:
<?php
 if (empty($this->keyword)) {
echo $this->category->category_description ;
//check to see if category is manufacturer --> this below is added
$jinput = JFactory::getApplication()->input;
$trigger="virtuemart_manufacturer_id";
$mid = $jinput->get->get($trigger);
if (!empty($mid)) {
$lang=&JFactory::getLanguage();
$dba=JFactory::getDBO();
$dba->setQuery("SELECT * FROM #__virtuemart_manufacturers_".str_replace("-","_",strtolower($lang->getTag()))." WHERE ".$trigger."=".$mid.";");
$dba->query();
$muresult=$dba->loadAssoc();
$dbb = JFactory::getDBO();
$dbb->setQuery("SELECT virtuemart_media_id FROM #__virtuemart_manufacturer_medias WHERE virtuemart_manufacturer_id=".$mid.";");
$dbb->query();
$media_id = $dbb->loadResult();
$dbc = JFactory::getDBO();
$dbc->setQuery("SELECT file_url_thumb FROM #__virtuemart_medias WHERE virtuemart_media_id=".$media_id.";");
$dbc->query();
$file_url = $dbc->loadResult();
}
}

if (!empty($file_url)) {
?>
<img src="<? echo $file_url ?>" alt="<? echo $this->category->category_name ?>" align="right" style="margin:0 25px 0 25px">
<?php
}
echo "<h1>";
echo $this->category->category_name;
echo "</h1>";
if(!empty($muresult['mf_desc'])) {
echo $muresult['mf_desc'];
}
?>
<div class="clear"></div>

Я дописал его после этого блока:
Код:
<div class="category_description">
<?php $start = JRequest::getInt('limitstart',0);  $option = JRequest::getVar('option',''); If (!$start && $option == 'com_virtuemart'){ ?> <div style="width:100%;float:left;"> <?php echo $this->category->category_description ; ?> </div> <?php } ?>
</div>

И всё красиво встало, правда убрал строчки
Код:
echo "<h1>";
echo $this->category->category_name;
echo "</h1>";
так как название производителя итак выводиться сверху в заголовке и второй раз в х1 его выводить уж больно режет глаза.

В общем, так и решается проблема "virtuemart показать все товары производителя". Надеюсь эта инфа поможет ещё многим так как решение данной проблемы по сути полноценно нигде не описывается.
Записан
niggatub
Давно я тут
****

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

Сообщений: 204


« Ответ #10 : 11.06.2013, 15:06:02 »

ctib
То. что надо. Спасибо огромное!
Записан
diy05
Захожу иногда
**

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

Сообщений: 22


« Ответ #11 : 22.08.2013, 14:55:32 »

Sm1Le55, ctib по вашему варианту все получается, но остается одна проблема - почему то при таком варианте у меня перестает работать чпу именно у производителей
т.е. получается www.сайт/component/virtuemart/manufacturer/производитель.html
никто не сталкивался как решить?
Записан
green1976
Захожу иногда
**

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

Сообщений: 21


« Ответ #12 : 08.09.2013, 23:28:49 »

Вопрос на засыпку. Как сделать чтобы вместо кнопки "показать товар" высвечивались категории в которых этот товар присутсвует?
Записан
Максим Пишняк
Живу я здесь
******

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

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


Подразделение Virtuemart Украина


« Ответ #13 : 15.09.2013, 15:25:05 »

http://forum.virtuemart.net/index.php?topic=105810.0
Записан
gog4
Захожу иногда
**

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

Сообщений: 17


« Ответ #14 : 19.09.2013, 15:48:01 »

Подскажите, плз, как сделать чтобы показывалось больше чем 10 товаров на одной странице (если нажимаешь "все товары производителя")?
Записан
Максим Пишняк
Живу я здесь
******

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

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


Подразделение Virtuemart Украина


« Ответ #15 : 20.09.2013, 16:49:08 »

Ваша версия? Смотрели ли вы настройки пагинации в конфиге VM?
Записан
gertruda
Осваиваюсь на форуме
***

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

Сообщений: 72



« Ответ #16 : 20.10.2013, 22:55:51 »

Здравствуйте, уважаемые

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

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

может кто-то знает??
« Последнее редактирование: 20.10.2013, 23:23:58 от gertruda » Записан
green1976
Захожу иногда
**

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

Сообщений: 21


« Ответ #17 : 13.12.2013, 04:18:43 »

Метода работает. Но есть два неудобства: 1. Категории не убираются. 2. Не работает пагинация.
Записан
disflash
Захожу иногда
**

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

Сообщений: 15


« Ответ #18 : 24.03.2014, 23:43:36 »

Я вставил этот код:

Код:
<?php
 if (empty($this->keyword)) {
echo $this->category->category_description ;
//check to see if category is manufacturer --> this below is added
$jinput = JFactory::getApplication()->input;
$trigger="virtuemart_manufacturer_id";
$mid = $jinput->get->get($trigger);
if (!empty($mid)) {
$lang=&JFactory::getLanguage();
$dba=JFactory::getDBO();
$dba->setQuery("SELECT * FROM #__virtuemart_manufacturers_".str_replace("-","_",strtolower($lang->getTag()))." WHERE ".$trigger."=".$mid.";");
$dba->query();
$muresult=$dba->loadAssoc();
$dbb = JFactory::getDBO();
$dbb->setQuery("SELECT virtuemart_media_id FROM #__virtuemart_manufacturer_medias WHERE virtuemart_manufacturer_id=".$mid.";");
$dbb->query();
$media_id = $dbb->loadResult();
$dbc = JFactory::getDBO();
$dbc->setQuery("SELECT file_url_thumb FROM #__virtuemart_medias WHERE virtuemart_media_id=".$media_id.";");
$dbc->query();
$file_url = $dbc->loadResult();
}
}

if (!empty($file_url)) {
?>
<img src="<? echo $file_url ?>" alt="<? echo $this->category->category_name ?>" align="right" style="margin:0 25px 0 25px">
<?php
}
echo "<h1>";
echo $this->category->category_name;
echo "</h1>";
if(!empty($muresult['mf_desc'])) {
echo $muresult['mf_desc'];
}
?>
<div class="clear"></div>

...НО

Скажите, пжлст, как поиграть с условиями перед выводом этого описания, чтобы оно выводилось только на странице товаров производителя. А то после добавления этого кода на страницах категорий теперь по 2 описания.   !

Знаю вы посоветуете убрать в том же файле ...

Код:
if (empty($this->keyword) and !empty($this->category)) {
?>
<div class="category_description">
<?php echo $this->category->category_description; ?>
</div>
<?php
}


... Но мне без него не обойтись (!), так как именно он выводит описание в категориях,
 в которых нет товаров, а только подкатегории.


То есть получается
С этим (от пользователя ctib) кодом:
1. Страница всех товаров производителя           - 1 description
2. Категория без товаров, но с подкатегориями  - 1 description
3. Обычная категория с товарами                     - 2 description'а

Без кода:
1. Страница всех товаров производителя           - 0 description
2. Категория без товаров, но с подкатегориями  - 1 description
3. Обычная категория с товарами                     - 1 description'а

А логично конечно по одному описанию на каждой из этих страниц. Подскажите, плз.
« Последнее редактирование: 24.03.2014, 23:57:03 от disflash » Записан
disflash
Захожу иногда
**

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

Сообщений: 15


« Ответ #19 : 27.03.2014, 23:34:02 »

Отвечаю сам себе, вдруг мне же потом и пригодиться   Grin

1. Вывод описания на странице всех товаров производителя происходит благодаря
Код:
echo $muresult['mf_desc'];
из кода, предложенного ctib

2. За вывод описания категорий отвечает
Код:
echo $this->category->category_description ;
из того же кода.
Не знаю почему (наверно ответ таиться в правильно заданных условиях if), но вывод описания от этого echo происходит только в категориях в которых есть товары. Т.е. если это категория, в кот. только подкатегории и нет товаров, то описание не выводиться.

3. А в стандартном файле default.php (templates\---my template---\html\com_virtuemart\category\default.php)
в начале файла в этом коде
Код:
if (empty($this->keyword) and !empty($this->category)) {
?>
<div class="category_description">
<?php echo $this->category->category_description; ?>
</div>
<?php
}
уже присутствует
Код:
<?php echo $this->category->category_description; ?>
которое тоже выводит описание категорий, но вывод этого echo происходит везде, не зависимо от кол-ва товаров в категории.

Поэтому у меня и было дублирование описаний.


Что я сделал:

1. Закомментировал вывод описания категории из кода, предложенного ctib
то есть получилось
Код:
// echo $this->category->category_description ;

2. Вырезал
Код:
<div class="category_description">
<?php
echo $this->category->category_description;
    ?>
</div>
из самого начала фала и перенес в самый конец то есть после последних строк
Код:
echo JText::_ ('COM_VIRTUEMART_NO_RESULT'). ($this->keyword ? ' : (' . $this->keyword . ')' : '');
}
?>
</div><!-- end browse-view -->
...чтобы описание категории оказалось под товарами и значками подкатегорий.
« Последнее редактирование: 27.03.2014, 23:38:25 от disflash » Записан
zomby6888
Живу я здесь
******

Репутация: +168/-3
Online Online

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


« Ответ #20 : 28.03.2014, 00:16:06 »

Почему никто не использует api VirtueMart? Меня как раз недавно попросили помочь с отображением  товаров на странице производителя. Все очень просто, в файле details.php макета производителей добавил такой код:
Код
$productModel = VmModel::getModel('product');
$productModel->virtuemart_manufacturer_id = $this->manufacturer->virtuemart_manufacturer_id;
$ids = $productModel->sortSearchListQuery(TRUE);
$products = $productModel->getProducts ($ids);
$productModel->addImages($products,1);
 
в $products получил все товары, с картинками. Можно прикрутить вывод цен и пагинацию да и вобще любое поле для товара вывести. Для пагинации правда придется немного хакнуть модель product.
Записан
disflash
Захожу иногда
**

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

Сообщений: 15


« Ответ #21 : 28.03.2014, 01:34:00 »

очень соблазнительно звучит. У меня ничего не выводиться
Код:
<?php
$productModel = VmModel::getModel('product');
$productModel->virtuemart_manufacturer_id = $this->manufacturer->virtuemart_manufacturer_id;
$ids = $productModel->sortSearchListQuery(TRUE);
$products = $productModel->getProducts ($ids);
$productModel->addImages($products,1);
?>

Ты (вы) об API из английской документации вычитал?
Она не должна включаться где-нибудь?
Записан
zomby6888
Живу я здесь
******

Репутация: +168/-3
Online Online

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


« Ответ #22 : 28.03.2014, 01:51:33 »

Ну выводить потом так, например выводим картинки и названия товаров:
Код
foreach ($products as $product) 
{  
echo  '<p>'.$product->product_name.'</p>';
echo $product->images[0]->displayMediaThumb('class="browseProductImage"', false);
}
 
прикручиваем цены:
Код
if(!class_exists('calculationHelper')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'currencydisplay.php');
$currency = CurrencyDisplay::getInstance();
echo $currency->createPriceDiv ('salesPrice', 'COM_VIRTUEMART_PRODUCT_SALESPRICE', $product->prices);
 
документацию можно здесь почитать, правда слегка устаревшее:
http://docs.virtuemart.net/api-vm2/
Записан
ssttaass
Осваиваюсь на форуме
***

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

Сообщений: 34


« Ответ #23 : 31.03.2014, 23:36:59 »

Приветствую всех и прошу помощи J2-vm2 не могу вывести товар по производителям, нажимаю Показать все товары и не одного товара нету кто подскажет где что вправить ?   http://oboi-som.com/produktsiya/view/productdetails/virtuemart_product_id/92/virtuemart_category_id/40.html
« Последнее редактирование: 01.04.2014, 01:07:07 от ssttaass » Записан
wolfzp
Новичок
*

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

Сообщений: 3


« Ответ #24 : 10.09.2014, 23:37:42 »

Возникла аналогичная задача, вывести товары производителя на странице, при этом тип пункта меню "Производитель" Выбранный конкретный производитель, открывается страница с описанием производителя и ссылкой "Все товары производителя" и уже нажимая на неё - попадаем на список товаров (так сейчас работает стандартный функционал VirtueMart 2.6.10), а необходимо на странице вместо описания производителя сразу же видеть товары. В MVC модели не силен, чтобы разобрать все по полочкам и вывод был таким же как и у категории товара, т.е. название, картинка, цена, пагинация, фильтр по количеству.
Прошу Вас помочь в реализации. (вышеизложенные методы не привели к желаемому результату - нет пагинации  или же просто не работает).
Записан
avbaranow
Новичок
*

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

Сообщений: 9


« Ответ #25 : 23.10.2015, 17:25:12 »


Если же вам нужно чтобы и описание производителя выводилось, тогда надо дописать в файле вашей темы
templates\***your template***\html\com_virtuemart\category\default.php
следующий код:
Код:
<?php
 if (empty($this->keyword)) {
echo $this->category->category_description ;
//check to see if category is manufacturer --> this below is added
$jinput = JFactory::getApplication()->input;
$trigger="virtuemart_manufacturer_id";
$mid = $jinput->get->get($trigger);
if (!empty($mid)) {
$lang=&JFactory::getLanguage();
$dba=JFactory::getDBO();
$dba->setQuery("SELECT * FROM #__virtuemart_manufacturers_".str_replace("-","_",strtolower($lang->getTag()))." WHERE ".$trigger."=".$mid.";");
$dba->query();
$muresult=$dba->loadAssoc();
$dbb = JFactory::getDBO();
$dbb->setQuery("SELECT virtuemart_media_id FROM #__virtuemart_manufacturer_medias WHERE virtuemart_manufacturer_id=".$mid.";");
$dbb->query();
$media_id = $dbb->loadResult();
$dbc = JFactory::getDBO();
$dbc->setQuery("SELECT file_url_thumb FROM #__virtuemart_medias WHERE virtuemart_media_id=".$media_id.";");
$dbc->query();
$file_url = $dbc->loadResult();
}
}

if (!empty($file_url)) {
?>
<img src="<? echo $file_url ?>" alt="<? echo $this->category->category_name ?>" align="right" style="margin:0 25px 0 25px">
<?php
}
echo "<h1>";
echo $this->category->category_name;
echo "</h1>";
if(!empty($muresult['mf_desc'])) {
echo $muresult['mf_desc'];
}
?>
<div class="clear"></div>

Я дописал его после этого блока:
Код:
<div class="category_description">
<?php $start = JRequest::getInt('limitstart',0);  $option = JRequest::getVar('option',''); If (!$start && $option == 'com_virtuemart'){ ?> <div style="width:100%;float:left;"> <?php echo $this->category->category_description ; ?> </div> <?php } ?>
</div>


выводит только наименование производителя, а описание нет
что может не так?
Joomla 2.5.6 + вирт 2
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

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