ساختار قالب دیتالایف انجین: راهنمای کامل فایلهای TPL
قالب دیتالایف انجین از چند فایل TPL مستقل تشکیل میشود. هر فایل مسئول بخش مشخصی از خروجی است و موتور قالب، تگهای داخل آن را با داده واقعی جایگزین میکند. این معماری ساده است، اما اگر ندانید هر فایل کجا و چند بار رندر میشود، نتیجه میتواند شامل بلوکهای تکراری، HTML نامعتبر و بارگذاری بیدلیل فایلها باشد.
نقشه اصلی فایلهای قالب
پوشه هر قالب در مسیر templates/نام-قالب/ قرار دارد. فایلهای زیر هسته بیشتر قالبها را میسازند:
main.tpl: اسکلت کلی صفحه، هدر، محتوای اصلی و فوترshortstory.tpl: کارت یا ردیف مطلب در فهرستهاfullstory.tpl: صفحه کامل یک مطلبrelatednews.tpl: یک آیتم از مطالب مرتبطcomments.tpl: خروجی یک دیدگاهaddcomments.tpl: فرم ثبت دیدگاهuserinfo.tpl: نمای پروفایل کاربرmodules/*.tpl: قطعههای قابل استفاده مجدد مانند منو و سایدبار
main.tpl چه مسئولیتی دارد؟
این فایل پوسته کل صفحه را میسازد. تگ {headers} اطلاعات head و متاتگهای لازم را وارد میکند، {content} خروجی بخش جاری را نشان میدهد و {AJAX} اسکریپتهای تعاملی دیتالایف را بارگذاری میکند. حذف هرکدام ممکن است به سئو، فرمها یا عملیات AJAX آسیب بزند.
<!doctype html>
<html lang="fa" dir="rtl">
<head>
{headers}
</head>
<body>
{include file="modules/header.tpl"}
<main>{content}</main>
{include file="modules/footer.tpl"}
{AJAX}
</body>
</html>
برای مسیر فایلهای قالب از /templates/DLEMarket استفاده کنید. نوشتن نام قالب به صورت ثابت باعث میشود پس از کپی یا تغییر نام پوشه، تصویر و فایل CSS از کار بیفتد.
shortstory.tpl و fullstory.tpl را از هم جدا نگه دارید
فایل shortstory برای خروجی تکرارشونده ساخته شده است. هر چیزی که در آن قرار میدهید به تعداد مطالب صفحه تکرار میشود. بنابراین کد کارت باید سبک باشد و اسکریپت مستقل یا شناسه HTML تکراری در آن قرار نگیرد.
fullstory فقط برای صفحه کامل اجرا میشود و جای مناسب عنوان اصلی، تصویر شاخص، متن کامل، برچسبها و بلوک دیدگاه است. اگر یک بخش فقط در مطلب کامل لازم است، قرار دادن آن در shortstory هم حجم فهرست را بیشتر میکند و هم احتمال خطای چیدمان را بالا میبرد.
تگهای شرطی چگونه کار میکنند؟
دیتالایف مجموعهای از شرطهای آماده دارد که بدون PHP میتوان با آنها خروجی را کنترل کرد:
[available=main]فقط صفحه اصلی[/available]
[available=showfull]فقط صفحه مطلب کامل[/available]
[not-available=search]همهجا به جز جستجو[/not-available]
[group=1]فقط مدیران[/group]
[not-group=5]فقط کاربران واردشده[/not-group]
برای شرطهای پیچیده، بلوک را به چند شرط ساده تقسیم کنید. تودرتو کردن بیرویه خوانایی قالب را کم میکند و عیبیابی را دشوارتر میسازد.
چرا مطالب مرتبط یا دیدگاهها تکرار میشوند؟
relatednews.tpl برای هر مطلب مرتبط یک بار رندر میشود. این فایل باید فقط یک آیتم، برای مثال یک li، داشته باشد. عنوان بخش و عنصر ul باید در fullstory.tpl قرار بگیرند. همین قاعده برای comments.tpl نیز برقرار است؛ هر فایل comments نمای یک دیدگاه است، نه کل بخش دیدگاهها.
<!-- relatednews.tpl -->
<li><a href="{link}">{title}</a></li>
<!-- fullstory.tpl -->
[related-news]
<section class="related">
<h2>مطالب مرتبط</h2>
<ul>{related-news}</ul>
</section>
[/related-news]
تصویر شاخص و فیلدهای اضافی
برای پروژه حرفهای بهتر است تصویر شاخص در یک فیلد اضافی مشخص ذخیره شود. این روش از وابستگی کارت به اولین تصویر متن جلوگیری میکند و به شما اجازه میدهد تصویر، متن جایگزین و بندانگشتی را مستقل مدیریت کنید.
تگهای [xfgiven_name] و [xfnotgiven_name] حالت وجود یا نبود مقدار را کنترل میکنند. همیشه برای حالت خالی خروجی جایگزین در نظر بگیرید تا شبکه کارتها به هم نریزد.
ماژولها را برای قطعههای تکراری بسازید
منو، جستجو، سبد خرید و بخش تماس معمولاً در چند صفحه استفاده میشوند. آنها را در پوشه modules نگه دارید و با include فراخوانی کنید. این کار تغییرات بعدی را متمرکز میکند و احتمال تفاوت ناخواسته میان صفحهها را کاهش میدهد.
RTL و عملکرد را از ابتدا در معماری لحاظ کنید
اگر قالب فارسی است، ویژگیهای منطقی CSS مانند margin-inline-start و inset-inline-end هزینه نگهداری را کمتر میکنند. مقاله راستبهچپسازی قالب دیتالایف خطاهای رایج جهت، آیکن و فرم را با نمونه توضیح میدهد.
همچنین فایلهای CSS و JavaScript را فقط در صفحهای بارگذاری کنید که مصرف میشوند. برای بررسی اثر تصویر، فونت و اسکریپت روی تجربه کاربر به راهنمای Core Web Vitals قالب دیتالایف مراجعه کنید.
روال پیشنهادی توسعه قالب
- ابتدا main.tpl و شبکه اصلی صفحه را بسازید.
- کارت مطلب و صفحه کامل را با داده واقعی آزمایش کنید.
- حالتهای بدون تصویر، عنوان بلند و متن خالی را ببینید.
- فرمها و عملیات AJAX را با حساب مهمان و عضو بررسی کنید.
- نمای موبایل، RTL، فوکوس صفحهکلید و خطاهای کنسول را آزمایش کنید.
- در پایان کش را پاک و صفحههای اصلی را دوباره کنترل نمایید.
جمعبندی
کلید ساخت قالب قابل نگهداری، شناخت محدوده هر فایل است. فایلهای تکرارشونده باید فقط آیتم را تولید کنند، wrapper و عنوان بخش در فایل والد قرار بگیرد و قطعههای مشترک به modules منتقل شوند. با این تفکیک، قالب سریعتر توسعه پیدا میکند و تغییر یک بخش کمتر روی صفحههای دیگر اثر ناخواسته میگذارد.