ماژول ThemeKey تغییر قالب بر اساس صفحه در دروپال

ماژول ThemeKey تغییر قالب بر اساس صفحه در دروپال

قالب های دروپال (theme)

ظاهر صفحات در دروپال توسط قالب یا theme آن مشخص می شود. در حالت عادی، به صورت همزمان دو theme در یک سایت دروپالی قابل استفاده است.

  1. یک theme برای صفحات عادی سایت که بازدید کننده آن ها را مشاهده می کند و می توانیم آنها را به front end تعبیر کنیم.
  2. از theme دیگری می توان برای صفحاتی که مدیریتی هستند، استفاده کرد.

برای نمونه در دروپال 7 استاندارد، قالب bartik برای صفحات معمولی سایت و قالب seven برای صفحات مدیریتی استفاده می شود. که البته قالب مدیریتی و سایت هر دو قابل تغییر هستند.

قالب های مختلف برای صفحات

ممکن است در یک پروژه نیاز داشته باشید، همزمان از چند قالب در سایت استفاده کنید. مثلا صفحه اصلی سایت از یک قالب پیروی کند و صفحات مربوط به پروفایل کاربری، قالب دیگری داشته باشد.
ولی مطابق آنچه که گفته شد، به صورت پیش فرض نمی توانیم همزمان در صفحات معمولی سایت بیشتر از یک قالب داشته باشیم. ولی با استفاده از ماژول ThemeKey می توان با توجه به زمینه یا آدرس صفحه، قالب را تعیین کرد.

نصب ماژول ThemeKey در دروپال

نصب ماژول ThemeKey مانند نصب سایر ماژول ها است. ابتدا باید فایل فشرده این ماژول را از سایت دروپال دانلود کنید. سپس آن را از حالت فشرده خارج کرده و در فولدر ماژول های دروپال یعنی sites/all/themes بریزید.

نهایتا باید به صفحه ماژول ها در مدیریت سایت دروپالی خود بروید. این بسته خود حاوی چند ماژول است که آنها را در گروه ThemeKey می توانید بیابید. برای شروع ThemeKey و ThemeKey UI را فعال کنید. در صورت نیاز سایر ماژول ها را نیز می توانید نصب کنید.

نصب ماژول ThemeKey در دروپال

تنظیم ماژول ThemeKey برای سوئیچ اتوماتیک تم دروپال

با نصب ماژول ThemeKey صفحه مدیریتی جدیدی به پیکربندی دروپال (Configuration) اضافه می شود. لینک این صفحه مدیریتی در صفحه configuration در گروه User interface قرار دارد. با کلیک روی ThemeKey وارد آن صفحه می شوید.

تنظیم ماژول ThemeKey برای سوئیچ اتوماتیک تم دروپال

اصلی ترین بخش این صفحه قوانین انتخاب تم و فرم تعیین این قوانین هستند. در اینجا باید هر قانون را تعیین کنیم که تحت چه شرایطی، چه قالبی باید استفاه شود.

برای نمونه می خواهیم در صفحه مطالبی که از نوع محتوای blog هستند، از قالب garland استفاده کنیم. بنابراین در فرمی که در پائین این صفحه مشخص شده است، در ستونTHEME SWITCHING RULE از انتخابگر اول، گزینه node:type را می یابیم و انتخاب می کنیم. از انتخابگر دوم همان گزینه پیش فرض یعنی مساوی (=) را رها می کنیم. در فیلد متنی نام ماشین نوع محتوا که همان blog است را وارد می کنیم. از ستون Theme، قالب مورد نظر که در اینجا Garland است را می یابیم و انتخاب می کنیم. چک باکس Enabled را هم در ستون سوم به صورت فعال نگه می داریم. در نهایت دکمه Save Configuration را کلیک می کنیم تا قانون جدید اضافه شود.

اکنون مشاهده می کنید که با اینکه همه صفحات سایت از قالب پیش فرض استفاده می کنند، ولی صفحات محتوایی از نوع blog همه در قالب Garland نمایش داده می شوند.

افزودن قانون جدید در ماژول themekey دروپال

قوانینی که اضافه می کنیم در یک جدول در همین فرم نشان داده می شوند و قابل تغییر و یا حذف هستند.

ترکیب و ترتیب قوانین تعیین قالب دروپال در ماژول ThemeKey

با استفاده از فرمی که در بخش قبل مشاهده کردید می توان قوانین مختلف و پیچیده ای را برای سوئیچ اتوماتیک بین قالب های سایت بر اساس شرایط خاص، تنظیم کرد. اولین نکته ای که اهمیت دارد این است، با توجه به اینکه می توان قوانین مختلفی را در اینجا تعیین کرد، ترتیب این قوانین مهم می شوند. زمانی که دروپال باید قالب سایت را لود کند، این قوانین از ابتدا و به ترتیبی که در همین جا مشاهده می کنیم، بررسی می شوند، تا یک قانون یافت شد که شرایط با آن مطابقت می کرد، قالب مشخص شده در آن قانون در سایت اعمال می شود. بنابراین باید ترتیب قوانین را در اینجا به دقت رعایت کرد و قوانین عمومی تر در ابتدا قرار نگیرند.

