Редактор темы

Хаки для datalife engine

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

PunPun

VIP Кинотрафик v2
Регистрация
11 Июн 2015
Сообщения
7.448
Рейтинг реакций
3.194
Баллы
113
1/3
Автор темы
Тема с хаками для 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, $db, true);
}, $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 > 0 ? (($curdate == true) ? "+" : "") . $cache_cat_news : "");
}
Использование:
В нужном месте доступны теги:
{cat_all:1} или {cat_all:1,2,3,4} - выведет количество новостей за все время с этих категорий.
{cat_today:1} или {cat_today:1,2,3,4} - выведет количество новостей за сегодня с этих категорий.
 
Последнее редактирование:
Автор темы
Второй хак разделение категорий на выводы, как это сделано на 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] - выведет текст внутри тегов если категория выбрана для новости.
 
Последнее редактирование:
Использование:
В нужном месте доступны теги:
{cat_all:1} или {cat_all:1,2,3,4} - выведет количество новостей за все время с этих категорий.
{cat_today:1} или {cat_today:1,2,3,4} - выведет количество новостей за сегодня с этих категорий.

Сюда бы оформление прикрутить. А для этого нужны теги условия вроде - [cat_today:1] {cat_today:1} [/cat_today]
 
Автор темы
Третий хак делает возможным сделать сортировку новостей по доп полям в стандартном теге {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'];
 
Последнее редактирование:
@Gameer, Привет. Подскажи как сделать в хаке с категориями, чтобы они не выводились ссылками?
 
Может так?
[cat:1] текст [/cat] или [cat:1,2,3] текст [/cat] - выведет текст внутри тегов если категория выбрана для новости.
 
в одной из php у меня вместо $tpl->compile( 'content' ); стоит $tpl2->compile( 'content' );
как быть в этой ситуации?
 
Автор темы
А еще на gameer.name вы сможете найти обновленные версии данных хаков
 
А можно текст вывести, если категория НЕ выбрана для новости?
 
@PunPun, хак или модуль который сможет по тайтлу фильма парсить в доп поле id кинопоика. Это интересно для старых сайтов которые хотят перейти на онлайн, а id нет, в ручную прославлять нереально.
 
@PunPun, хак или модуль который сможет по тайтлу фильма парсить в доп поле id кинопоика. Это интересно для старых сайтов которые хотят перейти на онлайн, а id нет, в ручную прославлять нереально.
Такой тут уже был хак, поищи, не поленись, за тебя искать не кто не будет
 
Такой тут уже был хак, поищи, не поленись, за тебя искать не кто не будет

Да, была такая тема на форуме, но там все уже так напутано что хрен поймешь что и как делать. А за меня искать не надо, автор темы написал чтобы предлагали, - я предложил.
 
у меня твой сайт не открывается
Ребусы любишь?

0ee652801dc9db250932bc45ed4b4032.jpg
 
у меня на одном шаблоне первый хак работает а на другом нет ) че за нах ) вроде в шаблоне никаких правок не делается, почему не робит )
 
После третьего хака сайт перестал работать.
Ошибка MySQL в файле: \ engine \ modules \ show.short.php в строке 83
 
Второй хак разделение категорий на выводы, как это сделано на kinogo.club Альтернатива "плохому" варианту от @DomiTori.
Посмотреть вложение 8943
Открываем /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] - выведет текст внутри тегов если категория выбрана для новости.
Подправь пожалуйста под Dle 15.0
 

Похожие темы Последние темы Популярные темы

Назад
Сверху