Скрыть объявление
ВАШИ ПРАВА ОГРАНИЧЕНЫ!

Зарегистрируйтесь на форуме, чтобы стать полноценным участником сообщества!

Вывод кол-ва новостей для категорий + условия

Тема в разделе "Хаки DLE", создана пользователем iCooLER, 6 июл 2017.

06.07.17 в 06:15
09.02.21 в 13:02
15
1.427
5
  1. TopicStarter Overlay
    iCooLER

    Кодер

    Регистрация:
    13 сен 2016
    Сообщения:
    381
    Лучших ответов:
    6
    Рейтинги:
    +302 / 12 / -0
    cmCatcount — первый хак для DLE от iCooLER

    Скрипт реализует возможность выводить количество новостей в любой конкретной категории в любом месте на странице.

    Преимущества скрипта:
    — Реализованы условия больше, меньше, равно =<>
    — Получает кол-во новостей для каждой категории одним запросом
    — Подключение в одном месте (т.е. не надо подключать скрипт через include отдельно для каждой категории)
    — Использует кэш (префикс news_)

    Как подключить:
    Файл из архива пихаем в папку /engine/modules/ и в файле main.php перед строкой echo $tpl->result['main']; прописываем include ENGINE_DIR . '/modules/cm.catcount.php';

    Как использовать:
    {catcount:12}
    — выведет кол-во новостей в категории с ID 12
    [catcount:12 > 100] в категории 12 больше 100 новостей [/catcount:12]
    [catcount:12 = 100]
    в категории 12 ровно 100 новостей [/catcount:12]
    [catcount:12 < 100]
    в категории 12 меньше 100 новостей [/catcount:12]

    P.S.
    Скрипт на живом сайте не тестировал!

    PHP:
    function cm_catcount$matches ) {

        global 
    $cat_info_count;
        if ( 
    $matches[2] == '=' ) return ( $cat_info_count[$matches[1]] == $matches[3] ) ? $matches[4] : '' ;
            elseif( 
    $matches[2] == '<' ) return ( $cat_info_count[$matches[1]] < $matches[3] ) ? $matches[4] : '' ;
                elseif( 
    $matches[2] == '>' ) return ( $cat_info_count[$matches[1]] > $matches[3] ) ? $matches[4] : '';
                    else return 
    false;
    }

    if ( !
    $cache dle_cache'news_cm_categories_count'$config['skin'], false ) ) {
        
    $count $db->query("SELECT c.id AS id, (SELECT COUNT(*) FROM " PREFIX "_post AS p WHERE p.category REGEXP '[[:<:]]' + c.id + '[[:>:]]') AS count FROM " PREFIX "_category AS c");
        while ( 
    $row $db->get_array($count) ) $cat_info_count[$row['id']] = $row['count'];
        
    create_cache'news_cm_categories_count'serialize($cat_info_count), $config['skin'], false );
    } else 
    $cat_info_count unserialize($cache);

    foreach (
    $cat_info_count as $id => $count$tpl->result['main'] = str_replace("{catcount:{$id}}"$count$tpl->result['main']);

    $tpl->result['main'] = preg_replace_callback("#\[catcount:([0-9]+)[\s]*?([=<>])[\s]*?([0-9]+)\](.*?)\[\/catcount:[0-9]+\]#is""cm_catcount"$tpl->result['main']);
     

    Вложения:

    • cm_catcount.rar
      Размер файла:
      810 байт
      Просмотров:
      23
    #1 iCooLER, 6 июл 2017
    Последнее редактирование: 6 июл 2017
    • Нравится Нравится x 5
    • Полезно Полезно x 1
  2. Frosty

    Забанен

    Регистрация:
    31 мар 2017
    Сообщения:
    942
    Лучших ответов:
    1
    Рейтинги:
    +188 / 17 / -0
    Опять доп запрос :confused:
     
  3. TopicStarter Overlay
    iCooLER

    Кодер

    Регистрация:
    13 сен 2016
    Сообщения:
    381
    Лучших ответов:
    6
    Рейтинги:
    +302 / 12 / -0
    Он кэшируется !
     
  4. Frosty

    Забанен

    Регистрация:
    31 мар 2017
    Сообщения:
    942
    Лучших ответов:
    1
    Рейтинги:
    +188 / 17 / -0
    Это хорошо) совместно с модулем пунпуна фльтр, можно использовать ?
     
  5. TopicStarter Overlay
    iCooLER

    Кодер

    Регистрация:
    13 сен 2016
    Сообщения:
    381
    Лучших ответов:
    6
    Рейтинги:
    +302 / 12 / -0
    Я хз, про какой ты модуль. вообще конфликта быть не должно. сам видишь в хаке все пара десятков строк кода.
     
  6. Frosty

    Забанен

    Регистрация:
    31 мар 2017
    Сообщения:
    942
    Лучших ответов:
    1
    Рейтинги:
    +188 / 17 / -0
    Про Field Search
     
  7. TopicStarter Overlay
    iCooLER

    Кодер

    Регистрация:
    13 сен 2016
    Сообщения:
    381
    Лучших ответов:
    6
    Рейтинги:
    +302 / 12 / -0
    ... каким образом модуль и хак написанные для совершенно разных задач могут конфликтовать?
     
  8. Frosty

    Забанен

    Регистрация:
    31 мар 2017
    Сообщения:
    942
    Лучших ответов:
    1
    Рейтинги:
    +188 / 17 / -0
    Я писал не про конфликт а про "будет работать или нет"
     
  9. TopicStarter Overlay
    iCooLER

    Кодер

    Регистрация:
    13 сен 2016
    Сообщения:
    381
    Лучших ответов:
    6
    Рейтинги:
    +302 / 12 / -0
    Суть одна.
     
  10. Bashmak

    PRO Users

    Регистрация:
    25 фев 2017
    Сообщения:
    523
    Лучших ответов:
    0
    Рейтинги:
    +133 / 18 / -0
    Блин где ты был месяца 3 назад? Тогда какие только хаки не перепробовал, все сильно нагружали сервер, но в итоге купил у Sander'а
     
  11. Darkensand

    Darkensand Бывалый

    Регистрация:
    12 июн 2017
    Сообщения:
    158
    Лучших ответов:
    0
    Рейтинги:
    +14 / 0 / -0
    найс но можно было сделать чтоб через конфиг вставляло
     
  12. TopicStarter Overlay
    iCooLER

    Кодер

    Регистрация:
    13 сен 2016
    Сообщения:
    381
    Лучших ответов:
    6
    Рейтинги:
    +302 / 12 / -0
    Всмысле?
     
  13. Darkensand

    Darkensand Бывалый

    Регистрация:
    12 июн 2017
    Сообщения:
    158
    Лучших ответов:
    0
    Рейтинги:
    +14 / 0 / -0
    ну чтоб не писать а конфигом делать
     
  14. TopicStarter Overlay
    iCooLER

    Кодер

    Регистрация:
    13 сен 2016
    Сообщения:
    381
    Лучших ответов:
    6
    Рейтинги:
    +302 / 12 / -0
    Что «не писать»?
     
  15. Chicago

    Chicago Зелёный

    Регистрация:
    1 июл 2016
    Сообщения:
    1
    Лучших ответов:
    0
    Рейтинги:
    +0 / 0 / -0
    Отличный хак! ;)

    Интересно, а реально сделать так, чтобы можно было выводить подобную конструкцию:
    {catcount:12} материал|а|ов
    {catcount:13} публикаци|я|и|й

    Пробовал через [declination=X] - не пашет...
     
  16. shturval

    PRO Users

    Регистрация:
    14 сен 2019
    Сообщения:
    85
    Лучших ответов:
    1
    Рейтинги:
    +8 / 3 / -0
    Работает как надо. ;)
     
Похожие темы
  1. weiles
    Ответов:
    8
    Просмотров:
    757
  2. Andrij
    Ответов:
    0
    Просмотров:
    385
  3. Andrij
    Ответов:
    0
    Просмотров:
    239
  4. Reactive
    Ответов:
    8
    Просмотров:
    266
Загрузка...
Яндекс.Метрика