چگونه قالب سفارشی در دروپال بسازیم؟ | آموزش کامل

نحوه ایجاد قالب های سفارشی در دروپال
ایجاد قالب های سفارشی در دروپال به توسعه دهندگان وب و طراحان UI/UX این امکان را می دهد که ظاهر سایت خود را دقیقاً مطابق با نیازهای بصری و عملکردی طراحی کنند. این فرآیند با استفاده از موتور قالب سازی Twig در نسخه های ۸، ۹ و ۱۰ دروپال، مسیری جدید و کارآمد را برای شخصی سازی سایت فراهم می آورد. با این راهنمای جامع، یک توسعه دهنده می تواند یک قالب جدید را از پایه بنا نهد یا با ساخت یک ساب تیم، ظاهر سایت خود را به طور کامل متحول سازد.
توسعه دهندگان وب اغلب با چالش سفارشی سازی عمیق رابط کاربری سایت ها روبرو هستند. در اکوسیستم دروپال، این نیاز از طریق سیستم قدرتمند قالب بندی آن برآورده می شود. برخلاف نسخه های قدیمی تر دروپال که از PHPTemplate استفاده می کردند، نسخه های ۸ به بعد دروپال با روی آوردن به Twig، یک جهش بزرگ در زمینه امنیت، عملکرد و خوانایی کد را تجربه کرده اند. Twig نه تنها فرآیند قالب بندی را ساده تر می کند، بلکه یک لایه امنیتی اضافی را نیز فراهم می آورد که از تزریق کدهای مخرب جلوگیری می کند. این تغییر، دریچه ای جدید به سوی طراحی های منعطف و قابل نگهداری باز کرده است.
برای شروع این سفر هیجان انگیز، یک توسعه دهنده به آشنایی با مفاهیم پایه ای HTML، CSS و PHP، به همراه یک درک کلی از رابط کاربری دروپال نیاز دارد. این پیش نیازها به او کمک می کند تا با اعتماد به نفس بیشتری وارد دنیای پیچیده اما پاداش بخش طراحی قالب دروپال شود. مسیر پیش رو شامل درک ساختار فایل ها، پیکربندی فایل های حیاتی مانند info.yml
و libraries.yml
، و سپس شیرجه زدن به دنیای Twig برای رندرینگ محتوا و مدیریت دارایی ها خواهد بود. هر گام در این مسیر، او را به خلق یک تجربه کاربری بی نظیر برای بازدیدکنندگان سایت نزدیک تر می کند.
مبانی قالب بندی دروپال مدرن (با تمرکز بر Twig)
درک معماری قالب بندی دروپال، برای هر توسعه دهنده ای که قصد ساخت تم دروپال را دارد، از اهمیت بالایی برخوردار است. این معماری بر پایه مفاهیم کلیدی بنا شده است که هر یک نقشی حیاتی در نمایش محتوا ایفا می کنند.
مفاهیم اساسی: Themes, Regions, Blocks
در هسته سیستم قالب بندی دروپال، سه مفهوم اساسی وجود دارد که هر یک به سازماندهی و نمایش محتوا کمک می کنند:
- قالب ها (Themes): قالب، مجموعه ای از فایل ها (شامل CSS, JavaScript, تصاویر و فایل های Twig) است که ظاهر کلی یک وب سایت دروپال را تعیین می کند. یک قالب، مسئول چیدمان، رنگ ها، فونت ها و تمامی عناصر بصری است که کاربر مشاهده می کند.
- ناحیه ها (Regions): نواحی، بخش های از پیش تعیین شده ای در یک قالب هستند که محتوا را می توان در آن ها قرار داد. به عنوان مثال، یک قالب ممکن است دارای نواحی برای هدر، سایدبارها، محتوای اصلی و فوتر باشد. این نواحی توسط توسعه دهنده قالب در فایل
info.yml
تعریف می شوند و امکان انعطاف پذیری در چینش بلوک ها و محتوا را فراهم می آورند. - بلوک ها (Blocks): بلوک ها قطعات کوچکی از محتوا یا عملکرد هستند که می توانند در هر ناحیه از یک قالب قرار گیرند. این می تواند شامل منوهای ناوبری، فرم های جستجو، محتوای سفارشی یا خروجی یک ماژول باشد. بلوک ها ابزاری قدرتمند برای مدیریت محتوای پویا و ثابت در سراسر سایت هستند.
چرا Twig؟ معرفی مزایای Twig
گذر دروپال از PHPTemplate به Twig در نسخه های ۸ به بعد، یک نقطه عطف مهم در طراحی قالب با Twig در دروپال بود. Twig، یک موتور قالب سازی سریع، امن و انعطاف پذیر برای PHP است که مزایای متعددی را به همراه دارد:
- امنیت: Twig به طور پیش فرض خروجی ها را فیلتر می کند تا از حملات تزریق کد (XSS) جلوگیری کند. این ویژگی برای توسعه دهندگان قالب، آرامش خاطر را به ارمغان می آورد.
- سرعت: Twig فایل های قالب را به کلاس های PHP کامپایل می کند که منجر به افزایش قابل توجه سرعت رندرینگ می شود، به خصوص در سایت های پربازدید.
- خوانایی کد: سینتکس Twig بسیار ساده و خوانا است، که آن را برای توسعه دهندگان فرانت اند، حتی آن هایی که تجربه کمی با PHP دارند، قابل دسترس می کند. این خوانایی به بهبود همکاری تیمی و کاهش خطاهای کدنویسی کمک می کند.
- جداسازی منطق و نمایش: Twig به توسعه دهندگان اجازه می دهد تا منطق برنامه را از لایه نمایش جدا کنند، که این امر به ساختاردهی بهتر کد و نگهداری آسان تر کمک می کند.
انواع قالب ها در دروپال
در دروپال، چندین نوع قالب با کاربردهای متفاوت وجود دارد که هر یک رویکرد خاصی برای سفارشی سازی ارائه می دهند:
- قالب های اصلی (Base Themes): این قالب ها مانند Classy و Stable، لایه های پایه ای از نشانه گذاری HTML و استایل های پیش فرض را فراهم می کنند. آن ها به عنوان نقطه شروعی برای ساخت قالب های پیچیده تر عمل می کنند. توسعه دهندگان معمولاً به طور مستقیم از این قالب ها استفاده نمی کنند، بلکه آن ها را به عنوان پایه برای ساب تیم ها به کار می برند.
- قالب های شروع (StarterKit Theme): این قالب ها که در نسخه های جدیدتر دروپال معرفی شده اند، یک نقطه شروع تمیز و ساده برای آموزش ساخت تم دروپال ارائه می دهند. آن ها حداقل نشانه گذاری و استایل را دارند و به توسعه دهنده اجازه می دهند تا بدون نیاز به Override کردن تعداد زیادی فایل از قالب های اصلی، طراحی خود را از صفر شروع کند.
- ساب تیم ها (Sub-themes): ساب تیم ها، قالب هایی هستند که از یک قالب پایه (Base Theme) یا یک قالب دیگر ارث می برند. این روش، بهترین راه برای ساخت ساب تیم در دروپال و سفارشی سازی ظاهر سایت است، زیرا امکان اعمال تغییرات بدون دستکاری فایل های اصلی قالب پایه را فراهم می کند. این رویکرد، نگهداری و به روزرسانی قالب را در آینده آسان تر می سازد، چرا که تغییرات در قالب پایه به ساب تیم منتقل نمی شوند.
ساختار کلی یک قالب در دروپال
یک قالب در دروپال دارای یک ساختار دایرکتوری مشخص است که به سازماندهی فایل ها کمک می کند. یک توسعه دهنده با درک این ساختار، می تواند به راحتی بخش های مختلف قالب را پیدا و مدیریت کند. دایرکتوری اصلی قالب (معمولاً در /themes/custom/YOUR_THEME
) شامل فایل ها و دایرکتوری های کلیدی زیر است:
[THEME_NAME].info.yml
: این فایل ضروری، متادیتای قالب را تعریف می کند، از جمله نام، توضیحات، نسخه های دروپال سازگار، نواحی قابل دسترس و کتابخانه های CSS/JS.[THEME_NAME].libraries.yml
: این فایل تمام فایل های CSS و JavaScript مورد نیاز قالب را تعریف و گروه بندی می کند، که امکان بارگذاری بهینه و مدیریت وابستگی ها را فراهم می آورد.[THEME_NAME].theme
: این فایل PHP شامل توابع Preprocess و هوک هایی است که به توسعه دهنده اجازه می دهند تا متغیرها را به قالب های Twig تزریق کرده یا عملکرد پیش فرض دروپال را تغییر دهند.css/
: دایرکتوری برای نگهداری فایل های CSS قالب.js/
: دایرکتوری برای نگهداری فایل های JavaScript قالب.images/
: دایرکتوری برای نگهداری تصاویر استفاده شده در قالب.templates/
: این دایرکتوری شامل فایل های Twig است که مسئول رندرینگ نشانه گذاری HTML هستند. توسعه دهنده در این بخش می تواند فایل های Twig پیش فرض دروپال را Override کند.screenshot.png
: یک تصویر پیش نمایش از قالب که در صفحه مدیریت قالب ها نمایش داده می شود.
این ساختار منطقی، به یک توسعه دهنده امکان می دهد تا با نظم و ترتیب، یک قالب دروپال ۹ یا قالب دروپال ۱۰ کارآمد و قابل نگهداری را طراحی کند.
گام به گام: ایجاد یک قالب سفارشی از ابتدا
ایجاد یک قالب دروپال سفارشی از ابتدا، یک فرآیند جذاب و نیازمند دقت است. یک توسعه دهنده می تواند با دنبال کردن مراحل زیر، یک قالب کاملاً جدید را برای وب سایت دروپالی خود بسازد و آن را شخصی سازی کند.
گام ۱: آماده سازی محیط و ایجاد دایرکتوری قالب
اولین گام در این مسیر، ایجاد یک دایرکتوری مشخص برای قالب جدید است. بهترین مکان برای این دایرکتوری، مسیر /themes/custom/YOUR_THEME
در ریشه نصب دروپال است. انتخاب نام مناسب برای دایرکتوری (مثلاً my_custom_theme
) که با نام قالب همخوانی داشته باشد، در حفظ نظم پروژه بسیار مهم است. پس از ایجاد دایرکتوری اصلی، توصیه می شود برای سازماندهی بهتر فایل ها، دایرکتوری های زیر را نیز در داخل آن ایجاد کند:
css/
: برای نگهداری فایل های استایل (CSS).js/
: برای نگهداری فایل های جاوااسکریپت (JavaScript).images/
: برای نگهداری تصاویر و آیکون ها.templates/
: برای نگهداری فایل های Twig.
این ساختار، یافتن و مدیریت فایل ها را در طول فرآیند توسعه آسان تر می کند.
گام ۲: تعریف و پیکربندی قالب با فایل .info.yml
قلب هر قالب دروپال، فایل [THEME_NAME].info.yml
است. این فایل با فرمت YAML نوشته می شود و اطلاعات ضروری قالب را به دروپال معرفی می کند. یک توسعه دهنده باید این فایل را در دایرکتوری اصلی قالب ایجاد کند. فیلدهای کلیدی و کاربرد آن ها به شرح زیر است:
name
: نام قابل نمایش قالب در رابط کاربری دروپال (مثلاً قالب سفارشی من).description
: توضیح مختصری درباره قالب و کاربرد آن.type
: همیشه بایدtheme
باشد.core_version_requirement
: نسخه های دروپال که قالب با آن ها سازگار است (مثلاً^8 || ^9 || ^10
برای سازگاری با دروپال ۸، ۹ و ۱۰).base theme
: (اختیاری) در صورتی که این قالب یک ساب تیم است، نام قالب پایه ای که از آن ارث می برد (مثلاًclassy
یاstable
).regions
: تعریف نواحی (Regions) قابل دسترس در قالب، که بلوک ها در آن ها قرار می گیرند. هر ناحیه دارای یک کلید ماشین خوان (Machine Name) و یک نام قابل نمایش است.regions: header: 'Header' primary_menu: 'Primary menu' content: 'Content' sidebar_first: 'First sidebar' footer: 'Footer'
libraries
: اشاره به فایل.libraries.yml
برای بارگذاری کتابخانه های CSS و JS.libraries: - 'my_custom_theme/global-styling'
dependencies
: (اختیاری) ماژول ها یا قالب هایی که این قالب به آن ها وابسته است.
یک مثال کامل از فایل info.yml
می تواند به این شکل باشد:
name: My Custom Theme
type: theme
description: 'A custom theme for my Drupal website.'
core_version_requirement: ^8 || ^9 || ^10
base theme: false # Set to false if it's not a sub-theme, or specify the base theme name
regions:
header: 'Header'
primary_menu: 'Primary menu'
content: 'Content'
sidebar_first: 'First sidebar'
footer: 'Footer'
libraries:
- my_custom_theme/global-styling
- my_custom_theme/global-js
گام ۳: مدیریت دارایی ها (Assets) با فایل .libraries.yml
فایل [THEME_NAME].libraries.yml
وظیفه سازماندهی و بارگذاری فایل های CSS و JavaScript قالب را بر عهده دارد. این رویکرد، بهینه سازی بارگذاری منابع و جلوگیری از تداخل را تضمین می کند. یک توسعه دهنده باید این فایل را در دایرکتوری اصلی قالب خود ایجاد کند و کتابخانه ها را در آن تعریف کند.
نحوه تعریف کتابخانه ها و وابستگی های آن ها به شرح زیر است:
global-styling:
version: 1.0
css:
theme:
css/style.css: {}
css/layout.css: {}
global-js:
version: 1.0
js:
js/script.js: {}
dependencies:
- core/jquery
- core/drupal
در این مثال، global-styling
و global-js
نام دو کتابخانه هستند. هر کتابخانه می تواند شامل فایل های CSS و JS باشد. بخش dependencies
به دروپال می گوید که این کتابخانه به jQuery و کتابخانه اصلی دروپال وابسته است، بنابراین آن ها قبل از این کتابخانه بارگذاری می شوند.
گام ۴: ایجاد فایل های CSS و JavaScript
پس از تعریف کتابخانه ها در libraries.yml
، نوبت به ایجاد فایل های واقعی CSS و JavaScript می رسد. این فایل ها باید در دایرکتوری های css/
و js/
که در گام اول ایجاد شد، قرار گیرند. به عنوان مثال، یک فایل css/style.css
برای استایل های اصلی و یک فایل js/script.js
برای اسکریپت های سفارشی.
بهترین روش ها برای سازماندهی:
- ماژولار کردن CSS: به جای یک فایل CSS بزرگ، استایل ها را بر اساس بخش های مختلف سایت یا مؤلفه ها (مانند هدر، فوتر، فرم ها) به فایل های کوچک تر تقسیم کنید. این کار به بهینه سازی قالب دروپال و نگهداری آسان تر کمک می کند.
- استفاده از Preprocessorها: برای پروژه های بزرگ تر، استفاده از Sass یا Less برای نوشتن CSS با قابلیت های پیشرفته تر و سازماندهی بهتر توصیه می شود. سپس با ابزارهایی مانند Gulp یا Webpack، آن ها را به CSS استاندارد کامپایل کنید.
- بهینه سازی جاوااسکریپت: جاوااسکریپت را به بخش های کوچک تر تقسیم کنید و فقط در صفحات مورد نیاز بارگذاری کنید تا عملکرد سایت بهبود یابد.
گام ۵: ساختاردهی اصلی صفحه با Twig (page.html.twig)
فایل page.html.twig
مهم ترین فایل Twig در یک قالب دروپال است. این فایل، ساختار اصلی HTML هر صفحه وب سایت را تعریف می کند. یک توسعه دهنده می تواند با کپی کردن فایل page.html.twig
از قالب پایه (مثلاً Classy) یا از ماژول system
دروپال (اگر از StarterKit استفاده می کند) به دایرکتوری templates/
قالب خود، آن را سفارشی سازی کند.
در این فایل، یک ساختار پایه HTML شامل تگ هایی مانند <header>
، <main>
و <footer>
ایجاد می شود. سپس، نواحی تعریف شده در فایل info.yml
با استفاده از سینتکس Twig رندر می شوند. برای مثال:
<header>
{{ page.header }}
</header>
<main>
<div class=layout-content>
{{ page.content }}
</div>
{% if page.sidebar_first %}
<aside class=layout-sidebar-first role=complementary>
{{ page.sidebar_first }}
</aside>
{% endif %}
</main>
<footer>
{{ page.footer }}
</footer>
متغیرهای پرکاربرد در page.html.twig
شامل {{ base_path }}
(مسیر اصلی سایت)، {{ directory }}
(مسیر دایرکتوری قالب)، {{ title }}
(عنوان صفحه کنونی)، و {{ page_title }}
(همان عنوان صفحه) هستند که به توسعه دهنده امکان می دهند محتوای پویا را به قالب اضافه کند.
گام ۶: آشنایی با فایل های Twig دیگر و Override کردن آن ها
دروپال از یک سیستم پیشنهاد قالب (Template Suggestion) برای انتخاب فایل Twig مناسب برای رندرینگ هر مؤلفه استفاده می کند. این سیستم به یک توسعه دهنده اجازه می دهد تا نمایش پیش فرض هر عنصر دروپال را از طریق Override کردن فایل های Twig تغییر دهد. فایل هایی مانند node.html.twig
(برای نمایش گره ها)، block.html.twig
(برای نمایش بلوک ها) و field.html.twig
(برای نمایش فیلدها) از جمله پرکاربردترین ها هستند.
ابزار Theme Debugging
Debugging قالب دروپال یکی از مهم ترین مهارت ها برای هر توسعه دهنده است. دروپال یک ابزار داخلی به نام Theme Debugging دارد که اطلاعات دقیقی در مورد فایل های Twig مورد استفاده و متغیرهای موجود در هر بخش از صفحه را ارائه می دهد. برای فعال سازی آن، باید فایل services.yml
(معمولاً در /sites/default/services.yml
) را ویرایش کنید:
parameters:
twig.config:
debug: true
auto_reload: true
cache: false
پس از فعال سازی، با بازرسی کد منبع (Inspect Element) در مرورگر، می توان کامنت هایی را مشاهده کرد که مسیر فایل های Twig پیشنهادی و نام متغیرهای موجود را نشان می دهند. این ابزار برای Override کردن قالب ها در دروپال بسیار حیاتی است.
یک مثال عملی برای Override کردن node.html.twig
: فرض کنید یک توسعه دهنده می خواهد نمایش عنوان گره را تغییر دهد. او می تواند فایل node.html.twig
را از ماژول node
دروپال به دایرکتوری templates/
قالب خود کپی کند و سپس تغییرات مورد نظر را در آن اعمال کند.
استفاده از Theme Debugging به عنوان یک چراغ راهنما در تاریکی مسیر Override کردن قالب ها، تجربه ای لذت بخش و کارآمد را برای توسعه دهنده فراهم می کند. این ابزار نه تنها در زمان صرفه جویی می کند بلکه دیدی عمیق تر نسبت به ساختار داده ها و سلسله مراتب قالب بندی دروپال به او می دهد.
گام ۷: افزودن تصویر پیش نمایش قالب (screenshot.png)
برای اینکه قالب در صفحه مدیریت قالب ها در دروپال به خوبی نمایش داده شود، افزودن یک فایل screenshot.png
ضروری است. این فایل باید یک تصویر پیش نمایش از ظاهر قالب باشد و در دایرکتوری اصلی قالب قرار گیرد. ابعاد پیشنهادی برای این تصویر 400x300
پیکسل است، اما دروپال تصاویر با ابعاد دیگر را نیز تنظیم می کند.
گام ۸: فعال سازی و تست قالب
پس از تکمیل مراحل فوق، قالب آماده فعال سازی و تست است. یک توسعه دهنده می تواند از طریق رابط کاربری دروپال، به مسیر Appearance
برود. در این صفحه، قالب جدید نمایش داده می شود و می تواند آن را به عنوان قالب پیش فرض فعال کند. پس از فعال سازی، لازم است تمام صفحات سایت به دقت بررسی شوند تا از صحت عملکرد قالب و عدم وجود خطاهای بصری یا عملکردی اطمینان حاصل شود. پاک کردن کش دروپال (از مسیر Configuration > Development > Performance
) پس از هر تغییر در فایل های قالب، برای مشاهده به روزرسانی ها ضروری است.
ساخت ساب تیم (Sub-theme) بر پایه قالب های موجود
یکی از قوی ترین قابلیت های سیستم قالب بندی دروپال، امکان ایجاد ساب تیم ها است. این رویکرد، بهترین روش برای سفارشی سازی قالب های موجود بدون دستکاری مستقیم فایل های آن هاست، که مزایای قابل توجهی را برای توسعه دهنده به ارمغان می آورد.
مزایای ساب تیم
انتخاب رویکرد ساب تیم به جای تغییر مستقیم قالب های اصلی، تصمیمی هوشمندانه است که نگهداری پروژه را به طرز چشمگیری بهبود می بخشد:
- به روزرسانی آسان: زمانی که قالب پایه (مثلاً قالب اصلی دروپال یا یک قالب دانلود شده) به روزرسانی می شود، تغییرات اعمال شده در ساب تیم دست نخورده باقی می مانند. این امر از از بین رفتن سفارشی سازی ها پس از به روزرسانی جلوگیری می کند.
- تفکیک کد: ساب تیم ها به توسعه دهنده اجازه می دهند تا تغییرات خود را در یک دایرکتوری جداگانه و مشخص نگه دارد. این تفکیک، مدیریت کد را آسان تر کرده و همکاری تیمی را بهبود می بخشد.
- پایداری: با تغییر ندادن فایل های اصلی قالب، ثبات سیستم حفظ می شود و احتمال بروز خطا کاهش می یابد.
- انعطاف پذیری: یک ساب تیم می تواند تنها بخش های خاصی از قالب پایه را Override کند و بقیه را به حال خود واگذار کند، که این امر انعطاف پذیری بالایی در طراحی ارائه می دهد.
گام های ساخت ساب تیم
فرآیند ساخت ساب تیم در دروپال شباهت زیادی به ایجاد یک قالب از ابتدا دارد، با این تفاوت که باید به قالب پایه اشاره شود:
- انتخاب یک قالب پایه: ابتدا یک قالب پایه مناسب انتخاب شود. این می تواند یک قالب پیش فرض دروپال مانند Classy یا Stable، یا حتی یک قالب دانلود شده از Drupal.org باشد. StarterKit نیز می تواند به عنوان یک قالب پایه برای ساب تیم عمل کند.
- ایجاد دایرکتوری ساب تیم: یک دایرکتوری جدید برای ساب تیم در مسیر
/themes/custom/
ایجاد شود (مثلاًmy_sub_theme
). همچنین دایرکتوری هایcss/
،js/
،images/
وtemplates/
نیز در داخل آن ساخته شوند. - پیکربندی فایل
info.yml
: یک فایل[THEME_NAME].info.yml
در دایرکتوری ساب تیم ایجاد و پیکربندی شود. مهم ترین تفاوت اینجا، اضافه کردن فیلدbase theme
است که به نام ماشین خوان قالب پایه اشاره می کند:name: My Sub Theme type: theme description: 'A sub-theme based on Classy theme.' core_version_requirement: ^8 || ^9 || ^10 base theme: classy # نام ماشین خوان قالب پایه regions: header: 'Header' content: 'Content' sidebar_first: 'First sidebar' footer: 'Footer' libraries: - my_sub_theme/global-styling
- Override کردن فایل های Twig: برای سفارشی سازی نمایش، توسعه دهنده می تواند فایل های Twig مورد نظر را از دایرکتوری
templates/
قالب پایه (یا ماژول مربوطه در هسته دروپال) به دایرکتوریtemplates/
ساب تیم خود کپی کرده و تغییرات لازم را در آن ها اعمال کند. دروپال به طور خودکار فایل های Twig موجود در ساب تیم را بر فایل های مشابه در قالب پایه ارجحیت می دهد. - اضافه کردن دارایی ها: فایل
[THEME_NAME].libraries.yml
و فایل های CSS و JavaScript مورد نیاز (مشابه گام های ۳ و ۴ در ایجاد قالب از ابتدا) ایجاد شوند.
با این روش، یک توسعه دهنده می تواند با اطمینان خاطر، تغییرات عمیقی در ظاهر سایت خود ایجاد کند، در حالی که از قابلیت به روزرسانی آسان و پایداری پروژه خود اطمینان دارد.
تکنیک های پیشرفته و بهینه سازی در قالب بندی دروپال
پس از تسلط بر اصول اولیه طراحی قالب دروپال، یک توسعه دهنده می تواند به سراغ تکنیک های پیشرفته تر برود تا کنترل بیشتری بر خروجی قالب داشته باشد و عملکرد آن را بهینه سازی کند. این تکنیک ها به ایجاد قالب دروپال ۱۰ یا ۹ با کارایی بالا و قابلیت نگهداری بیشتر کمک می کنند.
Preprocess Functions: نقش فایل [THEME_NAME].theme
فایل [THEME_NAME].theme
یک فایل PHP است که در دایرکتوری اصلی قالب قرار می گیرد. این فایل، محل تعریف هوک های (Hooks) سفارشی قالب و توابع Preprocess است. توابع Preprocess به توسعه دهنده اجازه می دهند تا قبل از رندر شدن یک فایل Twig، متغیرها را تغییر دهند یا متغیرهای جدیدی را به آن اضافه کنند.
سینتکس یک تابع Preprocess به شکل hook_preprocess_HOOK()
است که در آن HOOK
به نام بخش یا مؤلفه ای اشاره دارد که قرار است پردازش شود (مثلاً page
، node
، block
). به عنوان مثال، برای اضافه کردن یک متغیر سفارشی به page.html.twig
، می توان از تابع my_theme_preprocess_page()
استفاده کرد:
<?php
/**
* Implements hook_preprocess_page().
*/
function my_custom_theme_preprocess_page(&$variables) {
// Add a custom variable to the page template.
$variables['my_custom_message'] = 'Welcome to our customized Drupal site!';
}
?>
سپس، این متغیر {{ my_custom_message }}
در فایل page.html.twig
قابل دسترسی و استفاده خواهد بود. این قابلیت، کنترل بی نظیری بر داده هایی که به قالب ها ارسال می شوند، فراهم می آورد.
مدیریت پیشرفته CSS و JS
برای پروژه های بزرگ تر و بهبود بهینه سازی قالب دروپال، مدیریت دارایی ها فراتر از صرفاً قرار دادن فایل ها در دایرکتوری ها می رود:
- استفاده از Preprocessorها (Sass/Less): این ابزارها قابلیت هایی مانند متغیرها، توابع، و Mixinها را به CSS اضافه می کنند که نوشتن استایل های پیچیده و قابل نگهداری را آسان تر می کند. سپس کدهای Sass/Less باید با یک ابزار Build مانند Gulp، Webpack یا NPM scripts به CSS استاندارد کامپایل شوند.
- بارگذاری مشروط (Conditional Loading): تمام CSS و JS نباید در هر صفحه بارگذاری شوند. با استفاده از قابلیت های
libraries.yml
و توابع Preprocess، می توان کتابخانه های خاصی را تنها در صفحات یا برای مؤلفه هایی که به آن ها نیاز دارند، بارگذاری کرد. این کار باعث کاهش حجم داده های دانلود شده و افزایش سرعت بارگذاری صفحه می شود.
کشینگ (Caching) در قالب بندی
کشینگ نقش حیاتی در پرفورمنس قالب دروپال ایفا می کند. دروپال از مکانیسم های کشینگ متعددی برای بهبود سرعت استفاده می کند. در زمان توسعه، باید کش را غیرفعال کرد یا به طور مداوم آن را پاک کرد تا تغییرات جدید مشاهده شوند. اما در محیط های تولیدی، فعال بودن کش ضروری است. توسعه دهنده باید به اهمیت کش توجه کند و در هنگام اعمال تغییرات در قالب، کش را پاک کند تا کاربران آخرین نسخه را مشاهده کنند.
استانداردهای کدنویسی و امنیت در قالب
نوشتن کد تمیز، خوانا و ایمن در قالب، از اهمیت بالایی برخوردار است. یک توسعه دهنده باید:
- از استانداردهای کدنویسی دروپال پیروی کند.
- کدها را کامنت گذاری کند تا قابلیت درک و نگهداری آن ها افزایش یابد.
- اطمینان حاصل کند که تمام خروجی ها از طریق Twig و فیلترهای امنیتی آن عبور می کنند تا از آسیب پذیری های امنیتی جلوگیری شود.
بهترین روش ها و نکات کلیدی (Best Practices & Tips)
برای تبدیل شدن به یک طراح قالب دروپال حرفه ای، فراتر از دانستن گام های فنی، درک و به کارگیری بهترین روش ها حیاتی است. این نکات به یک توسعه دهنده کمک می کند تا قالب هایی بسازد که نه تنها زیبا و کارآمد هستند، بلکه نگهداری و مقیاس پذیری آسانی نیز دارند.
- سازماندهی منطقی کد و فایل ها: ساختار دایرکتوری ها و نام گذاری فایل ها باید منطقی و قابل پیش بینی باشد. این امر به ویژه در پروژه های بزرگ با تیم های توسعه چندنفره، اهمیت پیدا می کند. استفاده از الگوهای نام گذاری ثابت و گروه بندی فایل های مرتبط در یک دایرکتوری، به کاهش پیچیدگی و افزایش خوانایی کد کمک می کند.
- استفاده از ابزارهای توسعه دروپال: ماژول Devel یکی از ابزارهای قدرتمند برای Debugging قالب دروپال و توسعه به طور کلی است. این ماژول به توسعه دهنده امکان می دهد تا متغیرها را در هر نقطه از برنامه مشاهده کند، اطلاعات سیستم را بررسی کند و queryها را ردیابی کند.
- اهمیت طراحی ریسپانسیو (Responsive Design): با توجه به تنوع دستگاه ها و اندازه های صفحه نمایش، طراحی ریسپانسیو دیگر یک گزینه نیست، بلکه یک ضرورت است. قالب باید به گونه ای طراحی شود که در تمامی دستگاه ها، از دسکتاپ گرفته تا موبایل، تجربه کاربری بهینه ای را ارائه دهد. این شامل استفاده از CSS Media Queries، فریم ورک های CSS ریسپانسیو (مانند Bootstrap یا Tailwind CSS) و توجه به قابلیت لمس است.
- بهینه سازی پرفورمنس قالب: سرعت بارگذاری سایت یکی از عوامل کلیدی در تجربه کاربری و رتبه بندی SEO است. یک توسعه دهنده باید بهینه سازی پرفورمنس قالب را در اولویت قرار دهد:
- کاهش درخواست ها: فایل های CSS و JS را ترکیب و کوچک سازی کنید.
- بهینه سازی تصاویر: از فرمت های تصویری بهینه (مانند WebP) استفاده کنید و تصاویر را فشرده سازی کنید. Lazy Loading تصاویر نیز می تواند کمک کننده باشد.
- کوچک سازی فایل ها (Minification): کد CSS و JS را برای حذف فضاهای خالی و کامنت ها کوچک سازی کنید.
- روش های عیب یابی رایج:
- پاک کردن کش: همیشه پس از اعمال تغییرات در قالب یا فایل های پیکربندی، کش دروپال را پاک کنید.
- بررسی گزارشات: گزارشات سیستم دروپال (در مسیر
Reports > Recent log messages
) را برای یافتن خطاها و اخطارها بررسی کنید. - استفاده از مرورگر: ابزارهای توسعه دهنده مرورگر (مانند Inspect Element) برای بررسی مشکلات CSS، JS و ساختار HTML ضروری هستند.
- نکاتی برای به روز نگه داشتن دانش با تغییرات نسخه های جدید دروپال: اکوسیستم دروپال به طور مداوم در حال تحول است. یک توسعه دهنده باید به طور منظم مستندات رسمی دروپال را دنبال کند، در انجمن های توسعه دهندگان مشارکت داشته باشد و به دنبال منابع آموزشی به روز برای قالب دروپال ۹ و قالب دروپال ۱۰ باشد تا دانش خود را همواره به روز نگه دارد.
نتیجه گیری
ایجاد قالب های سفارشی در دروپال، فرصتی بی نظیر برای توسعه دهندگان فراهم می کند تا با استفاده از پتانسیل کامل Twig و معماری انعطاف پذیر دروپال، وب سایت هایی با هویت بصری منحصر به فرد و عملکردی بی نظیر خلق کنند. از تعریف ساختار فایل ها با info.yml
و مدیریت دقیق دارایی ها با libraries.yml
گرفته تا بکارگیری قدرت Twig برای رندرینگ و سفارشی سازی هر جزء، هر گام در این مسیر، کنترل بیشتری بر تجربه کاربری به یک توسعه دهنده می بخشد.
تکنیک های پیشرفته ای مانند توابع Preprocess و استراتژی های بهینه سازی، نه تنها به بهبود کارایی کمک می کنند، بلکه قابلیت نگهداری قالب را نیز در بلندمدت تضمین می کنند. یادگیری نحوه ایجاد قالب های سفارشی در دروپال با تمرین مداوم و کاوش عمیق تر در مستندات و منابع، به تسلط کامل بر این مهارت منجر خواهد شد. امید است این راهنمای جامع، یک نقطه شروع قدرتمند برای هر توسعه دهنده ای باشد که مشتاق است ظاهر وب سایت های دروپالی خود را به سطح بالاتری ارتقا دهد. برای مطالعه بیشتر و دسترسی به منابع رسمی، مراجعه به مستندات دروپال و جامعه کاربری آن همواره توصیه می شود.