Новости Joomla

joomLab Gallery - плагин галереи изображений для Joomla

👩‍💻 joomLab Gallery - плагин галереи изображений для Joomla.Плагин joomLab Gallery позволит Вам добавлять в любой материал неограниченное количество галерей, а главное удобно управлять файлами и эффектами в каждой галерее.Плагин использует популярны скрипты Swiper.js и FancyBox. Первый для крутой организации и эффектов галерей, а второй для красивого и функционального показа оригинальных изображений на Вашем сайте.На данный момент плагин имеет 10 макетов вывода - это 10 различных эффектов галерей и Вы можете совмещать все 10 в 1 материале.Плагин позволяет гибко настраивать индивидуально каждую галерею в материале. Вы можете выбрать макет, эффекты и даже можете управлять функциями всплывающего окна изображения.Недостатки.Такой вид реализации не предусматривает выбор изображения на сервере. Т.е. Вы не можете выбрать уже добавленное фото, только загружать заново. Плагин не предоставляет возможности доступа к медиа-менеджеру.Плагин бесплатный. Разработчик - участник нашего сообщества Александр Новиков (@pro-portal).Страница расширения@joomlafeed#joomla #расширения

Готовлю большой выпуск, включающий интервью с участниками Joomla Ну что, интересная инициатива от...

Готовлю большой выпуск, включающий интервью с участниками Joomla Ну что, интересная инициатива от...

Готовлю большой выпуск, включающий интервью с участниками Joomla 🖨Ну что, интересная инициатива от @webtolkru в виде интервью с разными участниками весьма меня увлекла. Я, вооружившись данным примером, решил подготовить выпуск для NorrNext (@norrnext) и экстраполировал идею на международный масштаб. Теперь готовлю эксклюзивный выпуск с участниками Joomla сообщества со всего мира, которые, в той или иной мере, внесли свой вклад в развитие и популяризацию системы. Будут беседы с людьми из разных стран и фото с юбилейной символикой 📸Работа в процессе 👆 📝О результатах оповещу отдельно.

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

xlite

  • Захожу иногда
  • 65
  • 5 / 0
Сталкнулся с таким требованием заказчика .. а именно вывести все товары в главную категорию crazy! ..  Для VirtueMart 1.1.* решение известно
для второго же нет ..
Есть одна тема которая поднята на буржуйском сайте, но у меня она не работает ..
http://forum.virtuemart.net/index.php?topic=97874.0

Может кто то разберется.. Потому что тема полезная и важная для всех.
*

vitoxa_ya

  • Осваиваюсь на форуме
  • 12
  • 4 / 0
Смотри вот эту тему http://joomlaforum.ru/index.php/topic,221276.0.html
всё по аналогии только править файл нужно   default.php   по адресу ваш_сайт\components\com_virtuemart\views\categories\tmpl
отключаешь фильтр ($filter_category = false;) должно вывести все товары.
*

stincv

  • Новичок
  • 8
  • 2 / 0
Сталкнулся с таким требованием заказчика .. а именно вывести все товары в главную категорию crazy! ..  Для VirtueMart 1.1.* решение известно
для второго же нет ..
Есть одна тема которая поднята на буржуйском сайте, но у меня она не работает ..
http://forum.virtuemart.net/index.php?topic=97874.0

Может кто то разберется.. Потому что тема полезная и важная для всех.

На форуме, указанном Вами решение действительно рабочее для версии VirtueMart 2.
Напишу здесь то же самое, только на русском :)

1. Находим в файле \administrator\components\com_virtuemart\models\product.php функцию:
Код
function setKeyWord ($keyword) {                                                                                      
                                                                                                                             
                $this->keyword = $keyword;                                                                                   
        }
и после нее вставляем свою функцию:
Код
function untreeCat($vm_catid, &$ccont){                                                                                       
   $dbx = JFactory::getDBO();                                                                                                 
   $q = 'SELECT `category_child_id` FROM `#__virtuemart_category_categories` WHERE `category_parent_id`="'.$vm_catid.'"';     
   $dbx->setQuery($q);                                                                                                       
   $dby = $dbx->query();                                                                                                     
   if (!$dby->num_rows) {                                                                                                     
      return;                                                                                                                 
   } else {                                                                                                                   
        while($tt = $dby->fetch_row()) {                                                                                     
           array_push($ccont, $tt[0]);                                                                                       
           $kat = $tt[0];                                                                                                     
           $this->untreeCat($kat, $ccont);                                                                                   
       }                                                                                                                     
    }                                                                                                                         
}                                                                                                                             

