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

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

Хаки для datalife engine

Тема в разделе "Хаки DLE", создана пользователем PunPun, 4 ноя 2016.

04.11.16 в 21:15
22.09.22 в 02:49
27
12.849
12
  1. TopicStarter Overlay
    PunPun

    VIP Кинотрафик v2

    Регистрация:
    11 июн 2015
    Сообщения:
    7.292
    Лучших ответов:
    31
    Рейтинги:
    +3.892 / 96 / -0
    Тема с хаками для DataLife Engine 10.2 и выше.
    Вы можете написать мне в лс с запросом на создание хака и он появится здесь. (Не гарантирую что он будет создан, он может быть мне не интересен).

    Первый хак сделан для вывода количества новостей с категории за сегодня и за общее время.
    Открываем /engine/modules/main.php находим:
    PHP:
    $tpl->compile 'main' );
    Выше вставляем:
    PHP:
    $tpl->copy_template preg_replace_callback"#{cat_all\:(.+?)}#is", function($data) use ($db$config)
    {
        return 
    catCountFunction($data$config$db);
    }, 
    $tpl->copy_template );
    $tpl->copy_template preg_replace_callback"#{cat_today\:(.+?)}#is", function($data) use ($db$config)
    {
        return 
    catCountFunction($data$config$dbtrue);
    }, 
    $tpl->copy_template );
    Открываем /engine/modules/functions.php находим:
    PHP:
    function get_url($id) {
    Выше вставляем:
    PHP:
    function catCountFunction($cat_id$config$db$curdate false)
    {
        
    $cat_ids = array();
        if(
    substr_count($cat_id[1], ","))
            
    $cat_ids explode(","$db->safesql(trim(strip_tags(stripslashes($cat_id[1])))));
        else
            
    $cat_ids[] = is_numeric($cat_id[1]) ? intval($cat_id[1]) : false;
        if(!
    count($cat_ids)) return;

        
    $cache_cat_news false;
        
    $cache_cat_news dle_cache("news_acn" intval($curdate), $config['skin'] . implode($cat_ids), false);
      
        if (
    $config['allow_multi_category'])
            
    $cat_query "category regexp '[[:<:]](" implode '|'$cat_ids ) . ")[[:>:]]'";
        else
            
    $cat_query "category IN ('" implode "','"$cat_ids ) . "')";
        if (!
    $cache_cat_news)
        {
            if(
    $curdate == false)
                
    $row $db->super_query"SELECT COUNT(*) as count FROM " PREFIX "_post WHERE {$cat_query}");
            else
                
    $row $db->super_query"SELECT COUNT(*) as count FROM " PREFIX "_post WHERE {$cat_query} AND date LIKE '".date("Y-m-d")."%'");
            
    $newscount = ($row['count'] > 0) ? intval($row['count']) : false;
            if(
    $newscount)
                
    $cache_cat_news $newscount;
            
    create_cache("news_acn" intval($curdate), $cache_cat_news$config['skin'] . implode($cat_ids), false);
        }

        return (
    $cache_cat_news ? (($curdate == true) ? "+" "") . $cache_cat_news "");
    }
    Использование:
    В нужном месте доступны теги:
    {cat_all:1} или {cat_all:1,2,3,4} - выведет количество новостей за все время с этих категорий.
    {cat_today:1} или {cat_today:1,2,3,4} - выведет количество новостей за сегодня с этих категорий.
     
    #1 PunPun, 4 ноя 2016
    Последнее редактирование: 4 мар 2020
    • Нравится Нравится x 12
  2. TopicStarter Overlay
    PunPun

    VIP Кинотрафик v2

    Регистрация:
    11 июн 2015
    Сообщения:
    7.292
    Лучших ответов:
    31
    Рейтинги:
    +3.892 / 96 / -0
    Второй хак разделение категорий на выводы, как это сделано на kinogo.club Альтернатива "плохому" варианту от @DomiTori.
    upload_2016-11-4_20-16-30.png
    Открываем /engine/modules/functions.php найти
    PHP:
    function get_url($id) {
    Выше вставить:
    PHP:
    function checkCatFunction($data$cat_list)
    {
        
    $flag_checkCatFunction false;
        if(
    substr_count($data[1],","))
        {
            
    $cat_array = array();
            
    $cat_array explode(","$data[1]);
            foreach(
    $cat_array as $value)
            {
                if(
    in_array($value$cat_list))
                    
    $flag_checkCatFunction true;
            }
        }
        else
        {
            if(
    in_array($data[1], $cat_list))
                
    $flag_checkCatFunction true;
        }
        return (
    $flag_checkCatFunction == true) ? $data[2] : "";
    }
    function 
    catFunction($data$cat_list$config)
    {
        
    $get_cat = array();
        if(
    substr_count($data[1],","))
        {
            
    $cat_array = array();
            
    $cat_array explode(","$data[1]);
            foreach(
    $cat_array as $value)
            {
                if(
    in_array($value$cat_list))
                    
    $get_cat[] = getCatInfo($value$config);
            }
        }
        else
        {
            if(
    in_array($data[1], $cat_list))
                
    $get_cat[] = getCatInfo($data[1], $config);
        }
        return 
    implode($config['category_separator'] . ' '$get_cat);
    }
    function 
    getCatInfo($id$config)
    {
        global 
    $cat_info$PHP_SELF;
        if( 
    $config['allow_alt_url'] ) $catInfo "<a href=\"" $config['http_home_url'] . get_url$id ) . "/\">{$cat_info[$id]['name']}</a>";
        else 
    $catInfo "<a href=\"$PHP_SELF?do=cat&amp;category={$cat_info[$id]['alt_name']}\">{$cat_info[$id]['name']}</a>";
        return 
    $catInfo;
    }
    Открываем /engine/modules/show.short.php show.full.php show.custom.php находим первый
    PHP:
    $tpl->compile'content' );
    Выше вставляем:
    PHP:
    $tpl->copy_template preg_replace_callback"#\[cat\:(.+?)\](.+?)\[/cat\]#is", function($data) use ($cat_list)
    {
        return 
    checkCatFunction($data$cat_list);
    }, 
    $tpl->copy_template );
    $tpl->copy_template preg_replace_callback"#{cat\:(.+?)}#is", function($data) use ($cat_list$config)
    {
        return 
    catFunction($data$cat_list$config);
    }, 
    $tpl->copy_template );
    Использование:
    В шаблонах краткой новости, полной и шаблонах custom доступен теги:
    {cat:1} или {cat:1,2,3} - выведет ссылку на эти категории которые указаны.
    [cat:1] текст [/cat] или [cat:1,2,3] текст [/cat] - выведет текст внутри тегов если категория выбрана для новости.
     
    #2 PunPun, 4 ноя 2016
    Последнее редактирование: 4 ноя 2016
    • Нравится Нравится x 13
  3. Uralbox

    Команда форума VIP Кинотрафик v2

    Регистрация:
    25 окт 2015
    Сообщения:
    1.593
    Лучших ответов:
    0
    Рейтинги:
    +184 / 5 / -0
    Сюда бы оформление прикрутить. А для этого нужны теги условия вроде - [cat_today:1] {cat_today:1} [/cat_today]
     
    • Нравится Нравится x 3
  4. TopicStarter Overlay
    PunPun

    VIP Кинотрафик v2

    Регистрация:
    11 июн 2015
    Сообщения:
    7.292
    Лучших ответов:
    31
    Рейтинги:
    +3.892 / 96 / -0
    Третий хак делает возможным сделать сортировку новостей по доп полям в стандартном теге {sort}
    upload_2016-11-10_14-14-22.png
    ПРИНИМАЮ БЛАГОДАРНОСТИ:
    • Webmoney WMZ: Z228640084773
    • Webmoney WMR: R118095764291
    • Webmoney WMU: U218134219019
    • PayPal: [email protected]
    1. Открываем /engine/init.php находим:
    PHP:
    if( !$config['allow_comments'] ) unset($allowed_sort[3]);
    Выше вставляем:
    PHP:
    $allowed_sort array_merge($allowed_sort, array("year")); // вписываем сюда название доп полей которые нужны через запятую "year", "director"
    2. Открываем /engine/modules/functions.php находим:
    PHP:
    $allowed_sort = array ('date''rating''news_read''comm_num''title' );
    Меняем на:
    PHP:
    $allowed_sort = array ('date''rating''news_read''comm_num''title''year'); // вписываем сюда название доп полей которые нужны через запятую
    Находим:
    PHP:
    $soft_by_array = array (
    Ниже вставляем:
    PHP:
    'year' => array ( // так делаем для каждого поля, вместо year вписываем название нужного доп поля и вместо год то что будет показано пользователям сайта
        
    'name' => "год"'value' => "year"'direction' => "desc"'image' => ""
    ),
    3. Открываем /engine/engine.php находим (все разы что найдете):
    PHP:
    if (isset ( $_SESSION['dle_sort_
    Выше вставляем:
    PHP:
    if(isset ( $_SESSION['dle_sort_cat'] ) && in_array($_SESSION['dle_sort_cat'], array("year")))
    {
        if(
    in_array($_SESSION['dle_sort_cat'], array("year"))) // вписываем сюда название доп поле которые должны быть числами
            
    $news_sort_by "ABS(SUBSTRING_INDEX( SUBSTRING_INDEX( xfields,  '{$_SESSION['dle_sort_cat']}|', -1 ) ,  '||', 1 ))";
     
        if(
    in_array($_SESSION['dle_sort_cat'], array("director"))) // вписываем сюда название доп поле которые должны быть строками, если не нужны удалить две строчки эти
            
    $news_sort_by "SUBSTRING_INDEX( SUBSTRING_INDEX( xfields,  '{$_SESSION['dle_sort_cat']}|', -1 ) ,  '||', 1 )";
    }
    else
        if (isset ( 
    $_SESSION['dle_sort_cat'] )) $news_sort_by $_SESSION['dle_sort_cat'];
     
    #4 PunPun, 10 ноя 2016
    Последнее редактирование: 10 ноя 2016
    • Нравится Нравится x 8
  5. cblfkbot

    cblfkbot Новичок

    Регистрация:
    11 сен 2016
    Сообщения:
    42
    Лучших ответов:
    0
    Рейтинги:
    +8 / 0 / -0
    @Gameer, Привет. Подскажи как сделать в хаке с категориями, чтобы они не выводились ссылками?
     
  6. sas7110

    Команда форума VIP Кинотрафик v2

    Регистрация:
    25 окт 2015
    Сообщения:
    1.524
    Лучших ответов:
    0
    Рейтинги:
    +331 / 3 / -0
    Может так?
    [cat:1] текст [/cat] или [cat:1,2,3] текст [/cat] - выведет текст внутри тегов если категория выбрана для новости.
     
  7. Superwanget

    PRO Users

    Регистрация:
    16 фев 2017
    Сообщения:
    262
    Лучших ответов:
    0
    Рейтинги:
    +40 / 14 / -0
    в одной из php у меня вместо $tpl->compile( 'content' ); стоит $tpl2->compile( 'content' );
    как быть в этой ситуации?
     
  8. TopicStarter Overlay
    PunPun

    VIP Кинотрафик v2

    Регистрация:
    11 июн 2015
    Сообщения:
    7.292
    Лучших ответов:
    31
    Рейтинги:
    +3.892 / 96 / -0
    А еще на gameer.name вы сможете найти обновленные версии данных хаков
     
    • Нравится Нравится x 1
  9. stricken

    Команда форума VIP Кинотрафик v2

    Регистрация:
    10 сен 2016
    Сообщения:
    439
    Лучших ответов:
    0
    Рейтинги:
    +206 / 0 / -0
    А можно текст вывести, если категория НЕ выбрана для новости?
     
  10. funai

    funai Бывалый

    Регистрация:
    13 июл 2015
    Сообщения:
    121
    Лучших ответов:
    0
    Рейтинги:
    +7 / 0 / -0
    @PunPun, хак или модуль который сможет по тайтлу фильма парсить в доп поле id кинопоика. Это интересно для старых сайтов которые хотят перейти на онлайн, а id нет, в ручную прославлять нереально.
     
  11. shevket007

    shevket007 Местный

    Регистрация:
    13 фев 2016
    Сообщения:
    1.612
    Лучших ответов:
    0
    Рейтинги:
    +515 / 3 / -0
    Такой тут уже был хак, поищи, не поленись, за тебя искать не кто не будет
     
    • Нравится Нравится x 1
  12. funai

    funai Бывалый

    Регистрация:
    13 июл 2015
    Сообщения:
    121
    Лучших ответов:
    0
    Рейтинги:
    +7 / 0 / -0
    Да, была такая тема на форуме, но там все уже так напутано что хрен поймешь что и как делать. А за меня искать не надо, автор темы написал чтобы предлагали, - я предложил.
     
  13. aeneas

    Забанен

    Регистрация:
    12 мар 2016
    Сообщения:
    11.489
    Лучших ответов:
    10
    Рейтинги:
    +4.043 / 208 / -0
    у меня твой сайт не открывается
     
  14. Den

    Den
    Команда форума VIP Кинотрафик v2

    Регистрация:
    19 окт 2015
    Сообщения:
    2.129
    Лучших ответов:
    0
    Рейтинги:
    +1.004 / 6 / -0
    Ребусы любишь?

    [​IMG]
     
  15. DLEPlugins

    Кодер

    Регистрация:
    29 ноя 2015
    Сообщения:
    1.608
    Лучших ответов:
    8
    Рейтинги:
    +1.194 / 9 / -0
    • Нравится Нравится x 2
  16. aeneas

    Забанен

    Регистрация:
    12 мар 2016
    Сообщения:
    11.489
    Лучших ответов:
    10
    Рейтинги:
    +4.043 / 208 / -0
    у меня на одном шаблоне первый хак работает а на другом нет ) че за нах ) вроде в шаблоне никаких правок не делается, почему не робит )
     
  17. kinoliux

    kinoliux Бывалый

    Регистрация:
    26 мар 2016
    Сообщения:
    323
    Лучших ответов:
    1
    Рейтинги:
    +67 / 1 / -0
    После третьего хака сайт перестал работать.
    Ошибка MySQL в файле: \ engine \ modules \ show.short.php в строке 83
     
  18. Uralbox

    Команда форума VIP Кинотрафик v2

    Регистрация:
    25 окт 2015
    Сообщения:
    1.593
    Лучших ответов:
    0
    Рейтинги:
    +184 / 5 / -0
    На какой Dle ошибка эта?
     
  19. wawe

    PRO Users

    Регистрация:
    23 янв 2017
    Сообщения:
    3.549
    Лучших ответов:
    6
    Рейтинги:
    +1.574 / 404 / -0
    Подправь пожалуйста под Dle 15.0
     
  20. Bashmak

    PRO Users

    Регистрация:
    25 фев 2017
    Сообщения:
    642
    Лучших ответов:
    1
    Рейтинги:
    +167 / 25 / -0
    А что там в 15 версии сделали, что почти все модули перестали работать? У меня ещё руки до 15 не дошли посмотреть.
     
Похожие темы
  1. geony
    Ответов:
    25
    Просмотров:
    5.818
  2. ZerocooL
    Ответов:
    679
    Просмотров:
    76.679
  3. PunPun
    Ответов:
    12
    Просмотров:
    3.596
  4. film-box
    Ответов:
    5
    Просмотров:
    2.655
  5. byroot
    Ответов:
    73
    Просмотров:
    7.527
Загрузка...
Яндекс.Метрика