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

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

Вы не зашли.

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

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

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

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

Не в сети

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

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

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

AndrewVashkiw пишет:

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

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

Изменено AndrewVashkiw (2017-01-29 15:28:00)

Не в сети

#3 2017-01-31 01: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 01:05:28)

Не в сети

#4 2017-01-31 01: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 02: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 13: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 02: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 15: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 02: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 17: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 20: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 20:30:18)

Не в сети

#12 2017-02-02 20: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 20:57:40)

Не в сети

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

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

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

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

Не в сети

Подвал раздела

Работает на FluxBB