خیلی وقتها هست که میخواهیم برای یک حالت خواص از یک Node یا Term یا User یا Menu یا Block یا Region یا Page یا هر Entity دیگری یک فایل قالب اختصاصی ایجاد کنیم و داخلش هر نوع کد دلخواهی وارد کنیم که اختصاص به اون حالت داشته باشد.

 

مثلا: ما به صورت پیشفرض میتونیم فایل node.html.twig را برای هر نوع NodeType دلخواه overwrite کنیم مثلا میشه اینجوری: node--[myNodeType].html.twig و داخل این فایل هرجور دوست داریم به دلخواه خود برای نمایش این نوع از نود استایل بزنیم. اما اگر بخواهیم برای این نوع نود فایل page.html.twig هم اختصاصی باشد چطور؟

این حالت به صورت پیشفرض تعریف نشده است اما هوکهایی هست که به راحتی امکان ایجاد هر نوع سفارشی سازی را برای نام فایلهای قابل بازنویسی در قالب ایجاد می‌کنند. الگوی این هوکها به این صورت است: 

function [myThemeName]_theme_suggestions_[themeFileForOverwrite]_alter

 

مثلا هوک زیر برای ایجاد یک نام پیشنهادی جدید برای فایلهای page است :

function myTheme_theme_suggestions_page_alter(array &$suggestions, array $variables) {
}

 

وهوک زیر برای ایجاد یک نام پیشنهادی جدید جهت فایل menu :

function myTheme_theme_suggestions_menu_alter

 

خب حالا یک هوکی مینویسیم که بشود برای هر نوع از نودها فایل page.html.twig را هم به صورت اختصاصی و جداگانه بازنویسی کرد:

function sfae_theme_suggestions_page_alter(array &$suggestions, array $variables) {
	# if the page is node then add node_type to file name suggestion as "page--node-type--myNodeType.html.twig"
	if ($node = \Drupal::routeMatch()->getParameter('node')) {
		$variables['node'] = $node;
		$suggestions[] = 'page__node_type__'.$variables['node']->getType();
	}
}

 

و بعد از این میتونیم از این الگو برای بازنویسی فایلهای page.html.twig استفاده کرد:

page--node-type--[myNodeType].html.twig

 

حالا با همین هوک آخر یک حالتی بنویسید که برای هر نود به ازای هر یک از term ها یا دسته هایی که عضو آنها هست بتوان فایل page را بازنویسی کرد! میتونیم نوع نود را هم در این حالتها دخالت بدهیم تا صدها پیشنهاد یا suggestions جدید ایجاد گردد :)

خبر خوشحالی بخش اینکه اگر تنظیمات حالت develop روی پروژه شما فعال باشد در مروگر خود در هر صفحه ای و هرجایی از سایت که کد را باز کنید (inspect) فایل نام های پیشنهادی موجود جهت overwrite کردن فایل در آن قسمت را در حالت کامنت به شما نمایش میدهد و فایل فعال فعلی را با یک ضربدر مشخص کرده است.

برای استفاده از این امکان دولوپری در فایل development.services.yml پروژه حالت زیر را اضافه کنید:

parameters:
  twig.config:
    debug: true

 

موفق باشید

یادتون هست که چند وقتی در تمام صفحات سایت اصلی دروپال یعنی Drupal.org تبلیغ عضو گیری برای اتحادیه دروپال یا همان Drupal Association انجام می‌شد؟

حالا دروپال اعلام کرده است که برای گسترش وجهه عمومی و مردمی این اتحادیه، برای انتخاب چند نفر از اعضا هیئت مدیره اتحادیه امسال انتخابات برگزار خواهد کرد.

این هیئت مدیره نقش تعیین کننده ای در سیاستهای کلی حاکم بر استراتژی های توسعه دروپال خواهند داشت!

https://www.drupal.org/association/blog/drupal-association-board-elections-2019

کلیدواژه ها: 

Drupal Association


کسانی که به خام و زشت بودن دروپال در نصب اولیه اعتراض داشتند باید خوشحال باشند که ازین به بعد موقع نصب دروپال 8 می‌توانید پروفایل umami را انتخاب نمایید تا یک دموی اولیه شامل قالب زیبا و محتوای آزمایشی با موضوع آشپزی برای شما ایجاد شود. خب این اعتراض به جایی بود بخصوص برای کسانی که از سیستم های مدیریت محتوای دیگه به دروپال مهاجرت میکردند و دروپال را با آنها مقایسه میکردند. مبارک باشد :)


دروپلر یک توزیع و پروفایل دروپال 8 هست که یک بسته کامل دروپال را با تمام ماژولها و کتابخانه ها و مخلفات مورد نیاز در اختیار شما قرار میدهد و برای پروژه های که خیلی وقتتون محدود هست میتواند کمک کند.

این پروفایل امکانات جالبی از جمله مدیریت Drag&Drop با کشیدن و ول کردن باکسها، بلوکها و ویترین ها در صفحات مختلف را به کمک ماژول Geysir در اختیار شما قرار میدهد. قالب اون هم با Bootstrap4 طراحی شده و توسعه و تغییرات را آسان میکند.

اگر نکته جالبی در این پروفایل دیدین به ما هم خبر بدین:

https://www.drupal.org/project/droopler

به گزارش ایران دروپال؛ نرم افزار مدیریت محتوای تحت وب ایران دروپال بر مبنای دروپال 8 در دست استاندارد سازی و نشر عمومی می‌باشد.

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

ایران دروپال به عنوان یکی از مروجین دروپال در ایران از شما برای هرگونه پیشنهادی جهت بهتر شدن این پروژه دعوت می‌کند.

ایران دروپال همچنین از هرگونه پیشنهادی در فضای وب جهت گسترش کدباز (OpenSource) و توسعه امکانات بومی در فضای فنی وب فارسی و ایرانی استقبال می‌کند.

/پایان


در فایلهای tpl دروپال 7 و یا فایلهای twig دروپال 8 خیلی وقتها پیش میاد که میخواهید به یک متغییری دسترسی داشته باشید تا آن را چک کنید یا نمایش دهید ولی هرچقدر متغییرها و آرایه های موجود را با dpm یا krumo یا kint زیر رو میکنید آن را پیدا نمی‎کنید.

در هر دو نسخه دروپال 7 و 8 کافیه به سادگی در PreProccess مربوط به آن متغییر را فراخوانی کنید تا در فایل قالب بتوانید از آن استفاده کنید.

مثلا اگر در فایل مربوط به یک page بودید preproccess مربوط به آن و اگر در فایل مربوط به block بودید در preproccess مربوط به آن و همینطور اگر در فایلهای مربوط به node یا region یا html یا views بودید.

مثلا میخواهیم در فایل node.html.twig یا در فایل node--nodeType.html.twig یک متغییر اضافه شود که زمان ایجاد محتوا را به صورت (مدت گذشته مثلا: 2 روز و 3 ساعت قبل) نمایش دهد.

تابع preproccess مربوط به node را در فایل توابع قالب (دروپال 7: template.php)  (دروپال 8: mytheme.theme) ایجاد میکنیم و در آن NodeType مورد نظر را چک میکنیم و اگر دلخواه ما بود متغییر مورد نظر را ایجاد و به آرایه Variables اضافه میکنیم. در نتیجه هر چه در آرایه Variables وجود داشته باشد در فایل twig یا tpl در دسترس خواهد بود.

 

<?php
# Define node PreProccess function
function myTheme_preprocess_node(&$variables) {
	# Check if NodeType is MyNodeType
	if($variables['node']->getType() == "myNodeType"):
		# Get created time
		$created_time = $variables['node']->created->value;
		# make ago time by date formatter and add to $variables['created_ago']
		$date_formatter = \Drupal::service('date.formatter');
		$variables['created_ago'] = $date_formatter->formatDiff($created_time, REQUEST_TIME, [
			'granularity' => 2,
			'return_as_object' => TRUE,
		]);
	endif;
}
?>

 

همچنین از تابع myTheme_preprocess میتوانیم برای تعریف متغییرها در تمام فایلهای theme استفاده کنید:

 

<?php
function myTheme_preprocess(&$vars) {
	# add GLOBALS array to all theme files
	$vars['globals'] = $GLOBALS;
	
	# add current page langugae id
	$vars['current_language'] = \Drupal::languageManager()->getCurrentLanguage()->getId() == 'zh-hans' ? 'ch' : \Drupal::languageManager()->getCurrentLanguage()->getId();

	# add the theme full path
	$vars['theme_full_path'] = $GLOBALS['base_url'].'/'.drupal_get_path('theme', 'sfae');
}
?>

 

در مثال فوق سه متغییر جدید به تمام فایلهای theme اضافه شده است. متغییر اول آرایه Globals را اضافه میکند. متغییر دوم شناسه زبان فعال کاربر در هر صفحه را به تمام فایلها theme اضافه میکند. و متغییر سوم آدرس کامل دایرکتوری theme را در فایلهای twig قابل دسترس میکند.

 

موفق باشید

 

نسخه جدید بسته فروشگاه ساز ایران دروپال با امکانات جدید و متنوع تحت عنوان نسخه 2 آماده شد.

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

از امکانات این بسته نرم افزاری میتوان به موارد زیر اشاره کرد:

 

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

الوپیک یک سرویس آنلاین درخواست و دریافت پیک جهت ارسال مرسولات به مقاصد مختلف میباشد. این سرویس آنلاین جهت بهره برداری حداکثری در فضای اینترنت یک API ارائه داده است که میتواند در سایر وب سایتها به صورت هوشمند استعلام قیمت و درخواست سفارش را انجام دهد.

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

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

در بخش استفاده از نقشه با توجه به محدودیت ها و قوانین جدید گوگل و همچنین افزایش قیمت استفاده از خدمات گوگل مپ، بر آن شدیم تا با بررسی سرویس های نقشه کد باز (Open Source) یکی از سرویس های مناسب و حرفه ای را انتخاب کنیم. انتخاب ما LeaftLetJS بود که با خدمات عالی و حرفه ای و کاملا رایگان تمامی نیازهای نقشه‎ای ماژول های مختلف را میتواند پوشش دهد. ما همچنین از منابع داده جغرافیایی OpenStreetMap که آن هم رایگان و کد باز است استفاده کردیم.

همچنین انتشار نسخه‌ای برای استفاده در دروپال 8 در برنامه ما قرار دارد.

شما میتوانید ماژول الوپیک و توضیحات تکمیلی درباره آن را در سایت رسمی دروپال مشاهده و دانلود نمایید:

https://www.drupal.org/project/alopeyk

 

آلبوم تصاویر

صفحات