Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Шаблоны (TPL) » Как оптимально вывести новости в DLE 13x?

Как оптимально вывести новости в DLE 13x?


     02.08.2020    dle 13x, информер, новости    Шаблоны (TPL), Модули    178

вопрос
Немного нубский вопрос, но последний раз работал с новостями в DLE в версии 9-10) В те временя юзал сторонние модули, S Blocks by Sander, но вроде как DLE неплохо развилась и сторонний модуль не нужен для такой тривиальной задаче и уж точно не даст буста по производительности.

Нужно вывести сквозной (по всем страницам сайта) новостной блок (информер c заголовками), как показано на скрине
Как оптимально вывести новости в DLE 13x?


Как лучше сделать чтобы минимально потерять по скорости формирования контента, минимизировать запросы к БД.
Стоит ли писать AJAX скрипт для подругзки скрытых категорий (турниры, блоги) или можно скрыть через display:none?

Ответа пока нет


8 комментариев

UsurpatorVaticana
Юзер

UsurpatorVaticana - 2 августа 2020 21:49 -

Такс, в кастом есть кэш в принципе можно юзать, а реализовано ли в дле обновление контента через ajax, такие же параметры которые в статичном шаблоне задаю кастому, можно куда то отправить через ajax и получить ответ?

TeraMoune
Эксперт

TeraMoune - 2 августа 2020 22:24 -

Нет, никаких ajax обновлений не предусмотрено. Да дле изменилась но пользовательский вывод новостей остался прежним, кэширование было еще в те времена 9-10 версии, а изменения затрагивали в основном параметры дабы добавить возможностей выборке новостей. Но в целом и глобально разницы никакой нету, так что пользуйтесь по прежнему модулями и пишите ajax обработчики для обновлений.

UsurpatorVaticana
Юзер

UsurpatorVaticana - 2 августа 2020 22:51 -

TeraMoune, а как кастом по производительности, стоит доверится или лучше всунуть в сборщик свой фрагмент с парой селиктов, либо модуль взять сторонний?

TeraMoune
Эксперт

TeraMoune - 2 августа 2020 23:05 -

Без понятия, пробуйте, смотрите. Замеряйте время работы и нагрузку и делайте выводы, а после решайте что лучше.

TechnicalMan
Юзер

TechnicalMan - 2 августа 2020 22:57 -

Я б через custom сделал и закэшировал, запросы ерундовые, вряд ли они дадут ощутимую нагрузку, если у вас сервер не на 32мб памяти, чё заморачиваться на таком, контента на выходе пару килобайт

UsurpatorVaticana
Юзер

UsurpatorVaticana - 2 августа 2020 23:00 -

TechnicalMan, да чтоб оно было в категории то даже не думал бы, а так для всех страниц, а скорость сайта у нас же один из топ параметров сейчас
да и не знаю как кастом устроен, можно ради пару ерундовых запросов придётся гору кодя кастома тянуть

TechnicalMan
Юзер

TechnicalMan - 3 августа 2020 16:22 -

Тег custom формирует гору кода только при первом обращении, если включено кэширование, дальше работает кэш

UsurpatorVaticana
Юзер

UsurpatorVaticana - 3 августа 2020 22:38 -

AJAX для потомков
@error_reporting ( E_ALL ^ E_WARNING ^ E_DEPRECATED ^ E_NOTICE );
@ini_set ( 'error_reporting', E_ALL ^ E_WARNING ^ E_DEPRECATED ^ E_NOTICE );
@ini_set ( 'display_errors', true );
@ini_set ( 'html_errors', false );

define( 'DATALIFEENGINE', true );
define( 'ROOT_DIR', substr( dirname(  __FILE__ ), 0, -19 ) );
define( 'ENGINE_DIR', ROOT_DIR . '/engine' );

if(!(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') ) {    
   	header( "HTTP/1.1 403 Forbidden" );
	header ( 'Location: ../../../' );
	die( "Hacking attempt!" );
}

require_once (ENGINE_DIR . '/classes/plugins.class.php');
require_once (DLEPlugins::Check(ENGINE_DIR . '/modules/functions.php'));

@header( "Content-type: text/html; charset=" . $config['charset'] );

if(!is_numeric($_GET['cat_id'])) die( "Hacking attempt!" );

    $CacheConfig  = array(
        'Prefix' => 'custom_news_ajax_catid_',
        'Suffix' => true,
        'Name' => $_GET['cat_id'] 
    );

    //проверим есть ли кэш для текущего запроса
    $HTML_news_Cache = false;
    $HTML_news_Cache = dle_cache($CacheConfig['Prefix'], $CacheConfig['Name'] . $config['skin'], $CacheConfig['Suffix']);
    //если кэша нет
    if(!$HTML_news_Cache) {
        $query = $db->query( "
                            SELECT
                                p.id, p.date, p.title, c.alt_name as category, p.alt_name
                            FROM
                                dle_post as p,
                                dle_category as c
                            WHERE
                                c.id = p.category AND
                                category = {$_GET['cat_id']}
                            ORDER BY
                                date DESC, id DESC
                            LIMIT 5                    
        "); //закрылся Запрос
                       
        while ( $row = $db->get_row( $query ) ) {
            $HTML_news_Cache .= "<div class=\"news\"><a href=\"/{$row['category']}/{$row['id']}-{$row['alt_name']}.html\">{$row['title']}</a><span>" . date( 'd.m.Y', strtotime($row['date']) ) . "</span></div>";
        }
        //сохраним $HTML_news в кэш
        create_cache($CacheConfig['Prefix'], $HTML_news_Cache, $CacheConfig['Name'] . $config['skin'], $CacheConfig['Suffix']);
    } //закрылся if нет кэша
echo $HTML_news_Cache;

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх