Новости Joomla

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

jumlancerCom

  • Захожу иногда
  • 52
  • 2 / 1
Предлагаю публиковать здесь подборку полезных доработок стандартных функций Ксенмарта (4.1.1). Начну первым.

РАСШИРЕНИЕ ПОИСКА ПО КАТАЛОГУ И СОРТИРОВКИ ТОВАРОВ

Стандартный поиск по каталогу ищет лишь по названиям товаров и их описаниям. А среди ссылок для сортировки есть лишь price и popularity. Ниже публикую решение обоих проблем. Во-первых, появляется возможность искать по каталогу не только по названиям товаров и описаниям, а также по производителям, свойствам и мета-тегу keywords (помню что поисковики не учитывают, но можно использовать в качестве тегов, люди ведь могут искать по каталогу один и тот же товар по разным поисковым запросам). Во-вторых, появляется возможность вывести ссылки для сортировки не только по цене и популярности, но и по другим полям например по производителю и какому то одному свойству. Не утверждаю что предложенный мною "костыль" это самое простое и самое лучшее решение, поэтому другие варианты приветствуются!

Итак убиваем двух зайцев правкой одной функции getListQuery(). Открываем файл components/com_ksenmart/models/catalog.php, находим строку 460
Код
$where   = $this->getFilterDefaultParams();
и заменяем на
Код
$searchtext = $this->_title;
if(empty($searchtext)) {
$where = $this->getFilterDefaultParams();
} else {
$where = "(p.title LIKE '%$searchtext%' OR p.content LIKE '%$searchtext%' OR p.metakeywords LIKE '%$searchtext%' OR m.title LIKE '%$searchtext%' OR b.text LIKE '%$searchtext%')";
}
Теперь меняем запрос к базе, который начинался со строки 468
Код
$query
->select('p.id')
...
на
Код
$jinput = JFactory::getApplication()->input;
$letter = 'p.';
$order_type = $jinput->get('order_type'); // $order_type з "шапки" здесь не работает
$orderFieldSuffix = '';
$orderField = $this->getState('list.ordering');
if(!empty($order_type)) {
if($order_type != 'price' && $order_type != 'ordering' && $order_type != 'title') { // ordering нужен для работы фильтра
$letter = '';
$andForProperty = '';
if($order_type != 'manufacturer_title') { // если свойство
$andForProperty = ' AND property_id='.$order_type;
$orderField = 'text';
if($order_type != 1) { // здесь указываем ID свойства, по которому нужно сортировать как по числу
$orderFieldSuffix = '+0';
}
}
}
}
$query
->select('p.id, m.title as manufacturer_title')
->from('#__ksenmart_products AS p')
//->leftjoin("#__ksenmart_files AS f ON p.id=f.owner_id AND f.owner_type=".$this->_db->Quote('product'))
->leftjoin("#__ksenmart_manufacturers AS m ON m.id=p.manufacturer")
->leftjoin("#__ksenmart_product_properties_values AS b ON b.product_id=p.id".$andForProperty)
->where($where)
->order($letter.$orderField.$orderFieldSuffix.' '.$this->getState('list.direction'))
->group('p.id')
;

Тепер чтобы вывести на сайте ссылки для сортировки копируем файл components/com_ksenmart/views/catalog/tmpl/category.php и вставляем в папку templates/[ваш активный шаблон Joomla]/html/com_ksenmart/catalog/ (создаем данную папку если ее пока нету). Открываем копию т.е. templates/[ваш активный шаблон Joomla]/html/com_ksenmart/catalog/category.php и вместо строки 12
Код
<?php echo $this->loadTemplate('sortlinks', 'default'); ?>
пишем
Код
<?php
$curURL = JURI::current();
$lastChar = substr($curURL, -1);
if($lastChar == '/') {
$curURL = substr($curURL, 0, -1);
}
if(strpos($curURL,'order_type=')!== false) {
$urlParts = explode('order_type=', $curURL);
$curURL = $urlParts[0];
$curURL = substr($curURL, 0, -1);
}
?>
Сортировать по:
<div>
<span>названию товару</span>
<ul>
<li><a rel="nofollow" href="<?php echo $curURL; ?>/order_type=title/order_dir=asc">А->Я</a></li>
<li>/</li>
<li><a rel="nofollow" href="<?php echo $curURL; ?>/order_type=title/order_dir=desc">Я->А</a></li>
</ul>
</div>
<div>
<span>производителю</span>
<ul>
<li><a rel="nofollow" href="<?php echo $curURL; ?>/order_type=manufacturer_title/order_dir=asc">А->Я</a></li>
<li>/</li>
<li><a rel="nofollow" href="<?php echo $curURL; ?>/order_type=manufacturer_title/order_dir=desc">Я->А</a></li>
</ul>
</div>
<div>
<span>цене</span>
<ul>
<li><a rel="nofollow" href="<?php echo $curURL; ?>/order_type=price/order_dir=asc">А->Я</a></li>
<li>/</li>
<li><a rel="nofollow" href="<?php echo $curURL; ?>/order_type=price/order_dir=desc">Я->А</a></li>
</ul>
</div>
<div>
<span>[свойству с ID 1]</span>
<ul>
<li><a rel="nofollow" href="<?php echo $curURL; ?>/order_type=1/order_dir=asc">от меньших</a></li>
<li>/</li>
<li><a rel="nofollow" href="<?php echo $curURL; ?>/order_type=1/order_dir=desc">от больших</a></li>
</ul>
</div>
Дивам присваиваем float:left чтобы они стояли в одну строку и делаем другие настройки стилей по своему вкусу

Имейте в виду что мы поправили модель Ксенмарта, поэтому в случае обновления компонента все правки будут утрачены и придётся делать все заново

КОМУ НУЖНЫ ДОРАБОТКИ ПО КСЕНМАРТУ ПРОСЬБА ПИСАТЬ В ЛИЧКУ!
*

jumlancerCom

  • Захожу иногда
  • 52
  • 2 / 1
ТРАНСЛИТЕРАЦИЯ АЛИАСОВ

Поменять правила транслитерации алиасов категорий, товаров, производителей и свойств можно в файле plugins/system/ksencore/core/helpers/common/functions.php
*

_kirill_

  • Осваиваюсь на форуме
  • 13
  • 0 / 0
Нужна доработка по ksenmart
Есть ли решение, которое автоматически подхватывает данное изменение количества товара в корзине и сумма чтоб тоже менялась.
Вот часть кода
<div class="control-group">
      <label class="control-label"><?php echo JText::_('KSM_PRODUCT_PRODCOL'); ?></label>
      <div class="controls">
         <div class="input-prepend input-append span2 quant">
            <button type="button" class="btn minus">-</button>
            <input type="text" id="inputQuantity" class="inputbox span12 text-center" name="count" value="<?php echo $this->product->product_packaging?>" />
            <button type="button" class="btn plus">+</button>
         </div>
      </div>
   </div>

Вот сайт http://www.a0108973.xsph.ru/
*

_kirill_

  • Осваиваюсь на форуме
  • 13
  • 0 / 0
И еще нужно чтоб  в корзине показывался вес и общий вес при оформление заказа
*

Валентиныч2012

  • Новичок
  • 1
  • 0 / 0

КОМУ НУЖНЫ ДОРАБОТКИ ПО КСЕНМАРТУ ПРОСЬБА ПИСАТЬ В ЛИЧКУ!

Добрый день.
Как можно привязать расчет стоимости доставки к весу? Каждые 10кг веса заказа прибавляют 100р к стоимости доставки?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться