Плагинация. Бесконечная лента

Пишу на smarty плагинацию, всё получилось и работает, но мне нужно чтобы шаблонизатор smarty отображал, а не php. Вот файл ajax_area.php

<?php
header("Content-type: application/json");
ini_set("display_errors", "true");
ini_set("display_startup_errors", "true");
ini_set("session.cache_expire", 18000);
ini_set("session.gc_maxlifetime", 18000);
ini_set("session.bug_compat_warn", "off");
error_reporting(E_ALL ^ E_NOTICE ^ E_DEPRECATED);
@session_start();

// ПОДКЛЮЧАЕМ БАЗУ ДАННЫХ
require_once "../inc/db.php";

require_once("../inc/class/class.users.php");
$users = new users();

$save = true;
$error = true;

/** CHECK REQUIRED FIELDS */
if ($_POST["offset"] === '') {
    $save = false;
} elseif ($_POST["current"] === '') {
    $save = false;
}

$limit = 10;


if ($save):

    ob_start();

    $offSet = (int)$_POST["offset"];
    $currentSet = (int)$_POST["current"];
    $userId = (int)$_POST["userId"];

    $offSet = (empty($offSet)) ? 0 : $offSet;
    $start = ($offSet !== 0) ? $offSet * $limit - $limit : 0;

    $sqlTotal = "SELECT COUNT(*) as total FROM users INNER JOIN users_area_profiles ON users.area_id=users_area_profiles.id where users_area_profiles.id = " . $userId;
    $usersSqlTotal = $mysqli->query($sqlTotal);
    foreach ($usersSqlTotal as $tt):
        $usersTT = $tt['total'];
    endforeach;

    $sql = "SELECT users.*, users.id as sort_id, users_area_profiles.* FROM users INNER JOIN users_area_profiles ON users.area_id=users_area_profiles.id where users_area_profiles.id = " . $userId . " LIMIT " . $start . ", ".$limit;
    $users = $mysqli->query($sql);

    $nowStatus = $currentSet * 10;
    if($usersTT <= $nowStatus){
        $users = false;
    }

    if ($users): $error = false; foreach ($users as $user): ?>
        <div class=" next-box-news-body w100  mb20 next-text-white-news  rounded shadow">
            <div class="row">
                <div class="col-4" style="text-align: center; display: block">
                    <a class="next-text-black-md" style="text-shadow: 1px 2px 5px rgba(255,1,200,0.75)"
                       href="/users/user_<?= $user["sort_id"] ?>.html"
                       target="_blank"><?php if ($user["name"]): ?> <?= $user["name"] ?>

                        <?php else: ?>
                            <?= $user["login"] ?>
                        <?php endif; ?></a>

                    <?php if ($user["thumb"]): ?>
                        <a href="/users/user_<?= $user["sort_id"] ?>.html" target="_blank">
                            <img class="next-box-img" src="/<?= $user["thumb"] ?>" height="100"></a>
                    <?php else : ?>
                        <br/><br/>
                        <h4 style="text-align: center">Нет фото</h4>
                    <?php endif; ?>

                    <?php if ($user["vipc"]): ?>
                        <div class="next-text-white"> VIP</div>
                    <?php endif; ?>
                </div>


                <div class="col-8">
                    <h9 class="next-text-black-md" style="line-height: 33px">ИД АНКЕТЫ <?= $user["sort_id"] ?></h9>

                    <?php if ($user["sity_id"] != "0"): ?>

                        <?php foreach ($user["sity_id"] as $s): ?>

                            <p style="text-shadow: 1px 2px 5px rgba(80,0,64,0.75)"><?= $s["name"] ?></p>

                            <p style="text-shadow: 1px 2px 5px rgba(135,0,107,0.75)">
                                <?php if ($user["user_metro"]): ?> м.<?= $s["user_metro"] ?><?php endif; ?>
                            </p>

                            <p style="text-shadow: 1px 2px 5px rgba(193,0,156,0.75)"><?= $user["mobile_txt"] ?></p>

                            <p class="next-text-black-md">
                                <?php if ($user["act_status"] == "y"): ?>
                                    <i style="text-shadow: 1px 2px 5px rgba(53,196,1,0.75)">Анкета активирована</i>
                                <?php else: ?>
                                    <i style="text-shadow: 1px 2px 5px rgba(196,92,1,0.75)">Анкета на проверке</i>
                                <?php endif; ?>
                            </p>
                        <?php endforeach; ?>
                    <?php else: ?>
                        Город не выбран
                    <?php endif; ?>


                    <?php if ($user["vipstopday"]): ?>
                        <?php $vipEnd = round(((((strtotime($user["vipc"])) - time()) / 24) / 60) / 60); ?>

                        <h7 class="next-text-gray">Дней до окончания ВИП - <?= $vipEnd ?>дн.</h7>
                        <br/><br/>
                    <?php else: ?>
                        <p class="next-text-black-md" style="text-shadow: 1px 2px 5px rgba(196,1,1,0.75)">
                            Vip статус отсутствует</p>
                        <br/>
                    <?php endif; ?>


                    <a href="/users/user_<?= $user["sort_id"] ?>.html"
                       target="_blank"
                       style="color: rgba(208,208,208,0.8); text-shadow: 0 0 1px rgb(0,0,0)">Редактировать</a>
                </div>
            </div>
        </div>


    <?php endforeach; else: ?>
        <p class="next-text-black-md"> В этой категории анкеты не найдены .</p>
    <?php endif;

    $wrapperHtml = ob_get_contents();
    ob_clean();

    /* JSON */
    if ($error):
        $json["error"] = true;
        $json["content"] = '';
    else:
        $json["error"] = false;
        $json["content"] = $wrapperHtml;
    endif;

    echo json_encode($json);

