Русский English Deutsch Українська Қазақша

Next Generation CMS :: Форум поддержки

Заинтересовала наша система? Тогда этот форум для Вас!

Вы не вошли.

#1 2017-01-29 14:14:31

AndrewVashkiw
Участник
Здесь с 2017-01-25
Сообщений: 28
Рейтинг :   

Сортировка новостей в родительской категории

Здравствуйте! Есть плагин сортировки по доп.полям, подскажите пожалуйста, есть ли функция сортировки новостей по подкатегориям внутри основной категории? и как ее вызвать? (как бы к добавлению в сортировке по доп полям)

Вне форума

#2 2017-01-29 14:16:34

AndrewVashkiw
Участник
Здесь с 2017-01-25
Сообщений: 28
Рейтинг :   

Re: Сортировка новостей в родительской категории

AndrewVashkiw пишет:

Здравствуйте! Есть плагин сортировки по доп.полям, подскажите пожалуйста, есть ли функция сортировки новостей по подкатегориям внутри основной категории? и как ее вызвать? (как бы к добавлению в сортировке по доп полям)

Интересует сортировка по:подкатегориям основной новости, по рейтингу, по комментариям, по дате и по доп.полям

Отредактировано AndrewVashkiw (2017-01-29 14:28:00)

Вне форума

#3 2017-01-31 00:04:28

dreamms
Участник
Здесь с 2015-07-04
Сообщений: 42
Рейтинг :   

Re: Сортировка новостей в родительской категории

AndrewVashkiw пишет:
AndrewVashkiw пишет:

Здравствуйте! Есть плагин сортировки по доп.полям, подскажите пожалуйста, есть ли функция сортировки новостей по подкатегориям внутри основной категории? и как ее вызвать? (как бы к добавлению в сортировке по доп полям)

Интересует сортировка по:подкатегориям основной новости, по рейтингу, по комментариям, по дате и по доп.полям

Я тоже задавался этим вопросом, и у меня получилось сделать сортировку по голосам рейтинга и комментариям, нужно в плагине сортировки xfilter добавить:

if ($_REQUEST['com']) {
		array_push($filter, array('DATA', 'com', 'LIKE', '%'.secure_html($_REQUEST['com']).'%'));	 
	}
	if ($_REQUEST['vote']) {
		$rating = secure_html($_REQUEST['vote']);
		array_push($filter, array('DATA', 'votes', 'LIKE', '%5%'));	 
	}

Таким образом если зайдете site.com/category?com=1 - покажет все новости у которых есть 1 комментарий , если добавить site.com/category?com=1&catid=1 , то покажет все новости из категории c id 1 у которых есть 1 комментарий.
Я так и не смог решить как сделать поиск сразу по нескольким категориям, друзья, помогите пожалуйста, как дописать чтобы фильтр работал и так - site.com/category?catid=1,2,3 (поиск сразу по 1 2 3 категории)

Вот сам код сортировки по категории

if ($_REQUEST['catid']) {
	
		array_push($filter, array('DATA', 'catid', 'LIKE', '%'.secure_html($_REQUEST['catid']).'%'));	 
	}

Нужно наверное использовать OR в запросе, но как его применить с этой структурой ? я не могу никак это решит... Помогите

Отредактировано dreamms (2017-01-31 00:05:28)

Вне форума

#4 2017-01-31 00:53:02

dreamms
Участник
Здесь с 2015-07-04
Сообщений: 42
Рейтинг :   

Re: Сортировка новостей в родительской категории

Может кто знает, как можно в том запросе LIKE array задать поиск диапазоном? то бишь от 1 до 5 допустим, я пробовал так 'LIKE', '['.secure_html($_REQUEST['vote']).'-5]%' , допустим задаем vote=1, и ищет по новости в диапазоне от 1 до 5

Вне форума

#5 2017-01-31 01:07:03

infinity237
Модератор
Откуда: Russia, Moscow
Здесь с 2008-11-09
Сообщений: 2,674
Рейтинг :   176 
Сайт

