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

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

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

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

06.07.17 в 06:15
10.02.22 в 23:59
20
3.135
5
  1. TopicStarter Overlay
    iCooLER

    Кодер

    Регистрация:
    13 сен 2016
    Сообщения:
    390
    Лучших ответов:
    6
    Рейтинги:
    +318 / 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 байт
      Просмотров:
      39
    #1 iCooLER, 6 июл 2017
    Последнее редактирование: 6 июл 2017
    • Нравится Нравится x 5
    • Полезно Полезно x 1
  2. Frosty

    Забанен

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

    Кодер

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

    Забанен

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

    Кодер

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

    Забанен

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

    Кодер

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

    Забанен

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

    Кодер

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

    PRO Users

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

    Darkensand Бывалый

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

    Кодер

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

    Darkensand Бывалый

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

    Кодер

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

    Chicago Зелёный

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

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

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

    PRO Users

    Регистрация:
    14 сен 2019
    Сообщения:
    99
    Лучших ответов:
    1
    Рейтинги:
    +10 / 3 / -0
  17. shturval

    PRO Users

    Регистрация:
    14 сен 2019
    Сообщения:
    99
    Лучших ответов:
    1
    Рейтинги:
    +10 / 3 / -0
    Ребят, где теперь подключить файл в версии 15.1?
    upload_2022-2-10_22-14-56.png

    Такой строки уже не существует.
     
  18. igrovik

    igrovik Местный

    Регистрация:
    11 дек 2016
    Сообщения:
    1.007
    Лучших ответов:
    8
    Рейтинги:
    +354 / 12 / -0
    В старпосте же написано перед echo $tpl->result['main']; так и пробуйте вместо того что идет вместе с eval ставите echo $tpl->result['main']; сохраняете чистите кэш и пробуете. Конечно маловероятно но по идее должно сработать.
     
  19. shturval

    PRO Users

    Регистрация:
    14 сен 2019
    Сообщения:
    99
    Лучших ответов:
    1
    Рейтинги:
    +10 / 3 / -0
    тупанул, да. Нашел на 753 строчке
    PHP:
    echo $tpl->result['main'];
    Вставил выше. Заработало.)
     
  20. igrovik

    igrovik Местный

    Регистрация:
    11 дек 2016
    Сообщения:
    1.007
    Лучших ответов:
    8
    Рейтинги:
    +354 / 12 / -0
    Бывает ))))
     
Яндекс.Метрика