endif;
?>

Вот файл index.tpl

<div id="load_promoted_spinnerx" class="col-12 load-more-spinner">

    </div>

    <div id="row_bitches">
    
    </div>

    <div id="areaId" style="display: none">{$area_id}</div>
    <div id="offSet" style="display: none">0</div>


{literal}
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.js" integrity="sha512-n/4gHW3atM3QqRcbCn6ewmpxcLAHGaDjpEBu4xZd47N0W2oQ+6q7oc3PXstrJYXcbNU1OHdQ1T7pAP+gi5Yu8g==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>

    <script>
        $("#load_promoted_spinnerx").hide();
        let page = 0;
        $(document).ready(function () {
            let inProgress = false;
            $(window).scroll(function () {

                if (inProgress) {
                    return false;
                }

                let btc = $("#row_bitches_footer");

                let wt = $(window).scrollTop();
                let wh = $(window).height();
                let et = btc.offset().top;
                let eh = btc.outerHeight();
                let dh = $(document).height();

                if (wt + (wh/5) >= et){

                    console.log('wt - ' + wt +'-wh-' + wh +'-et-' + et +' -eh-' + eh +'-dh-' + dh +'---');

                    $("#load_promoted_spinnerx").show();
                    let ofs = $("#offSet");
                    let areaId = $("#areaId").text();
                    let offSet = ofs.text();

                    page++;

                    $.ajax({
                        type: "POST",
                        data: {userId: areaId, offset: offSet, current: offSet},
                        url: "../ajax_page/ajax_area.php",
                        cache: false,
                        dataType: 'JSON',
                        beforeSend: function () {
                            inProgress = true;
                        },
                        success: function (data) {
                            let obj = data['content'];

                            if (obj !== '') {
                                setTimeout(function () {
                                    $("#row_bitches").append(obj);
                                    $("#load_promoted_spinnerx").hide();
                                    inProgress = false;
                                }, 300);
                            }
                        }
                    });
                    ofs.text(page);
                }
            });
        });
    </script>



{/literal}

Как это перевести в smarty. Это работает так: когда мы долистываем до конца анкет, подгружаются ещё анкеты и так пока они не закончатся. А то получается, так, что мне нужно редактировать данные и в php и в шаблонизаторе.


Ответы (0 шт):