Плагинация. Бесконечная лента
Пишу на 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 и в шаблонизаторе.