Что нового

Плагин для вывода категорий отдельно друг от друга [ DLE 13.0 - 15.2 ]

  • Автор темы Автор темы Defoz
  • Дата начала Дата начала

Defoz

Посетитель
Регистрация
20 Июн 2021
Сообщения
98
Реакции
18
Плагин позволит выводить отдельно категории друг от друга, заменяя громоздкие конструкции [catlist], а так же проверять наличие определенных категорий в новости.

В шаблонах краткой новости, полной, поиске и шаблонах custom доступны теги:


{cat-tag id="1" sub="yes"} или {cat-tag id="1,3,6-10" sub="yes"} - выведет ссылки на главную(ые) категорию(и) и ее подкатегории.

{cat-tag id="1" sub="no"} или {cat-tag id="1,3,6-10" sub="no"} - выведет ссылки на категории которые указаны.

{cat-tag id="1" sub="no" url="no"} или {cat-tag id="1,3,6-10" sub="no" url="no"} - выведет название категорий которые указаны.

[cat-tag id="1" sub="yes"] текст [/cat-tag] или [cat-tag id="1,3,6-10" sub="yes"] текст [/cat-tag] - выведет текст внутри тегов если категория или ее подкатегория выбрана для новости.

[cat-tag id="1" sub="no"] текст [/cat-tag] или [cat-tag id="1,3,6-10" sub="no"] текст [/cat-tag] - выведет текст внутри тегов если категория выбрана для новости.



 
На DLE 16 тестил кто нибудь данный плагин?
 
PHP:
function catTagFunction($data, $catList, $config, $cat_info, $showCat = false)
{
    $catList = array_flip($catList);
    $catArray = [];

    // Extract IDs from the input data
    if (preg_match("#id=['\"](.+?)['\"]#i", $data[1], $match)) {
        $ids = explode(',', $match[1]);
        foreach ($ids as $id) {
            if (strpos($id, '-') !== false) {
                list($start, $end) = explode('-', $id);
                $tempArray = array_filter($cat_info, function($cat) use ($start, $end) {
                    return $cat['id'] >= $start && $cat['id'] <= $end;
                });
                $catArray = array_merge($catArray, array_column($tempArray, 'id'));
            } else {
                $catArray[] = intval($id);
            }
        }
        $catArray = array_unique($catArray);
    }

    // Handle subcategories
    if (preg_match("#sub=['\"](.+?)['\"]#i", $data[1], $match) && $match[1] == 'yes') {
        $subCat = [];
        foreach ($catArray as $value) {
            $subCat = array_merge($subCat, get_sub_cats($value));
        }
        $catArray = array_unique($subCat);
    }

    // Determine if URLs should be generated
    $url = !(preg_match("#url=['\"](.+?)['\"]#i", $data[1], $match) && $match[1] == 'no');

    if ($showCat) {
        $getCat = array_map(function($value) use ($catList, $config, $cat_info, $url) {
            if (isset($catList[$value])) {
                return $url
                    ? "<a href=\"{$config['http_home_url']}" . get_url($value) . "/\">{$cat_info[$value]['name']}</a>"
                    : $cat_info[$value]['name'];
            }
            return null;
        }, $catArray);

        $getCat = array_filter($getCat); // Remove null values
        return implode($config['category_separator'] . ' ', $getCat);
    } else {
        $checkCat = array_reduce($catArray, function($carry, $value) use ($catList) {
            return $carry || isset($catList[$value]);
        }, false);

        return $checkCat ? $data[2] : '';
    }
}
 
Верх