2. Находим здесь же блок с проверкой:
Код
if ($virtuemart_category_id > 0) {                                                                              
                      $joinCategory = TRUE;                                                                                   
                      $where[] = ' `#__virtuemart_product_categories`.`virtuemart_category_id` = ' . $virtuemart_category_id;
              }
и заменяем его на :
Код
if ($virtuemart_category_id>0){                                                                                               
   $joinCategory = true ;                                                                                                     
$catscont = array();                                                                                                         
       $this->untreeCat($virtuemart_category_id, $catscont);                                                                 
       $qkat = ' `#__virtuemart_product_categories`.`virtuemart_category_id` IN('.$virtuemart_category_id;                   
       foreach ($catscont as &$kat){                                                                                         
           $qkat .= ', '.$kat;                                                                                               
       }                                                                                                                     
       $qkat .= ')';                                                                                                         
       $where[] = $qkat;                                                                                                     
}                                                                                                                             
3. Наслаждаемся результатом.

ЗЫ: модераторам можно вынести тему в частые вопросы по VirtueMart 2 , т.к. данное решение 100% рабочее, да и людям будет быстрее искать - тема то актуальная.
*

Stake1988

  • Захожу иногда
  • 66
  • 0 / 0
Я так понимаю всё это при первом же обновлении ВМ2 потрётся? Можно каким-либо образом оградиться от подобного?
*

cyberj

  • Осваиваюсь на форуме
  • 19
  • 0 / 0
Я так понимаю всё это при первом же обновлении ВМ2 потрётся? Можно каким-либо образом оградиться от подобного?

Нужно перекрыть файл пользовательским, про перекрытие я уже писал, повторюсь ещё раз: www.ваш_сайт\components\com_virtuemart\views\virtuemart\tmpl копируем файл default_categories.php в папку templates\ваш_шаблон\html\com_virtuemart\virtuemart - этот файл будет перекрывать собой одноимённый...
*

jiammer

  • Новичок
  • 1
  • 0 / 0
stincv, спасибо. Все действительно работает.
(joomla 2.5.8 + VirtueMart 2.0.14)
*

biohan

  • Захожу иногда
  • 56
  • 0 / 0
Joomla 2.5.8 и vm 2.0.16 не работает
*

Romaha

  • Захожу иногда
  • 56
  • 1 / 0
Joomla 2.5.7 и vm 2.0.16. У меня тоже не работает
*

Darkman

  • Осваиваюсь на форуме
  • 25
  • 0 / 0
Joomla 2.5.7, vm 2.0.18a решения к сожалению так и нет, на буржуйском форуме выложили плагин, он тоже не работает.
*

itckarpatia

  • Захожу иногда
  • 152
  • 4 / 0
Обновил к 2.018 на свою голову, не работает как вывод из категорий так и навигация по товарам, хотя если заменить файл \administrator\components\com_virtuemart\models\product.php от 2.0.14 - работает,  но при переходе в корзину белый экран !
*

art-apple

  • Захожу иногда
  • 386
  • 61 / 2
Все работает и на 2.0.18, просто нужно немного головой думать
операции теже проделываем только вместо #__virtuemart_product_categories пишем - pc
*

art-apple

  • Захожу иногда
  • 386
  • 61 / 2
Т.е. вот такая строка должна быть
Код
$qkat = ' `pc`.`virtuemart_category_id` IN('.$virtuemart_category_id;
а не
Код
$qkat = ' `#__virtuemart_product_categories`.`virtuemart_category_id` IN('.$virtuemart_category_id;
*

Tuzemec

  • Захожу иногда
  • 246
  • 28 / 0
  • Ня!
Т.е. вот такая строка должна быть
Код
$qkat = ' `pc`.`virtuemart_category_id` IN('.$virtuemart_category_id;
а не
Код
$qkat = ' `#__virtuemart_product_categories`.`virtuemart_category_id` IN('.$virtuemart_category_id;
Подтверждаю. НЕ РАБОТАЕТ. Версия Joomla! 2.5.9 + VM 2.0.20b. Результат нулевой. Как не выводил товар так и не выводит.
 А вот у меня другой способ в голове зреет. Без изменения самой модели VM. Как вывести весь товар в нулевую категорию здесь.
А вот как вывести товары из подкатегорий в родительскую набросок здесь. Подключайтесь к поиску решений. Для ленивых тыкать ссылки продублирую сообщение из соседней темы...