Re: Сортировка новостей в родительской категории

/category?votes_from=1&votes_to=5

array('DATA', 'votes', 'BETWEEN', array((int)$_REQUEST['votes_from'], (int)$_REQUEST['votes_to']))

Вне форума

#6 2017-01-31 12:42:19

dreamms
Участник
Здесь с 2015-07-04
Сообщений: 42
Рейтинг :   

Re: Сортировка новостей в родительской категории

infinity237 пишет:

/category?votes_from=1&votes_to=5

array('DATA', 'votes', 'BETWEEN', array((int)$_REQUEST['votes_from'], (int)$_REQUEST['votes_to']))

Спасибо! Не подскажите как с категориями сделать? чтобы не прописывать постоянно catid=1, catid=2 , а чтобы был поиск так catid=1.2,3. Заранее спасибо!

Вне форума

#7 2017-02-01 01:38:09

infinity237
Модератор
Откуда: Russia, Moscow
Здесь с 2008-11-09
Сообщений: 2,674
Рейтинг :   176 
Сайт

Re: Сортировка новостей в родительской категории

dreamms пишет:
infinity237 пишет:

/category?votes_from=1&votes_to=5

array('DATA', 'votes', 'BETWEEN', array((int)$_REQUEST['votes_from'], (int)$_REQUEST['votes_to']))

Спасибо! Не подскажите как с категориями сделать? чтобы не прописывать постоянно catid=1, catid=2 , а чтобы был поиск так catid=1.2,3. Заранее спасибо!

Обычно это делается через форму с post запросом.

Вне форума

#8 2017-02-01 14:57:21

dreamms
Участник
Здесь с 2015-07-04
Сообщений: 42
Рейтинг :   

Re: Сортировка новостей в родительской категории

infinity237 пишет:
dreamms пишет:
infinity237 пишет:

/category?votes_from=1&votes_to=5

array('DATA', 'votes', 'BETWEEN', array((int)$_REQUEST['votes_from'], (int)$_REQUEST['votes_to']))

Спасибо! Не подскажите как с категориями сделать? чтобы не прописывать постоянно catid=1, catid=2 , а чтобы был поиск так catid=1.2,3. Заранее спасибо!

Обычно это делается через форму с post запросом.

Это я знаю, у меня так и получается, но сам модуль не сортирует так, он сортирует только по 1 категории, вот в чем и вопрос, как в том коде выше что я скинул сделать чтобы он понимал фильтрацию новостей одновременно по нескольким категориям...

Вне форума

#9 2017-02-02 01:57:17

infinity237
Модератор
Откуда: Russia, Moscow
Здесь с 2008-11-09
Сообщений: 2,674
Рейтинг :   176 
Сайт

Re: Сортировка новостей в родительской категории

dreamms пишет:
infinity237 пишет:
dreamms пишет:

Спасибо! Не подскажите как с категориями сделать? чтобы не прописывать постоянно catid=1, catid=2 , а чтобы был поиск так catid=1.2,3. Заранее спасибо!

Обычно это делается через форму с post запросом.

Это я знаю, у меня так и получается, но сам модуль не сортирует так, он сортирует только по 1 категории, вот в чем и вопрос, как в том коде выше что я скинул сделать чтобы он понимал фильтрацию новостей одновременно по нескольким категориям...

Допустим, если есть select:

<select name="mycats[]" multiple="multiple"> ... </select>

И если используется одна категория для одной новости, то обработчик примерно такой:

$values = $_POST['mycats'];
$ids = array();
foreach ($values as $a){
    $ids[] = $a;
}
array_push($filter, array('DATA', 'catid', 'IN', $ids));

Если новость может находиться в нескольких категориях, то примерно так:

