Форум русской поддержки Joomla!® CMS
10.12.2016, 01:21:25 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

Ошибки в фильтре сортировке товара

 (Прочитано 425 раз)
0 Пользователей и 1 Гость смотрят эту тему.
xenos
Осваиваюсь на форуме
***

Репутация: +3/-2
Offline Offline

Сообщений: 58


« : 28.07.2015, 12:49:49 »

Всем добрый день. Помогите выявить ошибки в скрипте, при сортировке товаров по цене. Взялся  один не добросовестный горе кодер с форума, деньги за работу взял но не довел работу до конца Валера Карманов его профиль  http://joomlaforum.ru/index.php?action=profile;u=169023

Суть проблемы: при нажатии сортировки появляются клоны(дубли товаров)

Код фильтра сортировки :

/media/zoo/applications/jbuniversal/templates/catalog/renderer/item_columns/_default.php

Показать текстовый блок

Получается только на жимается сортировка, и начинают вылазить дубли товаро, от 3 и по 6 шт. одинаковых
« Последнее редактирование: 28.07.2015, 13:24:07 от xenos » Записан
Gordon Freeman
Осваиваюсь на форуме
***

Репутация: +7/-0
Offline Offline

Сообщений: 124


« Ответ #1 : 28.07.2015, 13:42:17 »

Суть проблемы: при нажатии сортировки появляются клоны(дубли товаров)

Конечно на трезвую голову сразу сделать правильно - это нереально, но попробуй замени полностью код в файле на этот ... Что тебе выведет на страницу...

Код:
<?php
/**
 * JBZoo App is universal Joomla CCK, application for YooTheme Zoo component
 *
 * @package     jbzoo
 * @version     2.x Pro
 * @author      JBZoo App http://jbzoo.com
 * @copyright   Copyright (C) JBZoo.com,  All rights reserved.
 * @license     http://jbzoo.com/license-pro.php JBZoo Licence
 * @coder       Denis Smetannikov <denis@jbzoo.com>
 */

// no direct access
// JRequest::getVar('sorting')
defined('_JEXEC') or die('Restricted access');
$mainframe = JFactory::getApplication();

$this->app->jbdebug->mark('layout::item_columns::start');

if ($vars['count']) {

    $count = $vars['count'];

    $j = 0;

foreach ($vars['objects'] as $object) {
$points = explode('"', substr($object, strripos($object, 'price="'), stripos($object, 'teaser_tmpl'))); // $points[1]
echo $points[1].'<br>';
}

}


$this->app->jbdebug->mark('layout::item_columns::finish');
Записан
xenos
Осваиваюсь на форуме
***

Репутация: +3/-2
Offline Offline

Сообщений: 58


« Ответ #2 : 28.07.2015, 14:00:54 »

Вывело цены:

Записан
Gordon Freeman
Осваиваюсь на форуме
***

Репутация: +7/-0
Offline Offline

Сообщений: 124


« Ответ #3 : 28.07.2015, 14:12:21 »

а если попробовать вот так...
Код:
<?php
/**
 * JBZoo App is universal Joomla CCK, application for YooTheme Zoo component
 *
 * @package     jbzoo
 * @version     2.x Pro
 * @author      JBZoo App http://jbzoo.com
 * @copyright   Copyright (C) JBZoo.com,  All rights reserved.
 * @license     http://jbzoo.com/license-pro.php JBZoo Licence
 * @coder       Denis Smetannikov <denis@jbzoo.com>
 */

// no direct access
// JRequest::getVar('sorting')
defined('_JEXEC') or die('Restricted access');
$mainframe = JFactory::getApplication();

$this->app->jbdebug->mark('layout::item_columns::start');

if ($vars['count']) {

    $count = $vars['count'];

    $j = 0;

foreach (array_unique($vars['objects']) as $object) { echo $object; }
}


$this->app->jbdebug->mark('layout::item_columns::finish'); ?>
Записан
xenos
Осваиваюсь на форуме
***

