قالب بلاگر ، یک سند xhtml است که بر اساس یکسری متغیر ارائه شده است . این خودآموز با هدف کمک به درک قالبهای بلاگر ، آزمایش ، آموختن و تغییر آن ایجاد شده است .قالب بلاگر ، در اصل از سه نوع متغیر تشکیل شده است که یکی از این متغیرها ، کدهایی که بدنبال آن می آید را کنترل می کند . دیگری داده ها را از پایگاه داده می گیرد و بالاخره آخرین متغیر نیز حاوی اصطلاحات است . سپس این متغیرها به کمک فضاهای اسمی xml ، از یکدیگر تفکیک می شوند .
این قسمت ، نخستین بخش از 3 سری آموزشی می باشد .
تمرکز این آموزش بر روی اصول قالب ، و فضاهای اسمی خواهد بود .
فهرست موارد آموزشی بدین شرح است : ( با کلیک بر روی هر قسمت ، می توانید منبع اصلی این مطالب را نیز ببینید )
- Blogger Template Explanation - Sections, widgets, includables, includes. b: namespace
- Blogger Template Explanation - Data access. data: namespace elements.
قالب بلاگر ، یک سند xhtml است که بر اساس مشخصات آدرس زیر می باشد :
http://www.w3.org/1999/xhtml
فضاهای اسمی زیر در قالب بلاگر به کار رفته است :
# <html
# xmlns = 'http://www.w3.org/1999/xhtml'
# xmlns:b = 'http://www.google.com/2005/gml/b'
# xmlns:data = 'http://www.google.com/2005/gml/data'
# xmlns:expr = 'http://www.google.com/2005/gml/expr'
# >
این فضای اسمی در سراسر سند xml برای واکشی و نمایش داده بکار می روند . فلذا این خودآموز اساسا قصد تشریح متغیرها را در فضای اسمی 'b' دارد . متغیرها در این فضای اسمی ، طرح بندی و روند قالب وبلاگ را کنترل می کنند که به قرارگیری عناصر وبلاگ در مکان مشخص و شرایط شرطی همانند حلقه ها کمک می کند . بعدا در مورد فضاهای اسمی ، بیشتر توضیح می دهیم .
اصولا قالب به بخش هایی (sections) تقسیم شده است . این بخش ها نیز به نوبه ی خود ، شامل اشیایی (widgets) هستند . اشیاء هم ، زیرمجموعه هایی (includable) دارند . زیرمجموعه ها نیز اگر بوسیله ی برچسب « شمول » (include) بکار گرفته نشوند ، بلااستفاده خواهند بود .
برچسب « بخش » section
برچسب « بخش » ، تقسیم بندی قالب بلاگر شما را تعیین می کند . « بخش » نمی تواند به طور مستقیم ، یک کد را در برگیرد . « بخش » فقط می تواند در برگیرنده ی « اشیاء » (widget) باشد . آنچه در زیر می بینید ، مشخصات و پیکربندی پشتیبانی شده توسط برچسب « بخش » می باشد .
1. <b:section [attribs] >
2. </b:section>
Id
وجود این کارکن ، ضروری است
شناسه ای که سبب شناسایی « بخش » می شود ، بایستی یگانه و منحصر بفرد باشد .
این شناسه (id) می تواند برای شناسایی « بخش » ، پس از ارائه و عرضه ی وبلاگ بکار گرفته شود .
برچسبهای « بخش » بصورت برچسبهای div که از همین شناسه استفاده می کنند نیز حضور دارند .
Class
وجود این کارکن ، اختیاری است .
اسامی مشترک کلاس ، عبارتند از navbar , header,sidebar, footer
اگر شما بعدا قالب ها را تعویض کنید ، این اسامی به بلاگر کمک می کنند تا چگونه بهترین ارسال را بر روی محتویات شما داشته باشند .
Maxwidgets
وجود این کارکن ، اختیاری است .
این کارکن ، بیانگر تعداد حداکثر اشیاء مجاز در این « بخش » می باشد .
اگر شما محدوده ای را برای آن تعیین نکنید ، آن مقدار ، یک نخواهد شد .
Show addelement
وجود این کارکن ، اختیاری است .
پاسخ آن نیز می تواند بله یا خیر باشد . (yes/no)
حالت پیشفرض آن ، بله است (yes)
این فاکتور ، تعیین می کند که آیا برگه ی (tab) « عناصر صفحه » (page elements) ، پیوند « یک عنصر صفحه بیفزایید » را در این « بخش » نشان بدهد یا خیر.
Growth
وجود این کارکن ، اختیاری است .
این کارکن می تواند دارای حالات « افقی » یا « عمودی » باشد (horizontal/vertical)
حالت پیشفرض این کارکن ، عمودی است (vertical)
این کارکن ، روش ترتیب قرارگیری اشیاء درون این « بخش » را تعیین می کند که آیا « کنار به کنار » باشد یا « انباشته »
برچسب شیء (widget)
برچسب های اشیاء در درون برچسبهای « بخش » قرار دارند . دو شیوه برای دیدن کدهای HTML در صفحه ی « ویرایش HTML» وجود دارد . یک روش ، شکل ساده است که به صورت پیش فرض نشان داده می شود و دیگری شکل « گسترش اشیاء » با استفاده از جعبه ی بازرسی (check box) .
در شکل ساده ، اشیاء با پیکربندی «تک برچسب » (single tag ) ، درون « بخش ها » قرار گرفته اند .
یعنی باز و بسته شدن برچسب ، در یک خط صورت می گیرد .
# <!--Simple form.-->
# <b:widget [attribs] />
#
# <!-- Expanded form. -->
# <b:widget [attribs] >
# </b:widget>
یک « شیء » می تواند حاوی مشخصات زیر باشد :
Id
وجود این کارکن ، ضروری است
این کارکن ، فقط می تواند شامل حروف و اعداد باشد .
هر شناسه ی « شیء » بایستی منحصر بفرد و یگانه باشد .
شناسه ی « شیء » بدون پاک کردن و ایجاد « شیء» جدید نباید تغییر کند .
همانند برچسب های « بخش » ، برچسب های « شیء » نیز به برچسب های div تبدیل شده که از همان شناسه استفاده می کند .
Type
وجود این کارکن ، ضروری است .
این کارکن نشان می دهد که این شیء از چه نوعی است و بایستی یکی از انواع صحیحی باشد که در زیر ، فهرست شده است .
Locked
وجود این کارکن ، اختیاری است .
این کارکن می تواند دارای حالات بله یا خیر باشد (yes / no )
حالت پیشفرض این کارکن ، نه می باشد (no)
اشیاء قفل شده (locked) ، قابلیت جابجایی یا حذف از برگه « عناصر صفحه » را ندارند .
Title
وجود این کارکن ، اختیاری است .
این کارکن ، یک عنوان برای اشیاء است .
اگر عنوانی برای اشیاء انتخاب نشود ، یک عنوان پیش فرض ، مثل "list1" بکار خواهد رفت .
Page type
وجود این کارکن ، اختیاری است .
این کارکن ، می تواند شامل هر یک از این موارد باشد : item , main , archive , all
حالت پیشفرض این کارکن ، all می باشد .
اشیاء صرفا در صفحات تعیین شده در وبلاگ شما به نمایش در خواهند آمد .
این در حالی است که در برگه ی عناصر صفحه (page elements) ، بدون توجه به نوع آنها ، به نمایش در خواهند آمد .
نوع « اشیاء » می تواند یک از انواع تعیین شده باشد ، از جمله موارد زیر :
BlogArchive, Blog, Feed, Header, HTML, SingleImage, LinkList, List, Logo, BlogProfile, Navbar, VideoBar, NewsBar
اشیاء در شکل ساده ، فقط موقعیت قرارگیری را به شما نشان می دهند . اگر شما خواهان ویرایش اشیاء هستید ، به حالت نمایش پیشرفته ، یعنی « گسترش اشیاء » (expand widget) تغییر حالت بدهید .
برچسب زیرمجموعه (includable)
اشیاء ، مجموعه ای از زیرمجموعه ها و معمولا شامل یک زیرمجموعه ی اصلی هستند . « زیر مجموعه ها » ، همانگونه که از نامشان پیداست ، تکه هایی از کدهایی هستند که می توانند با هم در تعامل باشند تا از برخی تکرارها ، جلوگیری کنند . فلذا این زیرمجموعه ها می توانند در جاهای مختلف بکار گرفته شوند . سوای موضوع جلوگیری از تکرارها ، زیرمجموعه ها به درک ساختار اشیاء کمک می کنند . برچسب « زیرمجموعه » بخشی از فضای اسمی 'b' نیز می باشد . از اینرو ، زیرمجموعه دارای برچسبی به این صورت خواهد بود .
1. <b:includable id='[some-unique-id]' [attribs] >
2. </b:includable>
برچسب زیرمجموعه دارای مشخصات زیر است :
Id
وجود کارکن شناسه ، ضروری است .
کارکن شناسه ، کارکن تعیین هویت است که از حروف و اعداد تشکیل شده است .
توجه : اشیاء بایستی حداقل دارای یک « زیرمجموعه » باشند که شناسه ی آن نیز "main" باشد .
Var
وجود این کارکن ، اختیاری است .
این کارکن ، یک کارکن تعیین هویت متشکل از حروف و اعداد است که برای ارجاع داده های درون این بخش ، بکار می رود .
داده ها نیز همانند فضای اسمی ، ارجاع داده خواهند شد . یعنی اگر "var=a" بکار رود ، سپس عنوان (title) در داده (data) می تواند به صورت a:title رجوع داده شود .
برچسب شمول (include)
« زیرمجموعه » هایی که در بالا ایجاد شد ، نیازمند آن است که زیرمجموعه ی اشیاء شود و بهمین منظور از برچسب « شمول » استفاده می کنیم . اگر « اشیاء » شما صرفا دارای یک « زیرمجموعه » است که در این صورت ، شناسه ی آن ، "main" خواهد بود ، نیازی نیست که بخاطر آن ، یک « شمول » جداگانه تشکیل دهیم ، چرا که « تک زیرمجموعه » بصورت پیش فرض ، تحت شمول قرار خواهد گرفت . برچسب « شمول » ، شامل دو مشخصه ی اصلی است : « نام » که به شناسه ی « زیرمجموعه » ارجاع می دهد و « داده » که به متغیر (var) زیرمجموعه ارجاع می دهد . برچسب « شمول » ، حالت « خودبسته شو » داشته و نیازی به برچسب « بستن » ندارد .
1. <b:include name='[the-includable-name]' data='[the-expression-for-var]'/>
و اما مشخصات نام و داده
Name
وجود این کارکن ، ضروری است .
این کارکن ، به « زیرمجموعه » ای که بایستی تحت شمول قرار گیرد ، اشاره می کند .
بنابراین بایستی « زیرمجموعه » ای با شناسه ی این نام وجود داشته باشد .
Data
وجود این کارکن ، اختیاری است .
همانند فراسنجه ای (parameter) که به یک کارکرد یا تابع میرسد ، این داده نیز به « زیرمجموعه » می رسد .
این کارکن ، بخشی از داده است که به سمت بخش « زیرمجموعه » حرکت خواهد کرد .
ما می توانیم هر نامی را برای « زیرمجموعه » برگزینیم ، ولی آن اسم بایستی برای « اشیاء » یگانه و منحصر بفرد باشد . این زیرمجموعه می تواند در یک یا چند جا در اشیاء بوسیله ی برچسب « شمول » بکار رود .
برچسب شرطی اگر/ وگرنه (if/else)
این برچسب به شکل زیر است :
# <!-- Only if-->
# <b:if cond='[some condn check]'>
# [Then do this]
# </b:if>
#
#
# <!-- both if and else-->
# <b:if cond='[some cond check]'>
# <!-- [Then do this] -->
# <b:else/>
# <!-- [else do this] -->
# </b:if>
از روی شکل بالا ، عملکرد این برچسب ، کاملا مشخص است .
چیزی که بایستی بدانیم ، این است که برچسب « وگرنه » (else) ، حالت « خود بسته شو » دارد .
برای درک بهتر مطلب ، مثالهای زیر را ببینید.
1. <!-- to check a boolean variable. -->
2. <b:if cond='data:useImage'>
3. <!-- [execute if the header for your blog is image instead of text] -->
4. </b:if>
5.
6. <!-- to compare equivalence of two values-->
7. <b:if cond='data:blog.pageType == "item"'>
8. <!-- [True if the current page is an item page (post page).] -->
9. </b:if>
10.
11. <!-- to compare non-equivalence -->
12. <b:if cond='data:displayname != "Fred"'>
13. <!-- [True if this is not Fred's display name.] -->
14. </b:if>
15.
16. <!-- comparing greater than, less than-->
17. <b:if cond='data:post.numComments > 1'>
18. <!-- [True if the current post has more than one comment.] -->
19. </b:if>
برچسب حلقه (loop)
این برچسب نیز بخشی از فضای اسمی 'b' است . عملکرد آن نیز همانند یک حلقه است . یعنی برای هر عنصر در مجموعه ای از عناصر ، می توانید کار خاصی را انجام دهید . مثلا در بخش نظرات وبلاگ ، همه ی نظرات را نمایش دهد . اگر شما بدنبال ایجاد تغییراتی در بخش نظرات وبلاگ خودتان هستید ، بایستی نگاهی به یان حلقه داشته باشید . کارکرد این برچسب ، بسیار واضح و روشن است . فقط کافی است که نگاهی به آن بیندازید .
1. <b:loop var='some-identifying-var' values='set-of-something'>
2. <!-- [For every var in the values i.e., for every data in the set of data do something here] -->
3. </b:loop>
اکنون شما ، پایه های کار را انجام دادید ولی هنوز یک چیز خیلی مهم باقی مانده است : نمایش داده های شما .
بدیهی است شما نمی خواهید که فقط یک صفحه ی خوشگل بدون داده داشته باشید .
شما بایستی داده هایتان را نیز نمایش دهید .
بنابراین بایستی چیزهایی را در مورد فضای اسمی داده نیز یاد بگیریم .
با توجه به چیزهایی که گفته شد ، فضای اسمی داده ، حاوی مهمترین متغیرهاست و اگر در این قسمت به آن بپردازیم ، سبب بهم ریختگی ذهنی شما خواهد شد .
پس مقاله ی جداگانه ای را در این رابطه خواهم نوشت .
بدانید که هنوز بایستی تجربه ی بیشتری کسب کنید ، پس مطلب بعدی را نیز حتما بخوانید .
بنابراین بروید یک استکان چای بنوشید و آماده شوید که مطالعه ی کدها را شروع کنیم .
از اینکه با نظرات ارزشمند خودتان ، به من کمک کنید ، خوشحال می شوم .
اگر توضیحات بهتری در این رابطه دارید ، در بخش نظرات بنویسید .