همچنین ذکر این نکته نیز ضروری است که می توان با سلسله مراتبی کردن قوانین آنها را با هم ترکیب کرد. برای نمونه شاید بخواهیم در مثال قبلی همه بلاگ ها تم Garland را داشته باشند ولی یک بلاگ خاص در قالب پیش فرض سایت نمایش داده شود. مثلا فقط می خواهیم بلاگ هایی که با دسته (term) که شماره tid آن 22 است، با قالب Garland نمایش داده شوند. کافی است قانون جدیدی که این را بیان می کند درست کنیم و آن را drag کرده و زیر قانون قبلی قرار بدهیم. مانند آنچه که در شکل زیر می بینید:

ترکیب و ترتیب قوانین تعیین قالب دروپال در ماژول ThemeKey

راهنمای قوانین تعیین قالب دروپال در ماژول ThemeKey

برای اینکه پیکربندی مناسب و مورد نظر خود را در بیاوریم باید با امکانات و تنظیمات این فرم بیشتر آشنا بشویم.

در ابتدای همین فرم سه فیلدست وجود دارند که حاوی راهنمایی هایی برای تنظیم قوانین ماژول ThemeKey هستند. این فیلدست ها عبارتند از:

  1. Examples: در این قسمت مثال هایی از قوانین به همراه توضیح مختصری در مورد آنها بیان شده است. این مثال ها به سادگی، ویژگی های اساسی قوانین ماژول ThemeKey را بیان می کنند.
    مثلا برای اینکه قالب کاربر مدیر اصلی سایت (یوزر با uid برابر 1) را مشخص کنید، تنظیمات زیر را پیشنهاد داده است:

    Property: user:uid
    Operator: =
    Value: 1

    یعنی از انتخابگر اول باید user:uid انتخاب شود و عملگر = نیز از انتخابگر دوم انتخاب شده باشد و نهایتا فیلد متنی نیز حاوی عدد 1 باشد.

    مثال هایی از قوانین ماژول themekey دروپال

  2. PROPERTIES EXPLAINED: در این قسمت شرایطی که در فرم افزودن قانون جدید در انتخابگر اول مشاهده می شوند، توضیح داده شده است. مثلا نوشته شده است که گزینه drupal:path_is_admin مشخص می کند که صفحه ای که مشاهده می شود، یک صفحه مدیریتی است یا خیر. مقادیر آن می تواند true و یا false باشد. برای بعضی از شرایط مثل drupal:path توضیحات وسیعتری ارائه شده است.

    PROPERTIES EXPLAINED در ماژول themekey دروپال

  3. OPERATOR EXPLAINED: این قسمت علمگر هایی که در انتخابگر دوم می بینید، را توضیح داده است. مثلا بیان کرده است که علامت ! به معنای مساوی نبودن، علامت * مشخص می کند که شرط حاوی یک عبارت باشد.

    OPERATOR EXPLAINED در ماژول themekey دروپال

نظرات

من خیلی وقت پیش با ماژول ThemeKey آشنا شدم، ولی قسمت نشده توی هیچ پروژه‌ای ازش استفاده کنم!
توضیحات خیلی خوب و کامل بود.

تصویر admin
پیام جان (دروپال‌ کار)، ماژول خوبی هست. من به این ماژول نیاز داشتم. چون قرار بود یک سایت، ضمن اینکه تم صفحات اصلی اش عوض شود، تم صفحات کاربری اش مثل قبل بماند. به این خاطر این ماژول کمک بسیار بزرگی کرد.

واقعا عالیه
بابت همه زحماتتون تشکر می کنم

تصویر admin
ستار جان! بنده هم از زحمات شما تشکر می کنم که از سایت بازدید می کنید، مطالعه می کنید و نظر می دهید ...

سلام خواهشا اموزش این ماژول هم بزارید
https://drupal.org/project/workflow

تصویر admin
دوست عزیز ناشناس، از اینکه در سایت نظر خود را مطرح می کنید، تشکر می کنم. حتما این پیشنهاد شما را نیز مد نظر قرار می دهم.

با سلام
ممنون از زحمات شما
این ماژول رو نصب کردم و من از امگا برای تم ها استفاده کردم، میخوام توی تم هایی که برای صفحاتم انتخاب میکنم مدیریت بلاک ها رو هم در دست بگیرم. یعنی در قالب شماره 2 بلوک هایی که میخوام رو بیارم و رو اون بلاک ها کمی استایل بدهم.
ممنون میشوم راهنماییکنید من رو...

تصویر admin
حامد خان، فکر می کنم سوال شما را درست متوجه نشدم باشم. در صفحه مدیریت های بلاک دروپال، شما می توانید برای هر تم مشخص کنید که چه بلوک هایی قرار است نمایش داده شود. اگر برای هر صفحه یک تم را معین می کنید طبیعتا در CSS آن تم می توانید نمایش متفاوتی را برای هر بلاک در هر تم ایجاد کنید.

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

تصویر admin
ببخشید من خیلی درست متوجه نشدم که شما چه کاری می خواهید انجام بدهید.تنها چیزی که می توانم توصیف کنم این است که با استفاده از ماژول توضیح داده شده در این مقاله می توانید برای هر صفحه در دروپال یک Theme متفاوتی را لود کنید. هر theme هم از تم دیگر مجزا است. اگر بخواهید در یک صفحه ضمن اینکه یک تم وجود دارد بعضی از بلاک های آن با تم دیگر نمایش داده شوند، فکر نمی کنم این کار ممکن باشد. شما لازم است، آن استایل را در آن تم هم تکرار کنید.

بله، بنده کمی گنگ توضیح دادم ومطمئنا با این توضیح گنگ به جواب نمیشه رسد.
در هر صورت ممنون.

ارسال نظر