Репутация: +3/-2
Offline Offline

Сообщений: 58


« Ответ #4 : 28.07.2015, 14:32:49 »

а если попробовать вот так...
Код:
<?php
/**
 * JBZoo App is universal Joomla CCK, application for YooTheme Zoo component
 *
 * @package     jbzoo
 * @version     2.x Pro
 * @author      JBZoo App http://jbzoo.com
 * @copyright   Copyright (C) JBZoo.com,  All rights reserved.
 * @license     http://jbzoo.com/license-pro.php JBZoo Licence
 * @coder       Denis Smetannikov <denis@jbzoo.com>
 */

// no direct access
// JRequest::getVar('sorting')
defined('_JEXEC') or die('Restricted access');
$mainframe = JFactory::getApplication();

$this->app->jbdebug->mark('layout::item_columns::start');

if ($vars['count']) {

    $count = $vars['count'];

    $j = 0;

foreach (array_unique($vars['objects']) as $object) { echo $object; }
}


$this->app->jbdebug->mark('layout::item_columns::finish'); ?>

Так выводится все с описаниями и фотками, как надо вообщем.
Записан
Gordon Freeman
Осваиваюсь на форуме
***

Репутация: +7/-0
Offline Offline

Сообщений: 124


« Ответ #5 : 28.07.2015, 14:41:12 »

Так выводится все с описаниями и фотками, как надо вообщем.

кароче это можно делать долго, но надо самому посмотреть... Если есть почта на mail.ru добавь меня в друзья и там разберемся...
напишу в ЛС....
Записан
robert
Профи
********

Репутация: +344/-11
Offline Offline

Пол: Мужской
Сообщений: 3593


« Ответ #6 : 28.07.2015, 15:12:21 »

Попробуйте этот код
Код
if ($vars['count']) {
   $count = $vars['count'];
   $j = 0;
 
$regexp='~(price=")([^"]+)(")~';
$new_objects=array();
$sorting=JRequest::getVar('sorting','');
 
if(!empty($sorting)){
foreach($vars['objects'] as $object){
preg_match($regexp,$object,$matches);
$key=trim($matches[2]);
$new_objects[$key]=$object;
}
 
if($sorting=='cheap'){
ksort($new_objects);
}else{
krsort($new_objects);
}
foreach($new_objects as $new_object){
echo $new_object;
}
}else{
foreach($vars['objects'] as $object){
echo $object;
}
}
}
 
« Последнее редактирование: 28.07.2015, 15:15:42 от robert » Записан
xenos
Осваиваюсь на форуме
***

Репутация: +3/-2
Offline Offline

Сообщений: 58


« Ответ #7 : 28.07.2015, 16:01:00 »

Попробуйте этот код
Код
if ($vars['count']) {
   $count = $vars['count'];
   $j = 0;
 
$regexp='~(price=")([^"]+)(")~';
$new_objects=array();
$sorting=JRequest::getVar('sorting','');
 
if(!empty($sorting)){
foreach($vars['objects'] as $object){
preg_match($regexp,$object,$matches);
$key=trim($matches[2]);
$new_objects[$key]=$object;
}
 
if($sorting=='cheap'){
ksort($new_objects);
}else{
krsort($new_objects);
}
foreach($new_objects as $new_object){
echo $new_object;
}
}else{
foreach($vars['objects'] as $object){
echo $object;
}
}
}
 

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

Репутация: +344/-11
Offline Offline

Пол: Мужской
Сообщений: 3593


« Ответ #8 : 28.07.2015, 17:41:07 »

