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

Sulpher

  • Живу я здесь
  • 2112
  • 401 / 16
  • Шаблоны и расширения Joomla
Для реализации сорировки товара по производителям, необходимо внести ряд модификаций.

1. Открываем файл administrator/components/com_virtuemart/html/shop.browse.php:

найти строку 121:
Код: php
		$db->query( "SELECT manufacturer_id, mf_name, mf_desc FROM #__{vm}_manufacturer WHERE manufacturer_id='$manufacturer_id'");
и заменить на:

Код: php
		$db->query( "SELECT manufacturer_id, mf_name FROM #__{vm}_manufacturer WHERE manufacturer_id='$manufacturer_id'");

Далее, в этом же файле найти кусок кода: (172 строка)

Код: php
	if ( $num_rows > 1 && @$_REQUEST['output'] != "pdf") {
if ( $num_rows > 5 ) { // simplified logic
$search_string = $mm_action_url."index.php?option=com_virtuemart&Itemid=$Itemid&category_id=$category_id&page=$modulename.browse";
$search_string .= empty($manufacturer_id)? '' : "&manufacturer_id=$manufacturer_id";
$search_string .= empty($keyword)? '' : '&keyword='.urlencode( $keyword );
if (!empty($keyword1)) {
$search_string.="&keyword1=".urlencode($keyword1);
$search_string.="&search_category=".urlencode($search_category);
$search_string.="&search_limiter=$search_limiter";
if (!empty($keyword2)) {
$search_string.="&keyword2=".urlencode($keyword2);
$search_string.="&search_op=".urlencode($search_op);
}
}
и заменить на:

Код: php
	if ( $num_rows > 1 && @$_REQUEST['output'] != "pdf") {
if ( $num_rows > $limit  || $num_rows > 5 ) {
$search_string = $mm_action_url."index.php?option=com_virtuemart&page=$modulename.browse&category_id=$category_id&keyword=".urlencode( $keyword )."&manufacturer_id=$manufacturer_id&Itemid=$Itemid";
$search_string .= !empty($orderby)? "&orderby=".urlencode($orderby) : "";
if (!empty($keyword1)) {
$search_string.="&keyword1=".urlencode($keyword1);
$search_string.="&search_category=$search_category";
$search_string.="&search_limiter=$search_limiter";
if (!empty($keyword2)) {
$search_string.="&keyword2=".urlencode($keyword2);
$search_string.="&search_op=$search_op";
}
}

Строку 187:
Код: php
					if (substr($key, 0,13) == "product_type_"){

заменить на:
Код: php
			if (substr($key, 0,13) == "product_type_" || substr($key, 0,5) == "price"){

Далее, после строки 232:
Код: php
		$tpl->set( 'orderby_form', $orderby_form );


Добавить такой код:
Код: php
		//CHANGES FOR MANUFACTURER FILTER
$orderby_form = $tpl->fetch( 'browse/includes/browse_filterbymf.tpl.php' );
$tpl->set( 'filterby_mf', $orderby_form );
//END CHANGES FOR MANUFACTURER FILTER

После строки 235:
Код: php
    	$tpl->set( 'orderby_form', '' );

Добавить вот это:
Код: php
	//CHANGES FOR MANUFACTURER FILTER
$tpl->set( 'filterby_mf', '' );
//END CHANGES FOR MANUFACTURER FILTER

2. Открываем файл administrator/components/com_virtuemart/html/shop_browse_queries.php:


Строки 22-25:
Код: php
// Descending or Ascending Order? possible values: [ASC|DESC]
$DescOrderBy = strtoupper($vm_mainframe->getUserStateFromRequest( "browse{$keyword}{$category_id}{$manufacturer_id}DescOrderBy", 'DescOrderBy', "ASC" ));
$DescOrderBy == 'ASC' ? 'ASC' : 'DESC';

заменить на:
Код: php
// Descending or Ascending Order? possible values: [ASC|DESC]
$DescOrderBy = $vmInputFilter->safeSQL( $vm_mainframe->getUserStateFromRequest( "browse{$keyword}{$category_id}{$manufacturer_id}DescOrderBy", 'DescOrderBy', "ASC" ) );

строки 63-67:
Код: php
// Filter Products by Category
if( $category_id ) {
if( !empty( $search_this_category ) && (!empty( $keyword ) || !empty( $manufacturer_id ) )) {
$where_clause[] = "`#__{vm}_product_category_xref`.`category_id`=".$category_id;
} elseif( empty( $keyword ) && empty( $manufacturer_id )) {

заменить на:

Код: php
// Filter Products by Category
if( $category_id ) {
if( !empty( $search_this_category ) && (!empty( $keyword ) || !empty( $manufacturer_id ) )) {
$where_clause[] = "#__{vm}_product_category_xref`.`category_id`=".$category_id;
//MODIFIED FOR FILTER MANUFACTURER
//} elseif( empty( $keyword ) && empty( $manufacturer_id )) {
} elseif( empty( $keyword )) {
//END MODIFIED FOR FILTER MANUFACTURER

После строки 299 дописать такой код:
Код: php
$count  = "SELECT $count_name FROM ($table_names) ";
и перед
Код: php
if( $perm->is_registered_customer($auth['user_id']) ) {	

Добавить:
Код: php
//DEBUG x FILTER MANUFACTURER
//echo '<br />'.'--------------------'.'<br />';
//echo 'list='.$list.'<br />';
//echo '<br />'.'--------------------'.'<br />';
//echo 'count='.$count.'<br />';
//$where_clause[] = "`#__{vm}_product_category_xref`.`category_id`=16 ";

Строку 309:
Код: php
$where_clause[] = "`product_parent_id`=0 ";

заменить на:

Код: php
$where_clause[] = "((`product_parent_id`='0') OR (`product_parent_id`='')) ";

После строки 321:
Код: php
$q .= "\n ORDER BY $orderbyField $DescOrderBy";

Вставить:
Код: php
//DEBUG x FILTER MANUFACTURER
//echo '<br />'.'--------------------'.'<br />';
//echo 'q='.$q.'<br />';

3. Открываем components/com_virtuemart/themes/default/templates/browse/includes/browse_orderbyform.tpl:
после строк 18-19:
Код: php
        <input class="button" type="submit" value="'.$VM_LANG->_('PHPSHOP_SUBMIT').'" />');
}

добавляем:
Код: php
    //CHANGES FOR FILTER MANUFACTURER
    echo $this->fetch( 'browse/includes/browse_filterbymf.tpl.php');
    //END CHANGES FOR FILTER MANUFACTURER

Строку 25:
Код: php
    <input type="hidden" name="manufacturer_id" value="<?php echo $manufacturer_id ?>" />

Заменяем на строки:
Код: php
    <!--  CHANGES FOR FILTER MANUFACTURER
        <input type="hidden" name="manufacturer_id" value="<?php echo $manufacturer_id ?>" />
        -->
    <input type="hidden" name="limitstart" value="0" />

Находим строку 32:
Код: php
	echo '<input type="hidden" name="product_type_id" value="'.$product_type_id.'" />'; 
и закомментируем ее.

находим строки 36-55:
Код: php
if( $show_top_navigation ) {
?>
&nbsp;&nbsp;&nbsp;&nbsp;<?php echo $VM_LANG->_('PN_DISPLAY_NR')?>&nbsp;&nbsp;

<?php $pagenav->writeLimitBox(); ?>
<noscript><input type="submit" value="<?php echo $VM_LANG->_('PHPSHOP_SUBMIT')?>" /></noscript>

    <!-- PAGE NAVIGATION AT THE TOP -->
    <br/ >
    <div style="text-align:center;"><?php
     $pagenav->writePagesLinks( $search_string );
     echo '<br />';
     $pagenav->writePagesCounter();
      ?>
    </div>
    
<?php

}
?>

и заменяем на:
Код: php
//if( $show_top_navigation ) {
?>
<!-- <form action="<?php echo $mm_action_url."index.php" ?>" method="get" name="order">
&nbsp;&nbsp;&nbsp;&nbsp;<?php echo $VM_LANG->_('PN_DISPLAY_NR')?>&nbsp;&nbsp;

<?php $pagenav->writeLimitBox( $search_string ); ?>
<noscript><input type="submit" value="<?php echo $VM_LANG->_('PHPSHOP_SUBMIT')?>" /></noscript>
-->  
    <!-- PAGE NAVIGATION AT THE TOP -->
<!--    <br />
    <div style="text-align:center;"><?php
     $pagenav->writePagesLinks( $search_string );
     echo '<br />';
     $pagenav->writePagesCounter();
      ?>
    </div>
-->    
<?php

// }
?>

4. Создаём файл components/com_virtuemart/themes/default/templates/browse/includes/browse_filterbymf.tpl.php (файл приложен в аттаче)

Готово.

P.S. Это пока черновик, статью писал опираясь на сравнение хаков вот этого решения. Опробую на сайте вечером.

[вложение удалено Администратором]
*

morph

  • Давно я тут
  • 923
  • 105 / 0
 :o
скока много кода...что в конце концов получиться должно?
теория http://forum.virtuemart.ru/viewtopic.php?f=2&t=10 и готовое файло http://joomlaforum.ru/index.php/topic,54162.msg363639.html#msg363639 для сортировки  по производителям в категории все также как в хаке для 1.0.*....или я недогнал?

*

matiass

  • Осваиваюсь на форуме
  • 32
  • 0 / 0
Работает, не подскажешь как вывести не выпадающим меню, а ссылками всех брендов?  Или в выпадающем меню слово выбрать изменить на "Выбрать производителя"
« Последнее редактирование: 25.06.2009, 14:02:11 от matiass »
*

vitaliy.balatskiy

  • Захожу иногда
  • 92
  • 5 / 0

Я так понимаю это сортировка во фронтенде! А меня интересует, как бы добавить сортировку в админке VM , а то товаров много, и когда хочется отсортировать по производителях. такой облом настает! Помогите, люди добрые!
*

abbat_gro

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
народ у всех этот хак помог?
а то у меня только список производителя в дропдаун меню становиля меньше в какой либо категории, но при нажантии на производителя, выкидывает все товары из разных категорий... вроде исправлял код тщательно...
*

abbat_gro

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Я так понимаю это сортировка во фронтенде! А меня интересует, как бы добавить сортировку в админке VM , а то товаров много, и когда хочется отсортировать по производителях. такой облом настает! Помогите, люди добрые!
меня это дело тоже очень волнует... есть ли готовые решения?
*

AlexeyK

  • Осваиваюсь на форуме
  • 34
  • 1 / 0
А подскажите как к этому еще организовать сортировку по типам товара?
*

morph

  • Давно я тут
  • 923
  • 105 / 0
*

Luchik

  • Захожу иногда
  • 57
  • 6 / 0
Крута. Работает! :)
Спасибо.

+ тебе
« Последнее редактирование: 05.11.2009, 09:39:59 от Luchik »
*

Sulpher

  • Живу я здесь
  • 2112
  • 401 / 16
  • Шаблоны и расширения Joomla
Вот готовый хак для VirtueMart 1.1.4. Распаковать и записать поверх. (на ваш страх и риск - если ранее были внесены модификации в данные файлы, то они будут затёрты)

[вложение удалено Администратором]
*

igoryk

  • Захожу иногда
  • 183
  • 11 / 0
Вот готовый хак для VirtueMart 1.1.4. Распаковать и записать поверх. (на ваш страх и риск - если ранее были внесены модификации в данные файлы, то они будут затёрты)

Есть баг - если в категории один товар данного производителя. то форма сортировки исчезает :(

Как решить?
*

morph

  • Давно я тут
  • 923
  • 105 / 0
Есть баг - если в категории один товар данного производителя. то форма сортировки исчезает :(

Как решить?
это не баг а условие на вывод шаблона сортировки (что сортировать если товаров 1 или 2 ?).смотри shop.browse.php
*

kpk17

  • Захожу иногда
  • 257
  • 2 / 0

а не подскажете как сделать чтобы этот список выводился автоматически на всю страницу, чтобы сразу шло разделение по производителям и товарам

acer
товар 1
товар2

asus
товар3
товар4

и так далее

сорри за множественность темы
*

RedFlash

  • Осваиваюсь на форуме
  • 29
  • 0 / 0
Спасибо за решение!
Один вопрос - где можно изменить слово "Выбор" , которое по умолчанию в дроп даун списке выводится на свое, например "производитель"
*

ws_green

  • Захожу иногда
  • 71
  • 1 / 0
Работает, не подскажешь как вывести не выпадающим меню, а ссылками всех брендов?  Или в выпадающем меню слово выбрать изменить на "Выбрать производителя"

Кому интересно, чтобы вывести фильтр производителей не в выпадающем списке, а в виде ссылок, открываем файл browse_filterbymf.tpl
и ищем строки

Код
			foreach ($res as $manufacturer) { 
$selected = '';
if( @$_REQUEST['manufacturer_id'] == $manufacturer->manufacturer_id ) {
$selected = 'selected="selected"';     
}
echo "<option value=\"".$manufacturer->manufacturer_id ."\" $selected>". $manufacturer->mf_name ."</option>\n";

}

заменяем на
Код
			foreach ($res as $manufacturer) { 

echo '<a href="index.php?DescOrderBy=ASC&manufacturer_id=' . $manufacturer->manufacturer_id . '&amp;option=com_virtuemart&amp;Itemid='. $Itemid . '&amp;category_id=' . $category_id . '&amp;page=shop.browse">' . $manufacturer->mf_name . '</a><br />';


}

Столкнулся с проблемой. Нужна сортировка внутри списка производителей по категориям. Возможно ли это сделать?
*

dinox

  • Захожу иногда
  • 235
  • 42 / 0
  • Чего-то здесь не хватает...
Кому интересно, чтобы вывести фильтр производителей не в выпадающем списке, а в виде ссылок, открываем файл browse_filterbymf.tpl
и ищем строки
Ты забыл написать что надо убрать все что относится к форме. Ато я так сразу поставил, а оно не работет.

Спасибо за суперскую фильтрацию, мне надо была такая штука для модуля производителей я туда ее вставил и теперь работает точно так как надо! А отсюда убрал из-за неудобного размещения

Столкнулся с проблемой. Нужна сортировка внутри списка производителей по категориям. Возможно ли это сделать?
Мне такое вот тоже надо, буду думать как осуществить если придумаю напишу сюда ^-^
« Последнее редактирование: 08.03.2010, 15:48:42 от dinox »
Дай каждому дню шанс стать самым прекрасным в твоей жизни!
Ждем когда microsoft.com перейдет на Joomla!
*

skyscraper

  • Захожу иногда
  • 252
  • 47 / 2
чтобы менюшка выводилось если 1 товар делаем в shop.browse.php так:


if ( $num_rows && @$_REQUEST['output'] != "pdf") {
*

broot

  • Захожу иногда
  • 78
  • 1 / 0
Ты забыл написать что надо убрать все что относится к форме. Ато я так сразу поставил, а оно не работет.

Спасибо за суперскую фильтрацию, мне надо была такая штука для модуля производителей я туда ее вставил и теперь работает точно так как надо! А отсюда убрал из-за неудобного размещения
Мне такое вот тоже надо, буду думать как осуществить если придумаю напишу сюда ^-^

можете боле детально расписать чтоб фильтр біл сылками и в одну строчку, а то почемуто получаеться в столбик-))
*

sett

  • Захожу иногда
  • 54
  • 0 / 0
блин, у меня почему-то в опере отображается "Показать по:", а в мозиле и эксплорере пропала эта штука... в чем может быть дело??
*

sett

  • Захожу иногда
  • 54
  • 0 / 0
проблема с чего началась, в категории - 6 товаров, было отображение на 5 товаров на страницу, сделал отображение на 20, показать пропала и больше не появляется ни в одной категории!
самое интересное, если сделать шаг назад и заново сделать отображение на 5 товаров на страницу, то показать появляется на всех других страницах.. как-будто записывает куда-то... SEF не стоит
« Последнее редактирование: 05.04.2010, 01:17:41 от sett »
*

linur

  • Осваиваюсь на форуме
  • 10
  • 1 / 0
Обычно я не пишу подобные посты, но сейчас не могу не поблагодарить. Спасибо большое за решение, установилось сразу и без косяков!
*

shaiden

  • Новичок
  • 5
  • 0 / 0
Честно признаться - поменял файлы вручную - ноль эффекта ( применялось решение из аттача FilterManufactorer_VM_1.1.4.zip)
*

neutomim30

  • Захожу иногда
  • 86
  • 0 / 0
ничего не изменилось после того как закинул на сайт файлы..в чем же может быть дело? новое поле даже не появлилось
*

neutomim30

  • Захожу иногда
  • 86
  • 0 / 0
то есть хак у меня почему то не работает - Вирту 1.1.4
*

MR.TOR

  • Новичок
  • 8
  • 0 / 0
Хак отличный, СПАСИБО!
У меня вот какая проблема возникла. До установки Artio JoomSEF все работало. После, сортировка по производителю работает через раз. Нужно чтоб выводило (index.php?orderby=product_list&DescOrderBy=ASC&manufacturer_id=3&Itemid=2&option=com_virtuemart&page=shop.browse&category_id=1&limitstart=0&keyword=&keyword1=&keyword2=)
а выводит
(glavnaya/svi.html?limitstart=0&amp;orderby=product_price&amp;DescOrderBy=ASC&amp;keyword=&amp;keyword1=&amp;keyword2=)
Может что нужно в хаке изменить, или лучше в Artio правило создать(как содать правило?), если кто знает поделитесь. Буду благодарен.
*

ArtTheft

  • Осваиваюсь на форуме
  • 23
  • 0 / 0
Хм...подскажите как добавить сортировку по всем производителям..
*

styan

  • Новичок
  • 6
  • 0 / 0
Модератору огромное спасибо за хак! Фильтр по производителю работает на ура!
Еще бы посмотреть где-нить как сделать такой же фильтр по типу товара... Народ, может кто подскажет?
*

Timofey

  • Осваиваюсь на форуме
  • 44
  • 0 / 0
Спасибо большое всё работает просто отлично на VM 1.1.4 толко подскажите пожалуйста как можно изменить надпись Select Manufacturer
А всё нашёл сам это в browse_filterbymf.tpl.php ещё раз спасибо.
« Последнее редактирование: 25.07.2010, 11:50:38 от Timofey »
*

BlackinWhite

  • Захожу иногда
  • 85
  • 0 / 0
Все сделал. Только не пойму почему в Select Manufacturer пусто, кроме "Выбрать" ничего нет, хотя Производители созданы, Товары закриплены за производителями.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

VirtueMart - SMS уведомления о сделаном заказе.

Автор bork

Ответов: 42
Просмотров: 21830
Последний ответ 26.07.2021, 22:11:25
от Oleg91
Отчеты и статистика для VirtueMart

Автор 4kict

Ответов: 25
Просмотров: 9884
Последний ответ 14.01.2021, 00:09:53
от gartes
Сортировка товаров по дате поступления

Автор coob

Ответов: 2
Просмотров: 2227
Последний ответ 21.06.2018, 08:40:05
от kungurskiy
IceVmCart - новый бесплатный модуль корзины для VirtueMart

Автор Grig2009

Ответов: 105
Просмотров: 51698
Последний ответ 05.02.2017, 11:44:02
от Super_Panda
Модуль недавно просмотренные товары для VirtueMart 1.1.X

Автор aleks_yug

Ответов: 97
Просмотров: 24909
Последний ответ 25.10.2016, 15:03:07
от Igoritaly