вопрос
Доброго времени суток!
Столкнулся с проблемой сортировки custom, а конкретно xfields="" не сортирует по указанному году и любому другому тексту! Версия DLE 10.5
Как можно это изменить или доделать? Возможно что то недоглядел?
Вот как выглядит custom который я использую.
{custom category="1" xfields="2015" template="static-pages" aviable="static" order="reads" limit="20" cache="yes"}
В dle-news документации... явно дано как это работает, но увы.
xfields выводятся все публикации, содержащие указанное в параметре значение дополнительных полей новостей. Допускается также перечисление значений в параметре через запятую. Например, при использовании {custom xfields="значение 1,значение 2"} будут выведены новости, в которых есть дополнительные поля содержащие "значение 1" или "значение 2".
Источник: тут.
Желательно без правок движка.
Столкнулся с проблемой сортировки custom, а конкретно xfields="" не сортирует по указанному году и любому другому тексту! Версия DLE 10.5
Как можно это изменить или доделать? Возможно что то недоглядел?
Вот как выглядит custom который я использую.
{custom category="1" xfields="2015" template="static-pages" aviable="static" order="reads" limit="20" cache="yes"}
В dle-news документации... явно дано как это работает, но увы.
xfields выводятся все публикации, содержащие указанное в параметре значение дополнительных полей новостей. Допускается также перечисление значений в параметре через запятую. Например, при использовании {custom xfields="значение 1,значение 2"} будут выведены новости, в которых есть дополнительные поля содержащие "значение 1" или "значение 2".
Источник: тут.
Желательно без правок движка.
Вообще данная функция добавлена с 10.6 (в 10.5 еще нету xfields и xfieldsexclude)
Поэтому берем данную функцию из 10.6
Открыть файл engine/modules/functions.php
Найти
Вставляем выше
Поэтому берем данную функцию из 10.6
Открыть файл engine/modules/functions.php
Найти
$where[] = "approve=1";
Вставляем выше
if( preg_match( "#xfields=['\"](.+?)['\"]#i", $param_str, $match ) ) {
$xf = $match[1];
$match[1] = explode (',', $match[1]);
$temp_array = array();
foreach ($match[1] as $value) {
$value = @$db->safesql ( htmlspecialchars ( strip_tags ( stripslashes ( trim ( $value ) ) ), ENT_QUOTES, $config['charset'] ) );
$temp_array[] = "p.xfields LIKE '%{$value}%'";
}
$where[] = implode(' OR ', $temp_array);
} else $xf = "";
if( preg_match( "#xfieldsexclude=['\"](.+?)['\"]#i", $param_str, $match ) ) {
$notxf = $match[1];
$match[1] = explode (',', $match[1]);
$temp_array = array();
foreach ($match[1] as $value) {
$value = @$db->safesql ( htmlspecialchars ( strip_tags ( stripslashes ( trim ( $value ) ) ), ENT_QUOTES, $config['charset'] ) );
$temp_array[] = "p.xfields NOT LIKE '%{$value}%'";
}
$where[] = implode(' AND ', $temp_array);
} else $notxf = "";