$categoryList = $_POST['mycats'];
if ((is_array($categoryList) && count($categoryList))) {
    foreach ($categoryList as $cat) {
        array_push($filter, "catid ".($cat?("regexp '[[:<:]](".intval($cat).")[[:>:]]'"):(' = ""')));
    }
}
array_unshift($filter, 'OR');

Вне форума

#10 2017-02-02 16:06:32

dreamms
Участник
Здесь с 2015-07-04
Сообщений: 42
Рейтинг :   

Re: Сортировка новостей в родительской категории

infinity237 пишет:
dreamms пишет:
infinity237 пишет:

Обычно это делается через форму с post запросом.

Это я знаю, у меня так и получается, но сам модуль не сортирует так, он сортирует только по 1 категории, вот в чем и вопрос, как в том коде выше что я скинул сделать чтобы он понимал фильтрацию новостей одновременно по нескольким категориям...

Допустим, если есть select:

<select name="mycats[]" multiple="multiple"> ... </select>

И если используется одна категория для одной новости, то обработчик примерно такой:

$values = $_POST['mycats'];
$ids = array();
foreach ($values as $a){
    $ids[] = $a;
}
array_push($filter, array('DATA', 'catid', 'IN', $ids));

Если новость может находиться в нескольких категориях, то примерно так:

$categoryList = $_POST['mycats'];
if ((is_array($categoryList) && count($categoryList))) {
    foreach ($categoryList as $cat) {
        array_push($filter, "catid ".($cat?("regexp '[[:<:]](".intval($cat).")[[:>:]]'"):(' = ""')));
    }
}
array_unshift($filter, 'OR');

Спасибо большое, первый вариант помог, все оказалось проще чем я думал, пойду изучать структуру дальше...

Вне форума

#11 2017-02-02 19:29:56

dreamms
Участник
Здесь с 2015-07-04
Сообщений: 42
Рейтинг :   

Re: Сортировка новостей в родительской категории

Если кто-то захочет сделать фильтр новостей Есть или Нету изображений, то в xfilter.php добавьте такую проверку:

if ($_REQUEST['img'] == "on") {
		array_push($filter, array('DATA', 'xfields_imgnews', '>', '0'));	 
	}

В итоге будет работать фильтрация так site.com/category?img=on - покажет новости только у которых есть картинки, создайте только доп поля под картинки imgnews допустим

Отредактировано dreamms (2017-02-02 19:30:18)

Вне форума

#12 2017-02-02 19:55:57

dreamms
Участник
Здесь с 2015-07-04
Сообщений: 42
Рейтинг :   

Re: Сортировка новостей в родительской категории

infinity237 пишет:

/category?votes_from=1&votes_to=5

array('DATA', 'votes', 'BETWEEN', array((int)$_REQUEST['votes_from'], (int)$_REQUEST['votes_to']))

Что-то не хочет работать такой вариант, и я вообще не пойму почему толком не работают выборки? Допустим, пишу такой код
    if ($_REQUEST['cena']) {
    array_push($filter, array('DATA', 'xfields_cena', 'BETWEEN', array(5, 100)));
    }

И нифига не сортирует от 5 до 100, хотя есть новости с ценой и 6, и 50 и должно их показывать, и не показывает...

Отредактировано dreamms (2017-02-02 19:57:40)

Вне форума

#13 2017-02-02 21:54:57

infinity237
Модератор
Откуда: Russia, Moscow
Здесь с 2008-11-09
Сообщений: 2,674
Рейтинг :   176 
Сайт

Re: Сортировка новостей в родительской категории

В настройках включить "Безопасность" -> "Отладочная информация" -> "Отображать список SQL запросов на сайте".
На странице с запросом посмотреть какой SQL запрос генерируется.

Вне форума

Сейчас в этой теме пользователей: 0, гостей: 1
[Bot] ClaudeBot

Подвал форума

Под управлением FluxBB 1.5.11
Модифицировал Visman

[ Сгенерировано за 0.015 сек, 7 запросов выполнено - Использовано памяти: 579.05 Кбайт (Пик: 600.05 Кбайт) ]