DlePlugin » بلاگ » آموزشی » ساختار قالب دیتالایف انجین: راهنمای کامل فایل‌های TPL
آموزشی

ساختار قالب دیتالایف انجین: راهنمای کامل فایل‌های TPL

ساختار قالب دیتالایف انجین: راهنمای کامل فایل‌های 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 قالب دیتالایف مراجعه کنید.

روال پیشنهادی توسعه قالب

  1. ابتدا main.tpl و شبکه اصلی صفحه را بسازید.
  2. کارت مطلب و صفحه کامل را با داده واقعی آزمایش کنید.
  3. حالت‌های بدون تصویر، عنوان بلند و متن خالی را ببینید.
  4. فرم‌ها و عملیات AJAX را با حساب مهمان و عضو بررسی کنید.
  5. نمای موبایل، RTL، فوکوس صفحه‌کلید و خطاهای کنسول را آزمایش کنید.
  6. در پایان کش را پاک و صفحه‌های اصلی را دوباره کنترل نمایید.

جمع‌بندی

کلید ساخت قالب قابل نگهداری، شناخت محدوده هر فایل است. فایل‌های تکرارشونده باید فقط آیتم را تولید کنند، wrapper و عنوان بخش در فایل والد قرار بگیرد و قطعه‌های مشترک به modules منتقل شوند. با این تفکیک، قالب سریع‌تر توسعه پیدا می‌کند و تغییر یک بخش کمتر روی صفحه‌های دیگر اثر ناخواسته می‌گذارد.

سوالات متداول
<code>main.tpl</code> (اسکلت کلی)، <code>shortstory.tpl</code> (نمایش کوتاه مطلب در فهرست‌ها)، <code>fullstory.tpl</code> (مطلب کامل)، به‌همراه فایل‌های اختیاری مثل <code>relatednews.tpl</code>، <code>addcomments.tpl</code> و <code>static.tpl</code>.
<code>shortstory.tpl</code> برای کارت مطلب در صفحه‌ی اصلی، دسته و آرشیو استفاده می‌شود و <code>fullstory.tpl</code> فقط در صفحه‌ی کامل خود مطلب. تگ‌های در دسترس این دو کمی متفاوت است.
فهرست کامل تگ‌ها در مستندات رسمی دیتالایف و بخش «قالب‌بندی» پنل مدیریت آمده است. تگ‌ها با <code>{...}</code> و بلوک‌های شرطی با <code>[...]...[/...]</code> نوشته می‌شوند.
بلوک‌های شرطی توسط هسته یا پلاگین ثبت می‌شوند؛ در قالب کافی است بین <code>[tag]</code> و <code>[/tag]</code> محتوا بگذارید تا فقط در شرط درست نمایش داده شود. تعریف بلوک دلخواه از سمت کد انجام می‌شود.
برای تغییرات ساختار و ظاهر، آشنایی با HTML/CSS کافی است. تگ‌های دیتالایف جایگزین متن می‌شوند و منطق پیچیده‌ای ندارند؛ فقط تغییرات را روی نسخه‌ی آزمایشی امتحان کنید.

دیدگاه‌ها

پرسش یا نکته‌ای درباره‌ی این مطلب دارید؟ بنویسید تا پاسخ بدهیم.

دیدگاه خود را بنویسید

بدون ثبت‌نام هم می‌توانید نظر بدهید. برای پیگیری پاسخ‌ها، حساب کاربری بسازید.

اگر کد خوانا نیست، برای بروزرسانی روی تصویر کلیک کنید