вопрос
{custom category="1,2,3"}
Выводит новости, которые принадлежат одной из категорий. Как вывести новости, которые принадлежат сразу нескольким, используя {custom}?
Выводит новости, которые принадлежат одной из категорий. Как вывести новости, которые принадлежат сразу нескольким, используя {custom}?
Открыть /engine/modules/functions.php найти
Предупреждаю, при использовании множества категории может повыситься нагрузка на базу данных из-за REGEXP, так устроены категории DLE.
function custom_print( $matches=array() ) {
В нем найтиif( preg_match( "#category=['\"](.+?)['\"]#i", $param_str, $match ) ) {
Выше вставитьif (preg_match( "#and-category=['\"](.+?)['\"]#i", $param_str, $match)) {
$cats_select = true;
$temp_array = [];
$match[1] = explode(',', $match[1]);
foreach ($match[1] as $value) {
if (count(explode('-', $value)) == 2) {
$temp_array[] = get_mass_cats($value);
} else {
$temp_array[] = intval($value);
}
}
$temp_array = implode('|', $temp_array);
$temp_array = explode('|', $temp_array);
$cat_and = [];
if ($temp_array) {
foreach ($temp_array as $value) {
$cat_and[] = "category regexp '[[:<:]](" . $value . ")[[:>:]]'";
}
}
$where[] = '( ' . implode(' AND ', $cat_and) . ' )';
}
Вместо параметра category использовать and-category.Предупреждаю, при использовании множества категории может повыситься нагрузка на базу данных из-за REGEXP, так устроены категории DLE.