NiceSEO’s VKontakte Crossposter

Бесплатный плагин для Wordpress для автоматического кросспостинга в паблик ВКонтакте

Как сделать в VirtueMart поиск по размерам в browsepage.

Здравствуйте, читатели блога NiceSEO.ru. Представляю вам решение пробелмы – поиск в Virtuemart по размерам! Данной инструкции нет ни в рунете, ни в интернете, только неотвеченные темы на форумах, а также неотвеченные проекты на фриланс-сайтах.

Всё не совсем просто, но реально даже для новичка, умеющего изменять файлы движка Joomla. 🙂

Итак, поехали… Данная инструкция писалась не просто так, а для проекта 69level.com, где вы и можете посмотреть фильтр по размерам в категориях VirtueMart в действии. (Search by attributes in browse page in Virtuemart).

Нужно зайти в папку

Затем открыть там файл browse_orderbyform.tpl.php

И перед следующим кодом:

Написать строчку

Поздравляю, мы сделали следующее: (картинка 1)

Следующий шаг – сделать так, чтобы поиск по размерам собственно работал.
Для этого открываем файл /administrator/components/com_virtuemart/html/shop_browse_queries.php

В самом начале, 3 строкой пишем:

Затем добавляем строки

перед строками

Затем после

добавляем

Затем вместо

пишем

Затем вместо

пишем

Затем перед

пишем

И предпоследний штрих:
Открываем файл /administrator/components/com_virtuemart/classes/pageNavigation.class.php

Перед строками

А после

пишем

перед

пишем

Ну и напоследок выкладываю готовый файл browse_filterbyra.tpl, который нужно положить в /components/com_virtuemart/themes/default/templates/browse/includes:

Благодарю за внимание, вы прочитали первую мою серьезную статью такого объёма! Если что-то не получается, пишите в камменты.

Статью подготовил linur, Специально для NiceSEO.ru, 03 июля 2011 года. При копировании не забывайте о ссылке на источник.
  • Pingback: NFC в социальной сети Google+

  • Vbyec

    Доброго времени суток.
    “Написать строчку
    echo $this->fetch( ‘browse/includes/browse_filterbyra.tpl.php’);
    Поздравляю, мы сделали следующее: (картинка 1)”

    Откуда происходит загрузка значений размеров? Где в виртумарте нужно ее прописать( и под какими именами) чтобы она прошла успешно? Насколько понимаю берутся они вот отсюда:
    “foreach ($res as $manufacturer) {
    $selected = ”;
    if( @$_REQUEST[‘razmer_id’] == $manufacturer->attribute_value ) {
    $selected = ‘selected=”selected”‘;
    }
    echo “attribute_value .”” $selected>”. $manufacturer->attribute_value .”n”;

    } ”
    но знаний/опыта не хватает чтобы понять куда/что в виртумарте прописать 🙂

  • Аноним

    Размеры – это дочерние товары, у которых указан attribute (опции)

  • Дмитрий Алисов

    Спасибо за ответ, но с этим пока не сталкивался и пока все равно не понятно 🙁
    Если я правильно понял как создавать дочерние товары, то поулчается следующая картина( http://clip2net.com/s/15yIz ). В каком же месте я прописываю что такое razmer_id? Если есть возможность, то просьба написать в скайп( minus.ru). Статья хороша я но мне как новичку к сожалению не до конца понятная .

  • Vahe258

    Как Регулировать размеры формы оплаты
    добрый день! ребят нужна помощь срочно! Во время оформлении заказа на шаге (Выбора способ оплаты) Форма способа оплаты выходит за рамки сайта! откуда его можно исправить!? Помогите плз! долго копался не смог решить проблему!

    • Аноним

      изменить в нужном месте параметр width=”100%” у <table на меньшее количество процентов), в файле /administrator/components/com_virtuemart/html/checkout.index.php

  • Vahe258

    Рубят! такой вопрос! В шаге выбора способа доставки при выборе способ(Наложанний платеж) как сделать что бы после выбора этого способа доставки онлайн оплату пропустить!?

    • Аноним

      сделать зависимость доставки и оплаты) в инете есть хорошее готовое решение, поищи)

  • kry

    linur, очень много непонятностей в данном уроке. У меня абсолютно ничего не выходит, работаю c VM 1.1.9.
    Вопросы по порядку:
    ———–№1———–

    И перед следующим кодом:

    <input type="hidden" name="Itemid" value="” />

    <input type="hidden" name="category_id" value="” />

    Написать строчку

    echo $this->fetch( ‘browse/includes/browse_filterbyra.tpl.php’);

    Куда именно вставлять, если мой кусок кода в файле browse_orderbyform.tpl.php выглядит так:

    fetch( ‘browse/includes/browse_orderbyfields.tpl.php’);

    // This is the toggle button for Descending / Ascending Order
    // It is wrapped into a JS function with a noscript area to keep it accessible
    echo mm_writeWithJS(‘ _(‘PHPSHOP_PARAMETER_SEARCH_’.$asc_desc[0].’ENDING_ORDER’) .'” title=”‘.$VM_LANG->_(‘PHPSHOP_PARAMETER_SEARCH_’.$asc_desc[0].’ENDING_ORDER’) .'” width=”12″ height=”12″ />‘,

    ‘.$VM_LANG->_(‘PHPSHOP_PARAMETER_SEARCH_DESCENDING_ORDER’).’
    ‘.$VM_LANG->_(‘PHPSHOP_PARAMETER_SEARCH_ASCENDING_ORDER’).’

    _(‘PHPSHOP_SUBMIT’).'” />’);
    echo $this->fetch( ‘browse/includes/browse_filterbyra.tpl.php’);}
    ?>
    <input type="hidden" name="Itemid" value="” />

    <input type="hidden" name="category_id" value="” />
    <input type="hidden" name="manufacturer_id" value="” />
    <input type="hidden" name="keyword" value="” />
    <input type="hidden" name="keyword1" value="” />
    <input type="hidden" name="keyword2" value="” />
    ———№2————-

    Следующий шаг — сделать так, чтобы поиск по размерам собственно работал.
    Для этого открываем файл /administrator/components/com_virtuemart/html/shop_browse_queries.php
    Затем добавляем строки

    if ($razmer_id) {$fieldnames = ‘jos_vm_product_attribute.attribute_value,’;}

    перед строками

    $fieldnames .= “product_name,products_per_row,category_browsepage,category_flypage,#__{vm}_category.category_id,

    У меня в этом файле есть только строки:
    $fieldnames = “#__{vm}_product.product_id, product_name, products_per_row, category_browsepage, category_flypage, #__{vm}_category.category_id, product_full_image, product_thumb_image, product_s_desc, product_parent_id, product_publish, product_in_stock, product_sku, product_dopopisanie, product_newpole_1, product_url, product_weight, product_weight_uom, product_length, product_width, product_height, product_lwh_uom, product_available_date, product_availability, #__{vm}_product.mdate, #__{vm}_product.cdate“;

    ———–№3————-

    Затем вместо

    $where_clause[] = “(#__{vm}_product_category_xref.product_id=#__{vm}_product.product_id OR #__{vm}_product_category_xref.product_id=#__{vm}_product.product_parent_id)”;
    $where_clause[] = “#__{vm}_product_category_xref.category_id=#__{vm}_category.category_id“;

    пишем

    if ($razmer_id) {
    $where_clause[] = “#__{vm}_product_category_xref.product_id=#__{vm}_product.product_parent_id“;
    } else {
    $where_clause[] = “(#__{vm}_product_category_xref.product_id=#__{vm}_product.product_id OR #__{vm}_product_category_xref.product_id=#__{vm}_product.product_parent_id)”;
    $where_clause[] = “#__{vm}_product_category_xref.category_id=#__{vm}_category.category_id“;}

    У меня в этом файле есть только кусок кода:
    if($tmpdb->f(‘parentcnt’)>0) {
    $where_clause[] = “(#__{vm}_product_category_xref.product_id=#__{vm}_product.product_id OR #__{vm}_product_category_xref.product_id=#__{vm}_product.product_parent_id)”;
    } else {
    $where_clause[] = “#__{vm}_product_category_xref.product_id=#__{vm}_product.product_id“;
    }
    $where_clause[] = “#__{vm}_product_category_xref.category_id=#__{vm}_category.category_id“;

    Как же произвести замену?

    ————№4————-

    Затем вместо

    $where_clause[] = “product_parent_id=0 “;

    пишем

    if ($razmer_id) { } else {
    // when someone is searching, we also show child products (product_parent_id != 0), but that’s not the case here
    $where_clause[] = “product_parent_id=0 “;
    }

    У меня этот кусо кода выглядит так:
    if( empty( $keyword ) ) {
    // when someone is searching, we also show child products (product_parent_id != 0), but that’s not the case here
    $where_clause[] = “product_parent_id=0 “;
    }
    Что делать, менять его весь?

    ————№5————-

    И предпоследний штрих:
    Открываем файл /administrator/components/com_virtuemart/classes/pageNavigation.class.php

    Перед строками

    $html .= “nlimit.’&limitstart=’.$page.’&linur=22′).”” class=”pagenav”>$i“;
    пишем if ($razmer_id) {$link = $link.’&razmer_id=’.$razmer_id;}

    У меня есть только такой кусок кода (у тебя в коде откуда-то ‘&linur=22’).)
    if( $link != ”) {
    $html .= “nlimit.’&limitstart=’.$page).”” class=”pagenav”>$i“;
    }
    Мне писать if ($razmer_id) {$link = $link.’&razmer_id=’.$razmer_id;} перед ним?

    ————№6————

    А после

    $html = ”;

    пишем

    if($_REQUEST[‘razmer_id’]) {$razmer_id = $_REQUEST[‘razmer_id’];if (get_magic_quotes_gpc()) { $razmer_id = stripslashes($razmer_id); } if (!is_numeric($razmer_id)) { $razmer_id = htmlspecialchars(mysql_real_escape_string($razmer_id));} }

    У меня нет строки $html = ”;
    есть только $html .= “n”; в этом куске кода:
    } else {
    $html .= “n”.$VM_LANG->_(‘PN_NEXT’).” »”;
    $html .= “n”.$VM_LANG->_(‘PN_END’).” »»”;
    }
    $html .= “n”;
    return $html;
    }

    Что мне делать в этом случае?

    ————-№7————–

    перед

    $html .= “nlimit.’&limitstart=0′).”” class=”pagenav” title=””.$VM_LANG->_(‘PN_START’).””>«« “.$VM_LANG->_(‘PN_START’).”“;
    $html .= “nlimit.’&limitstart=’.$page).”” class=”pagenav” title=””.$VM_LANG->_(‘PN_PREVIOUS’).””>« “.$VM_LANG->_(‘PN_PREVIOUS’).”“;

    пишем
    if ($razmer_id) {$link .= $link.’&razmer_id=’.$razmer_id;}

    Мой кусок кода выглядит так:
    if( $link != ”) {
    $html .= “nlimit.’&limitstart=0′).”” class=”pagenav” title=””.$VM_LANG->_(‘PN_START’).””>«« “.$VM_LANG->_(‘PN_START’).”“;
    $html .= “nlimit.’&limitstart=’.$page).”” class=”pagenav” title=””.$VM_LANG->_(‘PN_PREVIOUS’).””>« “.$VM_LANG->_(‘PN_PREVIOUS’).”“;
    }
    Что делать менять мое if( $link != ”) { на твое if ($razmer_id) {$link .= $link.’&razmer_id=’.$razmer_id;}

    ВОТ ТАКАЯ КУЧА ВОПРОСОВ. LINUR, МОГУ СКИНУТЬ МОИ ЧИСТЫЕ РЕДАКТИРУЕМЫЕ ФАЙЛЫ.

    • http://www.niceseo.ru/ob-avtore linur

      да, скинь на niceseo@niceseo.ru, в каментах неудобно такой обьем читать, подредактирую.

  • kry

    К сожалению, у меня не работает ;(

  • troevodin

    Ребят, помочь сможете, можно рассчитывать?

    • http://www.niceseo.ru/ob-avtore linur

      Да, пиши что непонятно. Если что, могу на платной основе сделать

  • http://www.facebook.com/serikof Вова Serikov

    не нашел строку $html = ”; возможно более подробно объяснить более подробно? vm 1.1.9

    • http://www.niceseo.ru/ob-avtore linur

      Кинь свой файл на niceseo@niceseo.ru, гляну, скажу куда постить. Извиняюсь за медлительность, проектов пока много, отвечаю как успеваю))

  • http://www.facebook.com/serikof Вова Serikov

    так и не смог разобраться. А жаль:(

  • Вольф

    Задумка хорошая, но урок мутный…

  • Вольф

    Выложите пожалуйста shop_browse_queries.php и
    pageNavigation.class.php с Вашими правками, не у всех они одинаковые.

Я также состою в:
Лучшая веб-студия!
Яндекс.Метрика
© 2011-2017 NiceSeo.ru