Новости Joomla

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

monolit

  • Осваиваюсь на форуме
  • 10
  • 1 / 0
Народ, собственно загвоздка. Как показать список товаров производителя, не нажимая кнопки "Показать все товары Производителя"
*

Sm1Le55

  • Новичок
  • 2
  • 1 / 0
В файле 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

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

Sm1Le55

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

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

sk8er

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

Aventurier

  • Захожу иногда
  • 129
  • 16 / 0
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

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

Код: 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

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

Aventurier

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

ctib

  • Новичок
  • 3
  • 0 / 0
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

  • Захожу иногда
  • 205
  • 2 / 3
*

diy05

  • Осваиваюсь на форуме
  • 21
  • 0 / 0
Sm1Le55, ctib по вашему варианту все получается, но остается одна проблема - почему то при таком варианте у меня перестает работать чпу именно у производителей
т.е. получается www.сайт/component/virtuemart/manufacturer/производитель.html
никто не сталкивался как решить?
*

green1976

  • Осваиваюсь на форуме
  • 21
  • 0 / 0
Вопрос на засыпку. Как сделать чтобы вместо кнопки "показать товар" высвечивались категории в которых этот товар присутсвует?
*

gog4

  • Осваиваюсь на форуме
  • 17
  • 0 / 0
Подскажите, плз, как сделать чтобы показывалось больше чем 10 товаров на одной странице (если нажимаешь "все товары производителя")?
*

Максим Пишняк

  • Давно я тут
  • 837
  • 35 / 0
Ваша версия? Смотрели ли вы настройки пагинации в конфиге VM?
*

gertruda

  • Захожу иногда
  • 100
  • 0 / 0
Здравствуйте, уважаемые

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

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

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

green1976

  • Осваиваюсь на форуме
  • 21
  • 0 / 0
Метода работает. Но есть два неудобства: 1. Категории не убираются. 2. Не работает пагинация.
*

disflash

  • Осваиваюсь на форуме
  • 15
  • 0 / 0
Я вставил этот код:

Код
<?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

  • Осваиваюсь на форуме
  • 15
  • 0 / 0
Отвечаю сам себе, вдруг мне же потом и пригодиться   ;D

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

  • Завсегдатай
  • 1473
  • 171 / 3
Почему никто не использует api VirtueMart? Меня как раз недавно попросили помочь с отображением  товаров на странице производителя. Все очень просто, в файле details.php макета производителей добавил такой код:
Код: 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.
интернет-блог: http://websiteprog.ru
*

disflash

  • Осваиваюсь на форуме
  • 15
  • 0 / 0
очень соблазнительно звучит. У меня ничего не выводиться
Код
<?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

  • Завсегдатай
  • 1473
  • 171 / 3
Ну выводить потом так, например выводим картинки и названия товаров:
Код: php
foreach ($products as $product) 

echo  '<p>'.$product->product_name.'</p>';
echo $product->images[0]->displayMediaThumb('class="browseProductImage"', false);
}
прикручиваем цены:
Код: php
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/
интернет-блог: http://websiteprog.ru
*

ssttaass

  • Осваиваюсь на форуме
  • 33
  • 0 / 1
Приветствую всех и прошу помощи 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

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

avbaranow

  • Осваиваюсь на форуме
  • 20
  • 0 / 0

Если же вам нужно чтобы и описание производителя выводилось, тогда надо дописать в файле вашей темы
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
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Не отображаются товары в категории

Автор iZacNT

Ответов: 0
Просмотров: 744
Последний ответ 23.06.2023, 12:20:49
от iZacNT
VirtueMart 3 Отображать только товары в наличии!

Автор GaziroFFka

Ответов: 4
Просмотров: 2102
Последний ответ 06.06.2023, 13:55:13
от Akeksandr
Мультиязычность, связь товаров, доп.поля

Автор sanek2281

Ответов: 1
Просмотров: 1315
Последний ответ 24.01.2022, 18:00:46
от Максим Пишняк
VirtueMart 3 Через RO csvi не могу загрузить больше 956 товаров

Автор artem_wrong

Ответов: 11
Просмотров: 1263
Последний ответ 25.09.2021, 21:13:23
от ShopES
Импорт товаров

Автор tmpnikl

Ответов: 9
Просмотров: 618
Последний ответ 06.05.2021, 07:13:51
от tmpnikl