Колдовал весь вечер и пришел к выводу что нет ничего невозможного.
В общем, вывести товар из подкатегорий в родительскую можно без добавления принадлежности товара к родительской путем изменения кода  в шаблоне default.php категории.
Я создал в папке шаблона категории файл catwithproduct.php и в настройках VM выставил его как макет категории. Собственно для проверки и доработки выкладываю код этого файла. Его необходимо доработать, нет разбиения на страницы и фильтрации по производителю. Думается для полной работоспособной версии придется скрестить view.html.php и default.php категории в один файл
catwithproduct.php
Код
<?php
/**
 *
 * Show the products in a category
 *
 * @package    VirtueMart
 * @subpackage
 * @author RolandD
 * @author Max Milbers
 * @todo add pagination
 * @link http://www.virtuemart.net
 * @copyright Copyright (c) 2004 - 2010 VirtueMart Team. All rights reserved.
 * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php
 * VirtueMart is free software. This version may have been modified pursuant
 * to the GNU General Public License, and as distributed it includes or
 * is derivative of works licensed under the GNU General Public License or
 * other free or open source software licenses.
 * @version $Id: default.php 6556 2012-10-17 18:15:30Z kkmediaproduction $
 */

//vmdebug('$this->category',$this->category);
vmdebug ('$this->category ' . $this->category->category_name);
// Check to ensure this file is included in Joomla!
defined ('_JEXEC') or die('Restricted access');
JHTML::_ ('behavior.modal');
/* javascript for list Slide
  Only here for the order list
  can be changed by the template maker
*/
$js = "
jQuery(document).ready(function () {
jQuery('.orderlistcontainer').hover(
function() { jQuery(this).find('.orderlist').stop().show()},
function() { jQuery(this).find('.orderlist').stop().hide()}
)
});
";

$document = JFactory::getDocument ();
$document->addScriptDeclaration ($js);

// Подключаем обработчик модели товара
$productModel = VmModel::getModel('product');

/*$edit_link = '';
if(!class_exists('Permissions')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'permissions.php');
if (Permissions::getInstance()->check("admin,storeadmin")) {
$edit_link = '<a href="'.JURI::root().'index.php?option=com_virtuemart&tmpl=component&view=category&task=edit&virtuemart_category_id='.$this->category->virtuemart_category_id.'">
'.JHTML::_('image', 'images/M_images/edit.png', JText::_('COM_VIRTUEMART_PRODUCT_FORM_EDIT_PRODUCT'), array('width' => 16, 'height' => 16, 'border' => 0)).'</a>';
}

echo $edit_link; */
if (empty($this->keyword)) {
?>
<div class="category_description">
<?php echo $this->category->category_description; ?>
</div>
<?php
}

/* Show child categories */

//if (VmConfig::get ('showCategory', 1) and empty($this->keyword)) {
if (VmConfig::get ('showCategory', 1)) {
if ($this->category->haschildren) {

// Category and Columns Counter
$iCol = 1;
$iCategory = 1;

// Calculating Categories Per Row
$categories_per_row = VmConfig::get ('categories_per_row', 3);
$category_cellwidth = ' width' . floor (100 / $categories_per_row);

// Separator
$verticalseparator = " vertical-separator";
?>

<div class="category-view">

<?php // Start the Output
if (!empty($this->category->children)) {
foreach ($this->category->children as $category) {

// Show the horizontal seperator
if ($iCol == 1 && $iCategory > $categories_per_row) {
?>
<div class="horizontal-separator"></div>
<?php
}

// this is an indicator wether a row needs to be opened or not
if ($iCol == 1) {
?>
<div class="row">
<?php
}

// Show the vertical seperator
if ($iCategory == $categories_per_row or $iCategory % $categories_per_row == 0) {
$show_vertical_separator = ' ';
} else {
$show_vertical_separator = $verticalseparator;
}

// Category Link
$caturl = JRoute::_ ('index.php?option=com_virtuemart&view=category&virtuemart_category_id=' . $category->virtuemart_category_id);

// Show Category
?>
<div class="category floatleft<?php echo $category_cellwidth . $show_vertical_separator ?>">
<div class="spacer">
<h2>
<a href="<?php echo $caturl ?>" title="<?php echo $category->category_name ?>">
<?php echo $category->category_name ?>
<br/>
<?php // if ($category->ids) {
echo $category->images[0]->displayMediaThumb ("", FALSE);
//} ?>
</a>
</h2>
</div>
</div>
<?php
$iCategory++;

// Do we need to close the current row now?
if ($iCol == $categories_per_row) {
?>
<div class="clear"></div>
</div>
<?php
$iCol = 1;
} else {
$iCol++;
}
}
}
// Do we need a final closing row tag?
if ($iCol != 1) {
?>
<div class="clear"></div>
</div>
<?php } ?>
</div>

<?php
}
}
?>
<div class="browse-view">
<?php
if (!empty($this->keyword)) {
?>
<h3><?php echo $this->keyword; ?></h3>
<?php
} ?>
<?php if ($this->search !== NULL) { ?>
<form action="<?php echo JRoute::_ ('index.php?option=com_virtuemart&view=category&limitstart=0&virtuemart_category_id=' . $this->category->virtuemart_category_id); ?>" method="get">

<!--BEGIN Search Box -->
<div class="virtuemart_search">
<?php echo $this->searchcustom ?>
<br/>
<?php echo $this->searchcustomvalues ?>
<input name="keyword" class="inputbox" type="text" size="20" value="<?php echo $this->keyword ?>"/>
<input type="submit" value="<?php echo JText::_ ('COM_VIRTUEMART_SEARCH')?>" class="button" onclick="this.form.keyword.focus();"/>
</div>
<input type="hidden" name="search" value="true"/>
<input type="hidden" name="view" value="category"/>

</form>
<!-- End Search Box -->
<?php } ?>