Тогда так
Код
if ($vars['count']) {
   $count = $vars['count'];
   $j = 0;
 
$regexp='~(price=")([^"]+)(")~';
$new_objects=array();
$sorting=JRequest::getVar('sorting','');
 
if(!empty($sorting)){
foreach($vars['objects'] as $object){
preg_match($regexp,$object,$matches);
$key=trim($matches[2]);
$key=array_key_exists($key,$new_objects)?((int)$key+1):$key;
$new_objects[$key]=$object;
}
 
if($sorting=='cheap'){
ksort($new_objects);
}else{
krsort($new_objects);
}
foreach($new_objects as $new_object){
echo $new_object;
}
}else{
foreach($vars['objects'] as $object){
echo $object;
}
}
}
 
Записан
xenos
Осваиваюсь на форуме
***

Репутация: +3/-2
Offline Offline

Сообщений: 58


« Ответ #9 : 29.07.2015, 11:19:45 »

Тогда так
Код
if ($vars['count']) {
   $count = $vars['count'];
   $j = 0;
 
$regexp='~(price=")([^"]+)(")~';
$new_objects=array();
$sorting=JRequest::getVar('sorting','');
 
if(!empty($sorting)){
foreach($vars['objects'] as $object){
preg_match($regexp,$object,$matches);
$key=trim($matches[2]);
$key=array_key_exists($key,$new_objects)?((int)$key+1):$key;
$new_objects[$key]=$object;
}
 
if($sorting=='cheap'){
ksort($new_objects);
}else{
krsort($new_objects);
}
foreach($new_objects as $new_object){
echo $new_object;
}
}else{
foreach($vars['objects'] as $object){
echo $object;
}
}
}
 

Уважаемый robert большая Вам благодарность, в помощи решении этой проблемы...
Записан
robert
Профи
********

Репутация: +344/-11
Offline Offline

Пол: Мужской
Сообщений: 3593


« Ответ #10 : 29.07.2015, 11:41:59 »

xenos, пишите здесь.
Не стоит благодарности, считайте, что это компенсация за недоделанную работу. И учтите, что дешево - не всегда хорошо.
Показать текстовый блок
P.S. Попправил код.
« Последнее редактирование: 29.07.2015, 18:24:46 от robert » Записан
xenos
Осваиваюсь на форуме
***

Репутация: +3/-2
Offline Offline

Сообщений: 58


« Ответ #11 : 29.07.2015, 12:18:20 »

xenos,  И учтите, что дешево - не всегда хорошо.


Это точно...
Записан
xenos
Осваиваюсь на форуме
***

Репутация: +3/-2
Offline Offline

Сообщений: 58


« Ответ #12 : 29.07.2015, 14:40:21 »

xenos, пишите здесь.
Не стоит благодарности, считайте, что это компенсация за недоделанную работу. И учтите, что дешево - не всегда хорошо.
Показать текстовый блок
P.S. Попправил код.

Не досмотрел, все ровно при нажатии сортировки по цене пропадают товары, и из 6 товаров у которых одинаковая цена остается всего два товара.Мистика какая то
Записан
robert
Профи
********

Репутация: +344/-11
Offline Offline

Пол: Мужской
Сообщений: 3593


« Ответ #13 : 29.07.2015, 18:23:49 »

Поправил.
Записан
Petr45
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 3


« Ответ #14 : 30.07.2015, 12:21:44 »

кароче это можно делать долго, но надо самому посмотреть... Если есть почта на mail.ru добавь меня в друзья и там разберемся...
напишу в ЛС....
Добавился к вам в друзья. Можете мне тоже отправить в лс почту? Есть тоже вопросы по поводу фильтра ZOO.
Записан
robert
Профи
********

Репутация: +344/-11
Offline Offline

Пол: Мужской
Сообщений: 3593


« Ответ #15 : 30.07.2015, 18:48:05 »

xenos, фильтр уже нормально работает?
Записан
xenos
Осваиваюсь на форуме
***

Репутация: +3/-2
Offline Offline

Сообщений: 58


« Ответ #16 : 01.08.2015, 14:15:23 »

xenos, фильтр уже нормально работает?
Да, еще в одной категории не сортирует два товара, почему то не реагирует на них сортировка.
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet