Вы не зашли.
Страницы 1
Здравствуйте! Есть плагин сортировки по доп.полям, подскажите пожалуйста, есть ли функция сортировки новостей по подкатегориям внутри основной категории? и как ее вызвать? (как бы к добавлению в сортировке по доп полям)
Не в сети
Здравствуйте! Есть плагин сортировки по доп.полям, подскажите пожалуйста, есть ли функция сортировки новостей по подкатегориям внутри основной категории? и как ее вызвать? (как бы к добавлению в сортировке по доп полям)
Интересует сортировка по:подкатегориям основной новости, по рейтингу, по комментариям, по дате и по доп.полям
Изменено AndrewVashkiw (2017-01-29 15:28:00)
Не в сети
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)
Не в сети
Может кто знает, как можно в том запросе LIKE array задать поиск диапазоном? то бишь от 1 до 5 допустим, я пробовал так 'LIKE', '['.secure_html($_REQUEST['vote']).'-5]%' , допустим задаем vote=1, и ищет по новости в диапазоне от 1 до 5
Не в сети
/category?votes_from=1&votes_to=5
array('DATA', 'votes', 'BETWEEN', array((int)$_REQUEST['votes_from'], (int)$_REQUEST['votes_to']))
Не в сети
/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. Заранее спасибо!
Не в сети
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 запросом.
Не в сети
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 категории, вот в чем и вопрос, как в том коде выше что я скинул сделать чтобы он понимал фильтрацию новостей одновременно по нескольким категориям...
Не в сети
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');
Не в сети
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');
Спасибо большое, первый вариант помог, все оказалось проще чем я думал, пойду изучать структуру дальше...
Не в сети
Если кто-то захочет сделать фильтр новостей Есть или Нету изображений, то в 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)
Не в сети
/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)
Не в сети
В настройках включить "Безопасность" -> "Отладочная информация" -> "Отображать список SQL запросов на сайте".
На странице с запросом посмотреть какой SQL запрос генерируется.
Не в сети
Страницы 1