<?php // Show child categories
                // Вырубаем условие проверки наличия товара в родительской категории
//if (!empty($this->products)) {

?>
<div class="orderby-displaynumber">
<div class="width70 floatleft">
<?php echo $this->orderByList['orderby']; ?>
<?php echo $this->orderByList['manufacturer']; ?>
</div>
<div class="width30 floatleft display-number">
<?php echo $this->vmPagination->getResultsCounter ();?><br/><?php echo $this->vmPagination->getLimitBox (); ?>
</div>
<div class="vm-pagination">
<?php echo $this->vmPagination->getPagesLinks (); ?>
<span style="float:right"><?php echo $this->vmPagination->getPagesCounter (); ?></span>
</div>

<div class="clear"></div>
</div> <!-- end of orderby-displaynumber -->
<div class="product-view">
<h1><?php echo $this->category->category_name; ?></h1>

<?php
// Category and Columns Counter
$iBrowseCol = 1;
$iBrowseProduct = 1;

// Calculating Products Per Row
$BrowseProducts_per_row = $this->perRow;
$Browsecellwidth = ' width' . floor (100 / $BrowseProducts_per_row);

// Separator
$verticalseparator = " vertical-separator";

// Count products ?? why not just count ($this->products)  ?? note by Max Milbers
$BrowseTotalProducts = 0;
foreach ($this->products as $product) {
$BrowseTotalProducts++;
}

