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

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

Ajax подгрузка custom в нужный блок

Тема в разделе "Хаки DLE", создана пользователем PunPun, 1 авг 2017.

01.08.17 в 19:58
16.02.19 в 11:16
37
3.303
3
  1. TopicStarter Overlay
    PunPun

    PunPun Гуру

    Регистрация:
    11 июн 2015
    Сообщения:
    7.314
    Лучших ответов:
    17
    Рейтинги:
    +3.889 / 40 / -83
    Реализуем подгрузку новостей по custom через ajax, что позволит увеличить скорость загрузки страницы сайта.

    1. В /engine/ajax/ создайте файл с названием custom.php в него вставьте этот код:
    PHP:
    <?php
    // by PunPun.name Back-End разработчик и SEO оптимизатор
    @error_reporting E_ALL E_WARNING E_NOTICE );
    @
    ini_set 'display_errors'true );
    @
    ini_set 'html_errors'false );
    @
    ini_set 'error_reporting'E_ALL E_WARNING E_NOTICE );

    define'DATALIFEENGINE'true );
    define'ROOT_DIR'substrdirname(  __FILE__ ), 0, -12 ) );
    define'ENGINE_DIR'ROOT_DIR '/engine' );

    include 
    ENGINE_DIR '/data/config.php';
    require_once 
    ENGINE_DIR '/classes/mysql.php';
    require_once 
    ENGINE_DIR '/data/dbconfig.php';
    require_once 
    ENGINE_DIR '/modules/functions.php';
    require_once 
    ENGINE_DIR '/classes/templates.class.php';

    dle_session();

    require_once 
    ENGINE_DIR '/modules/sitelogin.php';
    require_once 
    ROOT_DIR '/language/' $config['langs'] . '/website.lng';
    @
    header"Content-type: text/html; charset=" $config['charset'] );

    if(!
    $is_logged$member_id['user_group'] = 5;

    //################# Определение групп пользователей
    $user_group get_vars"usergroup" );
    if( ! 
    $user_group ) {
        
    $user_group = array ();
        
    $db->query"SELECT * FROM " USERPREFIX "_usergroups ORDER BY id ASC" );
        while ( 
    $row $db->get_row() ) {
            
    $user_group[$row['id']] = array ();
            foreach ( 
    $row as $key => $value $user_group[$row['id']][$key] = stripslashes($value);
        }
        
    set_vars"usergroup"$user_group );
        
    $db->free();
    }
    //################# Определение категорий и их параметры
    $cat_info get_vars"category" );
    if( ! 
    is_array$cat_info ) ) {
        
    $cat_info = array ();
        
    $db->query"SELECT * FROM " PREFIX "_category ORDER BY posi ASC" );
        while ( 
    $row $db->get_row() ) {
            
    $cat_info[$row['id']] = array ();
            foreach ( 
    $row as $key => $value $cat_info[$row['id']][$key] = stripslashes$value );
        }
        
    set_vars"category"$cat_info );
        
    $db->free();
    }
    define'TEMPLATE_DIR'ROOT_DIR '/templates/'.$config['skin']);
    $custom = isset($_POST["castom"]) && is_scalar($_POST["castom"]) ? trim(strip_tags(stripslashes($_POST["castom"]))) : false;
    if(
    $custom==false) return;
    if( 
    strpos$custom"custom" ) !== false ) {
        
    $custom "{".$custom."}";
        
    $custom preg_replace_callback"#\\{custom(.+?)\\}#i""custom_print"$custom );
        if(
    $custom !="") echo $custom;
    }
    ?>
    2. В табах на переключателях вставлять:
    HTML:
    data-ajaxc="custom id='1' template='shortstory'"
    - где внутри параметры custom без фигурных скобок и вместо двойных кавичек - одинарные.
    3. Там где должен выводится контент вставить:
    HTML:
    data-trigercajax="set"
    4. Перед тегом
    HTML:
    </body>
    вставить:
    Код:
    <script>
        $(function($){
            $("body").on("click", "[data-ajaxc]", function(){
                var $castom = $(this).attr("data-ajaxc");
                $.post(dle_root+"engine/ajax/custom.php", {castom:$castom}, function(data){
                    $("[data-trigercajax]").html(data);
                });
            })
        });
    </script>
    Пример конструкции:
    HTML:
    <span data-ajaxc="custom id='1' template='shortstory'">Таб 0</span>
    <span data-ajaxc="custom id='2' template='shortstory'">Таб 1</span>
    <span data-ajaxc="custom id='3' template='shortstory'">Таб 2</span>
    <div data-trigercajax="set">{custom id="1" template="shortstory"}</div>
    Автор: Личный блог Back-End разработчика и SEO оптимизатора
     
    • Нравится Нравится x 3
    • Лучший Лучший x 2
    • Полезно Полезно x 1
  2. Winston?!

    Winston?! Бывалый

    Регистрация:
    31 дек 2016
    Сообщения:
    953
    Лучших ответов:
    2
    Рейтинги:
    +73 / 10 / -12
    PunPun для каждого таба нужно создать custom с соотвествующим id??
     
  3. TopicStarter Overlay
    PunPun

    PunPun Гуру

    Регистрация:
    11 июн 2015
    Сообщения:
    7.314
    Лучших ответов:
    17
    Рейтинги:
    +3.889 / 40 / -83
    Winston?! это параметр custom! Читай в документации и не задавай тупых вопросов в конце концов.
     
    • Смешно Смешно x 1
  4. europa1988

    europa1988 Бывалый

    Регистрация:
    24 фев 2016
    Сообщения:
    595
    Лучших ответов:
    2
    Рейтинги:
    +112 / 11 / -6
    блин, прям то что искал) благодарю!)
     
  5. Winston?!

    Winston?! Бывалый

    Регистрация:
    31 дек 2016
    Сообщения:
    953
    Лучших ответов:
    2
    Рейтинги:
    +73 / 10 / -12
    Прошу помощи...
    Смотрите, есть блок с табами Edit fiddle - JSFiddle и при нажатии на таб нужно чтобы подгружался контент с определенной категории. Вот этот хак поможет это реализовать или нет?
    Вот как в моем блоке это реализовать, помогите плз
    HTML:
    <div class="trend-pst">
            <div class="pst-block">
                <div class="pst-block-head">
                    <h2 class="title-4"><strong>Популярные</strong> статьи</h2>
                    <div class="filters">
                        <ul class="filters-list-1 xs-hide">
                            <li><a href="#" class="active">All</a></li>
                            <li><a href="#" title="View all news in Lifestyle">Lifestyle</a></li><li><a href="#" title="View all news in Travel">Travel</a></li>
                            <li><a href="#" title="View all news in Business">Business</a></li>
                        </ul>
                      
                    </div>
                </div>
                <div class="pst-block-main">
                    <div class="col-row" id="main_posts2_output">
                        
                        <!-- Custom --> {custom template="block3" limit="4" cache="yes" order="rating" sort="desc"}
            
                    </div>
                </div>
                
                <div class="pst-block-foot">
                    <a id="main_posts2" href="http://base-road.ru/top.html">Другие новости</a>
                </div>
            
            </div>
        </div>
    Не пойму, что, никто этим хаком не пользовался?
     
    #5 Winston?!, 18 авг 2017
    Последнее редактирование модератором: 2 сен 2017
  6. TopicStarter Overlay
    PunPun

    PunPun Гуру

    Регистрация:
    11 июн 2015
    Сообщения:
    7.314
    Лучших ответов:
    17
    Рейтинги:
    +3.889 / 40 / -83
    Winston?! разжевано от а до я. Никто не виноват что ты не можешь действовать по инструкции.
     
    • Согласен Согласен x 1
  7. europa1988

    europa1988 Бывалый

    Регистрация:
    24 фев 2016
    Сообщения:
    595
    Лучших ответов:
    2
    Рейтинги:
    +112 / 11 / -6
    я кстати тоже нихрена не понял, какие табы?, че куда подключать?, это вообще работает с кастом?, допустим страница состоит из кастом блоков каруселей, как сделать чтобы они подгружались через ajax?
    Я лично думал это для этого модуль, мне нужно сделать так как реализовано на ivi на главной странице, чтобы карусели подгружались по мере прокрутки, можно данным модулем так сделать?
     
    • Нравится Нравится x 1
  8. byroot

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

    Регистрация:
    10 окт 2015
    Сообщения:
    10.517
    Лучших ответов:
    38
    Рейтинги:
    +4.306 / 36 / -39
    Вот вам простой пример применения этого:
    HTML:
    <div class="sect">
       <div class="sect-t fx-row icon-r">
           <div class="st-left">
               <div class="st-capt">Фильмы<span class="fa fa-chevron-right"></span></div>
               <div class="st-tabs">
                   <span class="current" data-ajaxc="custom category='1,3' template='shortstory' from='0' limit='12'">Ajax кастом</span>
                   <span data-ajaxc="custom category='1,3' template='shortstory' from='0' limit='6'">Ajax кастом</span>
                   <span data-ajaxc="custom category='1,3' template='shortstory' from='0' limit='3'">Ajax кастом</span>
               </div>
           </div>
           <a class="st-right" href="#">Еще<span class="fa fa-align-right"></span></a>
       </div>
       <div class="sect-c floats clearfix">
           {custom category="1,3" template="shortstory" from="0" limit="12" cache="no"}
       </div>
    </div>
    
    Результат табов:
    2017-08-19_00-25-21.png


    Код выше - из шаблона от redissx!
     
    • Полезно Полезно x 2
    • Нравится Нравится x 1
  9. TopicStarter Overlay
    PunPun

    PunPun Гуру

    Регистрация:
    11 июн 2015
    Сообщения:
    7.314
    Лучших ответов:
    17
    Рейтинги:
    +3.889 / 40 / -83
    europa1988 что из заголовка не ясно и описания не ясно? Что по клику на текст / таб / ссылку будет подгружаться новости через AJAX с кода custom? Так сложно написано? =\
     
    • Согласен Согласен x 1
  10. europa1988

    europa1988 Бывалый

    Регистрация:
    24 фев 2016
    Сообщения:
    595
    Лучших ответов:
    2
    Рейтинги:
    +112 / 11 / -6
    Вот щас понял че это такое
    а можно сделать как я написал? чтобы автоподгрузка по мере прокрутки была?
     
    • Нравится Нравится x 1
  11. Kartoonmore

    Kartoonmore Зелёный

    Регистрация:
    5 авг 2017
    Сообщения:
    2
    Лучших ответов:
    0
    Рейтинги:
    +0 / 0 / -0
    Всем привет. Подскажите как заставить работать owl carousel в этих табах при переключении? owl carousel 1.3.3
     
  12. byroot

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

    Регистрация:
    10 окт 2015
    Сообщения:
    10.517
    Лучших ответов:
    38
    Рейтинги:
    +4.306 / 36 / -39
    никак. если только не переделать owl carousel в табы, но это лишние заморочки и никому не нужное занятие.
     
    • Нравится Нравится x 1
  13. Kartoonmore

    Kartoonmore Зелёный

    Регистрация:
    5 авг 2017
    Сообщения:
    2
    Лучших ответов:
    0
    Рейтинги:
    +0 / 0 / -0
    А подскажите пожалуйста, как сделать, чтобы при включенной навигации в custom при переходе на вторую страницу, остальные вкладки автоматом тоже переходили на вторую страницу?
     
  14. Defoz

    Defoz Местный

    Регистрация:
    10 апр 2016
    Сообщения:
    1.716
    Лучших ответов:
    3
    Рейтинги:
    +208 / 43 / -28
    Все равно не пойму как сделать так, что бы плеер подгружался только после нажатия на таб. Создал custom.php, вставил перед </body> скрипт , и сделал вот так
    Код:
    <div class="tabs-box ignore-select">
    <div class="tabs-sel">
    <span>Плеер 1</span>
    [xfgiven_player_2]<span>Плеер 2</span>[/xfgiven_player_2]
    [xfgiven_subs]<span data-ajaxc="custom id='1' template='shortstory'">Субтитры</span>[/xfgiven_subs]
    </div>
    <div class="tabs-b online_a">
    {hdlight-player}
    </div>
    [xfgiven_player_2]<div class="tabs-b online_a">
    <iframe width="560" height="400" src="[xfvalue_player_2]" frameborder="0" allowfullscreen></iframe>
    </div>[/xfgiven_player_2]
    [xfgiven_subs]<div class="tabs-b online_a" data-trigercajax="set">
    <iframe width="560" height="400" src="[xfvalue_subs]" frameborder="0" allowfullscreen></iframe>
    </div>[/xfgiven_subs]
    Оно все равно продолжает грузить весь контент и плеер вообще пропал... Подскажите может что то не так сделано?
     
  15. byroot

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

    Регистрация:
    10 окт 2015
    Сообщения:
    10.517
    Лучших ответов:
    38
    Рейтинги:
    +4.306 / 36 / -39
    вот у тебя все табы и выводятся:
    PHP:
    <div class="tabs-b online_a">
    {
    hdlight-player}
    </
    div>
    [
    xfgiven_player_2]<div class="tabs-b online_a">
    <
    iframe width="560" height="400" src="[xfvalue_player_2]" frameborder="0" allowfullscreen></iframe>
    </
    div>[/xfgiven_player_2]
    [
    xfgiven_subs]<div class="tabs-b online_a" data-trigercajax="set">
    <
    iframe width="560" height="400" src="[xfvalue_subs]" frameborder="0" allowfullscreen></iframe>
    </
    div>[/xfgiven_subs]
    на аякс таб у тебя вынесен один непонятный параметр только первой новости и с шаблоном краткой новости, но более ничего нет!
     
  16. Defoz

    Defoz Местный

    Регистрация:
    10 апр 2016
    Сообщения:
    1.716
    Лучших ответов:
    3
    Рейтинги:
    +208 / 43 / -28
    byroot ну так значит никак не вывести загрузку фрейма, только после нажатие на таб?
     
  17. byroot

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

    Регистрация:
    10 окт 2015
    Сообщения:
    10.517
    Лучших ответов:
    38
    Рейтинги:
    +4.306 / 36 / -39
    Этот хак специально для этого и сделан! После правильной установки и его настройки - всё будет работать как часики.
     
  18. Defoz

    Defoz Местный

    Регистрация:
    10 апр 2016
    Сообщения:
    1.716
    Лучших ответов:
    3
    Рейтинги:
    +208 / 43 / -28
    byroot я для этого и пишу, что бы помогли мне... я скинул код как у меня выводятся табы и фреймы, все остальное я уже сделал, то есть 1 и 4й пункт я выполнил, остальное я не могу понять как сделать. Подскажи о великий гуру как и что мне написать...
     
  19. byroot

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

    Регистрация:
    10 окт 2015
    Сообщения:
    10.517
    Лучших ответов:
    38
    Рейтинги:
    +4.306 / 36 / -39
    Defoz вот упрощенный код кторый стоит у меня на сайте:
    HTML:
        <div class="ftabs tabs-box">
                <div class="tabs-sel st-tabs">
                            [xfgiven_filmonline]<span data-ajaxc="custom id='{news-id}' template='fullpl1'">Плеер онлайн</span>
                            [/xfgiven_filmonline]
                    <span data-ajaxc="custom id='{news-id}' template='fulltr'">Трейлер</span>
                </div>
            <div class="fplay video-box" data-trigercajax="set">
                        [xfgiven_filmonline]{custom id='{news-id}' template='fullpl1'}[/xfgiven_filmonline]
                        [xfnotgiven_filmonline]{custom id='{news-id}' template='fulltr'}[/xfnotgiven_filmonline]
            </div>
    
        </div>
    по аналогии можно подправить и любые табы, но это не 1-2 минуты занимает, у меня под мои табы на сайте пришлось так же править стили табов и JS код табов, чтобы они работали без косяков. Какие именно правки были - этого не вспомню, но обычно все шаблоны индивидуальны.

    Если не понятно как его настроить - то делай пока всё остальное, потом уже и это можешь настроить после того, как будет побольше знаний кода шаблона и как и что в нем устроено.
     
  20. Defoz

    Defoz Местный

    Регистрация:
    10 апр 2016
    Сообщения:
    1.716
    Лучших ответов:
    3
    Рейтинги:
    +208 / 43 / -28
    byroot экспериментировал вот только что на локалке... подгрузка идет но все равно при загрузке страницы видно что плеер все равно грузится а потом толи заново подгружается толи остальную часть, точно я не понял...
     
Похожие темы
  1. europa1988
    Ответов:
    0
    Просмотров:
    558
  2. Луна
    Ответов:
    17
    Просмотров:
    752
  3. Winston?!
    Ответов:
    3
    Просмотров:
    290
  4. MarkOff
    Ответов:
    7
    Просмотров:
    267
Загрузка...
Яндекс.Метрика