نوشتههای این بلاگ کپیراست داره!
برای اینکه با Widgets بیشتر آشنا بشید پیشنهاد میکنم این دو تا نوشته رو بخونید:
Widgets چیست و چگونه آنرا نصب کنیم؟
چگونه قالبهای خود را با Widgets هماهنگ کنیم؟
بریم سر بحث اصلیمون، یعنی هماهنگ کردن قالبهایی که از چند نوار کناری استفاده میکنن با Widgets، تو این شرایط دو حالت ممکنه پیش بیاد:
۱. همهی ستونهای شما از نظر کدنویسی مشابه باشند
۲. ستونهای شما از نظر کدنویسی متفاوت باشند
که ما بهتفصیل هر دو حالت رو شرح میدیم.
- حالت اول (کدنویسی مشابه):
در این حالت چون ساختار کدنویسی ستونها مانند هم است میخواهیم با یک دستور به تعداد دلخواه نوار کناری تعریف کنیم، برای این کار در پوشهی قالب خود فایل functions.php را بیابید (اگر وجود ندارد آنرا ایجاد کنید) و دستورات زیر را به آن اضافه کنید:
اگر از نوارکناری لیستی استفاده میکنید:
if ( function_exists('register_sidebars') )
register_sidebars(N);
اگر از نوارکناری غیرلیستی استفاده میکنید:
if ( function_exists('register_sidebars') )
register_sidebars(N, array(
'before_widget' => 'BEFORE_WIDGETS_CODE',
'after_widget' => 'AFTER_WIDGETS_CODE',
'before_title' => 'BEFORE_WIDGETS_TITLE_CODE',
'after_title' => 'AFTER_WIDGETS_TITLE_CODE'
));
که در کدهای بالا بهجای N در تابع register_sidebars تعداد نوارکناریهایی که میخواهید ایجاد شوند را بنویسید، مثلن برای بهوجود آوردن ۲ نوارکناری داریم:
اگر از نوارکناری لیستی استفاده میکنید:
if ( function_exists('register_sidebars') )
register_sidebars(2);
اگر از نوارکناری غیرلیستی استفاده میکنید:
if ( function_exists('register_sidebars') )
register_sidebars(2, array(
'before_widget' => 'BEFORE_WIDGETS_CODE',
'after_widget' => 'AFTER_WIDGETS_CODE',
'before_title' => 'BEFORE_WIDGETS_TITLE_CODE',
'after_title' => 'AFTER_WIDGETS_TITLE_CODE'
));
نکته: برای آگاهی از مفهوم نوارهای لیستی و غیرلیستی و همچنین آرگومانهایی که در حالت غیرلیستی در تابع register_sidebars استفاده شده است به نوشتهی قبلی من در همین مورد مراجعه کنید.
حال برای صدا زدن نوارهای کناری که تعریف کردهایم همچون نوشتهی قبلی از تابع dynamic_sidebar بهصورت شرطی در ابتدا و انتهای نوارکناری معمولیمان استفاده میکنیم:
ابتدا:
<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar(شماره مشخصه نوار کناری) ) : ?>
انتها:
<?php endif; ?>
که بهجای «شماره مشخصه نوار کناری» در تابع dynamic_sidebar در ابتدای نوار کناری معمولی، عدد مشخصه نوارکناری مورد نظرمان را میگذاریم، مثلن برای فراخوانی نوار شماره ۲ داریم:
در ابتدا:
<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar(2) ) : ?>
- حالت دوم (کدنویسی متفاوت):
برای این حالت بهتعداد نوارکناریهایی که میخواهیم تعریف کنیم باید از تابع register_sidebar استفاده کنیم و هر نوار را بهدلخواه نامگذاری کنیم.
برای مثال من دو نوار میخوهم تعریف کنم که نام یکی را “Avali” و نام دیگری را هم “Dowomi” میگذارم، که اولین نوارکناری بهصورت لیستی است و نوار دوم بهصورت غیرلیستی، در فایل functions.php مینویسیم:
if ( function_exists('register_sidebar') ) {
register_sidebar(array(
'name' => 'Avali'
));
register_sidebar(array(
'name' => 'Dowomi',
'before_widget' => 'BEFORE_WIDGETS_CODE',
'after_widget' => 'AFTER_WIDGETS_CODE',
'before_title' => 'BEFORE_WIDGETS_TITLE_CODE',
'after_title' => 'AFTER_WIDGETS_TITLE_CODE'
));
}
بدینترتیب دو نوارکناری با نامهای Avali و Dowomi تعریف کردیم، حال برای فرخوانی آنها در قالب خود طبق معمول از تابع dynamic_sidebar استفاده میکنیم، و نام نوارکناری موردنظرمان را بهعنوان آرگومان ورودی تابع معرفی میکنیم.
برای فراخوانی اولین نوارکناری داریم:
< ?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('Avali') ) : ?>
محتویات نوارکناری اول در حالت عادی
< ?php endif; ?>
و برای دومی هم داریم:
< ?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('Dowomi') ) : ?>
محتویات نوارکناری دوم در حالت عادی
< ?php endif; ?>
تموم شد، همین! :)
مرتبط:
Widgets چیست و چگونه آنرا نصب کنیم؟
چگونه قالبهای خود را با Widgets هماهنگ کنیم؟