//Проверяем является ли категория родительской
if (!empty($this->category->children)) {
foreach ($this->category->children as $category) {
// Start the Output
// Переназначаем переменные согласно требованиям текущей подкатегории
$categoryId = $category->virtuemart_category_id;
$products = $productModel->getProductsInCategory($categoryId);
$productModel->addImages($products,1);
if ($products) {
$currency = CurrencyDisplay::getInstance( );
$this->assignRef('currency', $currency);
}
                        //Начинаем вывод товара
foreach ($products as $product) {

// Show the horizontal seperator
if ($iBrowseCol == 1 && $iBrowseProduct > $BrowseProducts_per_row) {
?>
<div class="horizontal-separator"></div>
<?php
}

// this is an indicator wether a row needs to be opened or not
if ($iBrowseCol == 1) {
?>
<div class="row">
<?php
}

// Show the vertical seperator
if ($iBrowseProduct == $BrowseProducts_per_row or $iBrowseProduct % $BrowseProducts_per_row == 0) {
$show_vertical_separator = ' ';
} else {
$show_vertical_separator = $verticalseparator;
}

// Show Products
?>
<div class="product floatleft<?php echo $Browsecellwidth . $show_vertical_separator ?>">
<div class="spacer">
<div class="width100 floatleft center">

<h2><?php echo JHTML::link ($product->link, $product->product_name); ?></h2>

<?php /** @todo make image popup */
if (!empty($product->product_s_desc)) {
echo $product->images[0]->displayMediaThumb ('class="browseProductImage" border="0" title="' . shopFunctionsF::limitStringByWord ($product->product_s_desc, 100, '...'). '" ', TRUE, 'class="modal"');
}else{
echo $product->images[0]->displayMediaThumb ('class="browseProductImage" border="0" title="' . $product->product_name . '" ', TRUE, 'class="modal"');
}
?>
<?php if ($this->showRating) {
?>
<?php } ?>

<?php
if (!VmConfig::get ('use_as_catalog') and !(VmConfig::get ('stockhandle', 'none') == 'none') && (VmConfig::get ('display_stock', 1))) {
?>
<!-- if (!VmConfig::get('use_as_catalog') and !(VmConfig::get('stockhandle','none')=='none')){?> -->
<div class="paddingtop8">
<span class="vmicon vm2-<?php echo $product->stock->stock_level ?>" title="<?php echo $product->stock->stock_tip ?>"></span>
<span class="stock-level"><?php echo JText::_ ('COM_VIRTUEMART_STOCK_LEVEL_DISPLAY_TITLE_TIP')?></span>
</div>
<?php }?>
</div>

<div class="width100 floatright center">

<?php // Product Short Description
if (!empty($product->product_s_desc)) {
?>
<!--<p class="product_s_desc">
<?php// echo shopFunctionsF::limitStringByWord ($product->product_s_desc, 40, '...')?>
</p>-->
<?php } ?>

<div class="product-price marginbottom12" id="productPrice<?php echo $product->virtuemart_product_id ?>">
<?php
if ($this->show_prices == '1') {
if (empty($product->prices['salesPrice']) 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);
echo '<span class="price-crossed" >' . $this->currency->createPriceDiv ('basePriceWithTax', 'COM_VIRTUEMART_PRODUCT_BASEPRICE_WITHTAX', $product->prices). "</span>";
echo $this->currency->createPriceDiv ('salesPriceWithDiscount', 'COM_VIRTUEMART_PRODUCT_SALESPRICE_WITH_DISCOUNT', $product->prices);
echo $this->currency->createPriceDiv ('salesPrice', 'COM_VIRTUEMART_PRODUCT_SALESPRICE', $product->prices);
echo $this->currency->createPriceDiv ('discountAmount', 'COM_VIRTUEMART_PRODUCT_DISCOUNT_AMOUNT', $product->prices);
echo $this->currency->createPriceDiv ('taxAmount', 'COM_VIRTUEMART_PRODUCT_TAX_AMOUNT', $product->prices);

} ?>

</div>

<div>
<?php // Product Details Button
if (!empty($product->product_s_desc)) {
echo JHTML::link ($product->link, JText::_ ('COM_VIRTUEMART_PRODUCT_DETAILS'), array('title' => shopFunctionsF::limitStringByWord ($product->product_s_desc, 100, '...'), 'class' => 'product-details'));
}else{
echo JHTML::link ($product->link, JText::_ ('COM_VIRTUEMART_PRODUCT_DETAILS'), array('title' => $product->product_name, 'class' => 'product-details'));
}

?>
</div>

</div>
<div class="clear"></div>
</div>
<!-- end of spacer -->
</div> <!-- end of product -->
<?php

// Do we need to close the current row now?
if ($iBrowseCol == $BrowseProducts_per_row || $iBrowseProduct == $BrowseTotalProducts) {
?>
<div class="clear"></div>
  </div> <!-- end of row -->
<?php
$iBrowseCol = 1;
} else {
$iBrowseCol++;
}

$iBrowseProduct++;
} // end of foreach ( $this->products as $product )
}
// Конец вывода товара и начало вывода товара категории, если у нее нет подкатегорий
} else {
foreach ($this->products as $product) {

// Show the horizontal seperator
if ($iBrowseCol == 1 && $iBrowseProduct > $BrowseProducts_per_row) {
?>
<div class="horizontal-separator"></div>
<?php
}

// this is an indicator wether a row needs to be opened or not
if ($iBrowseCol == 1) {
?>
<div class="row">
<?php
}

// Show the vertical seperator
if ($iBrowseProduct == $BrowseProducts_per_row or $iBrowseProduct % $BrowseProducts_per_row == 0) {
$show_vertical_separator = ' ';
} else {
$show_vertical_separator = $verticalseparator;
}

// Show Products
?>
<div class="product floatleft<?php echo $Browsecellwidth . $show_vertical_separator ?>">
<div class="spacer">
<div class="width100 floatleft center">

<h2><?php echo JHTML::link ($product->link, $product->product_name); ?></h2>

<?php /** @todo make image popup */
if (!empty($product->product_s_desc)) {
echo $product->images[0]->displayMediaThumb ('class="browseProductImage" border="0" title="' . shopFunctionsF::limitStringByWord ($product->product_s_desc, 100, '...'). '" ', TRUE, 'class="modal"');
}else{
echo $product->images[0]->displayMediaThumb ('class="browseProductImage" border="0" title="' . $product->product_name . '" ', TRUE, 'class="modal"');
}
?>
<?php if ($this->showRating) {
?>
<?php } ?>

<?php
if (!VmConfig::get ('use_as_catalog') and !(VmConfig::get ('stockhandle', 'none') == 'none') && (VmConfig::get ('display_stock', 1))) {
?>
<!-- if (!VmConfig::get('use_as_catalog') and !(VmConfig::get('stockhandle','none')=='none')){?> -->
<div class="paddingtop8">
<span class="vmicon vm2-<?php echo $product->stock->stock_level ?>" title="<?php echo $product->stock->stock_tip ?>"></span>
<span class="stock-level"><?php echo JText::_ ('COM_VIRTUEMART_STOCK_LEVEL_DISPLAY_TITLE_TIP')?></span>
</div>
<?php }?>
</div>

<div class="width100 floatright center">

<?php // Product Short Description
if (!empty($product->product_s_desc)) {
?>
<!--<p class="product_s_desc">
<?php// echo shopFunctionsF::limitStringByWord ($product->product_s_desc, 40, '...')?>
</p>-->
<?php } ?>

<div class="product-price marginbottom12" id="productPrice<?php echo $product->virtuemart_product_id ?>">
<?php
if ($this->show_prices == '1') {
if (empty($product->prices['salesPrice']) 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);
echo '<span class="price-crossed" >' . $this->currency->createPriceDiv ('basePriceWithTax', 'COM_VIRTUEMART_PRODUCT_BASEPRICE_WITHTAX', $product->prices). "</span>";
echo $this->currency->createPriceDiv ('salesPriceWithDiscount', 'COM_VIRTUEMART_PRODUCT_SALESPRICE_WITH_DISCOUNT', $product->prices);
echo $this->currency->createPriceDiv ('salesPrice', 'COM_VIRTUEMART_PRODUCT_SALESPRICE', $product->prices);
echo $this->currency->createPriceDiv ('discountAmount', 'COM_VIRTUEMART_PRODUCT_DISCOUNT_AMOUNT', $product->prices);
echo $this->currency->createPriceDiv ('taxAmount', 'COM_VIRTUEMART_PRODUCT_TAX_AMOUNT', $product->prices);

} ?>

</div>

<div>
<?php // Product Details Button
if (!empty($product->product_s_desc)) {
echo JHTML::link ($product->link, JText::_ ('COM_VIRTUEMART_PRODUCT_DETAILS'), array('title' => shopFunctionsF::limitStringByWord ($product->product_s_desc, 100, '...'), 'class' => 'product-details'));
}else{
echo JHTML::link ($product->link, JText::_ ('COM_VIRTUEMART_PRODUCT_DETAILS'), array('title' => $product->product_name, 'class' => 'product-details'));
}

?>
</div>

</div>
<div class="clear"></div>
</div>
<!-- end of spacer -->
</div> <!-- end of product -->
<?php

// Do we need to close the current row now?
if ($iBrowseCol == $BrowseProducts_per_row || $iBrowseProduct == $BrowseTotalProducts) {
?>
<div class="clear"></div>
  </div> <!-- end of row -->
<?php
$iBrowseCol = 1;
} else {
$iBrowseCol++;
}

$iBrowseProduct++;
} // end of foreach ( $this->products as $product )
}
// Do we need a final closing row tag?
if ($iBrowseCol != 1) {
?>
<div class="clear"></div>

<?php
}
?>
</div>
<div class="vm-pagination"><?php echo $this->vmPagination->getPagesLinks (); ?><span style="float:right"><?php echo $this->vmPagination->getPagesCounter (); ?></span></div>

<?php
//} elseif ($this->search !== NULL) {
// echo JText::_ ('COM_VIRTUEMART_NO_RESULT'). ($this->keyword ? ' : (' . $this->keyword . ')' : '');
//}
?>
</div><!-- end browse-view -->
<?php //}
?>
С таким файлом вывода товаров в категориях, отпадает дублирование товара и ссылка валидная и не надо назначать принадлежность к родительской категории. Еще раз повторюсь, что это сырец, а не готовое решение. Кто заинтересован, присоединяйтесь к разработке. Решение найду не скоро, т.к. катастрофически нет времени. Занят, но решение задачи найти необходимо.
« Последнее редактирование: 23.03.2013, 15:57:45 от Tuzemec »
Каждый ваш клик помогает заработать сыну на конфеты
Не дайте ребенку остаться без сладкого! Сделай ТЫЦ!
*

art-apple

  • Захожу иногда
  • 386
  • 61 / 2
Tuzemec, вы уж извините, но у вас кривые руки наверно либо невнимательность. Все работает, завтра дам ссылку на сайт, где это реализовано и опишу действия.
*

Tuzemec

  • Захожу иногда
  • 246
  • 28 / 0
  • Ня!
Tuzemec, вы уж извините, но у вас кривые руки наверно либо невнимательность. Все работает, завтра дам ссылку на сайт, где это реализовано и опишу действия.
Ну где ссылка то?
Каждый ваш клик помогает заработать сыну на конфеты
Не дайте ребенку остаться без сладкого! Сделай ТЫЦ!
*

art-apple

  • Захожу иногда
  • 386
  • 61 / 2
Времени совсем не было, вот - http://айстрой.рф
Как это реализовано:
идем сюда - /administrator/components/com_virtuemart/models/product.php

Добавляем
Код
function untreeCat($vm_catid, &$ccont){
        $db = JFactory::getDBO();
        $query = 'SELECT `category_child_id` FROM `#__virtuemart_category_categories` WHERE `category_parent_id`="'.$vm_catid.'"';
        $db->setQuery($query);
        $db->query();       
        $rows = $db->loadRowList();
        if (empty($rows))    {
            return;
        } else {           
            foreach($rows as $row) {
                array_push($ccont, $row[0]);
                $kat = $row[0];
                $this->untreeCat($kat, $ccont);               
            }
        }
    }
сразу после строки
Код
class VirtueMartModelProduct extends VmModel {

в этом же файле ищем (у меня 309 строка)
Код
			if ($virtuemart_category_id > 0) {
$joinCategory = TRUE;
$where[] = ' `pc`.`virtuemart_category_id` = ' . $virtuemart_category_id;
}
меняем на
Код
if ($virtuemart_category_id > 0) {
   $joinCategory = true ;
   $catscont = array();
   $this->untreeCat($virtuemart_category_id, $catscont);
   $qkat = ' `pc`.`virtuemart_category_id` IN('.$virtuemart_category_id;
    foreach ($catscont as &$kat){
       $qkat .= ', '.$kat;
    }       
    $qkat .= ')';
    $where[] = $qkat;
}
далее ищем (у меня 1928 строка)
Код
if ($virtuemart_category_id) {
    $query .= ' AND c.`virtuemart_category_id` =' . (int)$virtuemart_category_id;
}
меняем на
Код
if ($virtuemart_category_id) {
    $catscont = array();
    $this->untreeCat($virtuemart_category_id, $catscont);
    $qkat = ' AND c.`virtuemart_category_id` IN('.$virtuemart_category_id;
    foreach ($catscont as &$kat){
       $qkat .= ', '.$kat;
    }       
    $qkat .= ')';
    $query .= $qkat;
}
   


Проделал это только что на VirtueMart 2.0.20b
Товары из подкатегорий теперь выводятся в родительской категории
Можно еще сортировку товаров в этом случае сделать по категориям, это опишу позже.
*

mamzt1

  • Новичок
  • 4
  • 0 / 0
art-apple, подскажите, пожалуйста, а как сделать  такое  меню, как на Вашем сайте - http://айстрой.рф.
Я имею ввиду каталог товаров в виде  проводника.
Вы использовали  модуль  для VirtueMart 2.0.20b или это  меню Joomla + нужные стили?
Уже измоталась в поисках такого модуля для VirtueMart 2 - не могу найти...
Заранее спасибо  за ответ

*

art-apple

  • Захожу иногда
  • 386
  • 61 / 2
Это стандартный модуль VirtueMart, естественно немного переписан шаблон вывода модуля и написаны стили.
*

mamzt1

  • Новичок
  • 4
  • 0 / 0
Я прошу прощенье  за назойливость,  но  как называется  этот модуль  для VirtueMart 2?
Для VirtueMart 1х  - при скачивании  компонента  шла специальная папка modules - там был  модуль  mod_product_categories_1.1.9.j15.zip (например).
А где можно  взять  такой модуль  для  VirtueMart 2.  При скачивании VirtueMart 2  модули не идут в комплекте.
 Или у меня не полная версия и его надо скачивать  отдельно?
Подскажите, пожалуйста, где найти  этот модуль  для VirtueMart 2.
Заранее спасибо.

*

art-apple

  • Захожу иногда
  • 386
  • 61 / 2
Смотрите на официальном сайте, http://dev.virtuemart.net/attachments/download/596/com_virtuemart.2.0.20b_extract_first.targz.zip - последняя версия на сегодня
Скачиваете распаковываете, там 2 пакета установки, устанавливаете оба и будут у вас все модули и плагины. В том числе и - mod_virtuemart_category
*

Tuzemec

  • Захожу иногда
  • 246
  • 28 / 0
  • Ня!
Времени совсем не было, вот - http://айстрой.рф
Как это реализовано:
Спасибо! Сработало! Видимо вся запара была с местом вставки функции untreeCat. Единственное что напрягает так это то, что после обновления все изменения делать заново придется... =(
Каждый ваш клик помогает заработать сыну на конфеты
Не дайте ребенку остаться без сладкого! Сделай ТЫЦ!
*

SteelBear

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
VirtueMart 2.0.18b
функцию вставил как есть, а if немного пришлось подправить. если кому нужно

Код
			if ($virtuemart_category_id) {
$joinCategory = TRUE; //нужно иначе в админке будет ошибку при использовании фильтра писать
$catscont = array();
$this->untreeCat($virtuemart_category_id, $catscont);
$qkat = ' pc.`virtuemart_category_id` IN('.$virtuemart_category_id;
foreach ($catscont as &$kat){
$qkat .= ', '.$kat;
}        
$qkat .= ')';
$where[] = $qkat;
}
« Последнее редактирование: 11.04.2013, 17:39:47 от SteelBear »
*

Yodalife

  • Новичок
  • 8
  • 0 / 0
Времени совсем не было, вот - http://айстрой.рф
Как это реализовано:
...
Класс, заработало! Выводит подкатегории, но если много товаров в подкатегориях, то выдает ошибку по таймауту ;-(
Можно ли как ни будь ограничить вывод, например, не выводить товары самой верхней категории(где много подкатегорий)? Или, выводить товары, если в категории, не более 5(любое число) подкатегорий?
Проверял на VirtueMart 2.0.20b
*

web11

  • Захожу иногда
  • 58
  • 1 / 0
спасибо за рабочее решение!
*

Tuzemec

  • Захожу иногда
  • 246
  • 28 / 0
  • Ня!
После обновления до версии 2.0.22a и внесения вышеуказанных изменений перестал работать лимит вывода товара на странице. Возможно из-за того, что в таблице категории появились изменения?

ЗЫ: С лимитом разобрался... в таблице суффикс_virtuemart_categories поправил значение поля limit_list_step  таким запросом в базе
Код
UPDATE  `database`.`suffix_virtuemart_categories` SET  `limit_list_step` =  '10,20,30,40,50,60,70,80,90,100'; 

Но при показе некоторых товаров в категориях выдает фатальную ошибку memory_limit. Матерится то на custom_fields, то на вычисление стоимости товара... В чем может быть проблема?

ЗЗЫ: После снятия с публикации всех "Настраиваемых полей" и повторной их публикации, матершина на custom_fields пропала. Сайт работает в прежнем режиме, без сбоев на VM 2.0.22a
« Последнее редактирование: 05.08.2013, 16:05:54 от Tuzemec »
Каждый ваш клик помогает заработать сыну на конфеты
Не дайте ребенку остаться без сладкого! Сделай ТЫЦ!
*

ChaosHead

  • Гуру
  • 5242
  • 451 / 13
Отлично заработал вариант art-apple
*

olf

  • Захожу иногда
  • 360
  • 5 / 1
Это всё хорошо, но товар-то выводится без сортировки по подкатегориям. А как сделать вывод в виде дерева?

Категория
    подкатегория 1
         -товар1
         -товар2
         ...
    подкатегория 2
         -товар1
         -товар2
         ...
    подкатегория 3
         -товар1
         -товар2
         ...
*

rtsasuk

  • Новичок
  • 1
  • 0 / 0
Супер решения! Пользовался им до того времени пока не столкнулся с проблемой дублей для SEO
эта штука делает дубли товары выходит можна попасть и по категории и по подкатегории!
Скажите это верное мнения? Может кто то сталкивался с этим?
*

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

  • Давно я тут
  • 837
  • 35 / 0
Вы не искали уже сделанное решение для дерева по форумам?

На счет дублей - как обстоят в "дублях" дело с атрибутом canonical?
*

plitochnik77

  • Новичок
  • 2
  • 1 / 0
Это всё хорошо, но товар-то выводится без сортировки по подкатегориям. А как сделать вывод в виде дерева?

Категория
    подкатегория 1
         -товар1
         -товар2
         ...
    подкатегория 2
         -товар1
         -товар2
         ...
    подкатегория 3
         -товар1
         -товар2
         ...

Есть решение на сайте:http://kitoraga.com/blog/vyvodim-tovary-v-virtuemart-2-iz-kategori-i-podkategorij-odnim-spiskom.html
Спасибо автору! Virt 2.0.18a работает. Но есть необходимость вывести под названием категории ее картинку и описание. Если кто знает-Напишите.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как вывести слово От рядом с ценой?

Автор art22

Ответов: 4
Просмотров: 1565
Последний ответ 07.04.2024, 11:19:12
от art22
Как сделать товары в 2 колонки в моб версии?

Автор art22

Ответов: 4
Просмотров: 2530
Последний ответ 06.12.2022, 11:42:56
от art22
Как пересохранить все товары?

Автор stydent

Ответов: 1
Просмотров: 3058
Последний ответ 30.03.2022, 10:38:06
от itpremium
mod_virtuemart_product - как скрыть товары, которых нет в наличии?

Автор alexfom_16

Ответов: 40
Просмотров: 6271
Последний ответ 11.10.2021, 17:50:38
от hmr
Приоритетный Itemid для формирования ссылок на товары/категории

Автор rsn

Ответов: 2
Просмотров: 783
Последний ответ 10.03.2020, 08:21:45
от rsn