این نوشتار ، قسمت دوم از خودآموز سه قسمتی « قالب بلاگر » است که در خصوص داده ها ، فضای اسمی و آشنایی با چگونگی دستیابی به متغیرهای آن به بحث می پردازد .
فضای اسمی داده ، مهمترین برچسب است ، چرا که راهی است که بدانوسیله شما می توانید به داده هایتان دسترسی پیدا کنید . اصولا فضای اسمی ، راهی برای شناسایی و حفظ یگانگی در گستره ای از عناصر موجود است . این شناسایی و یگانگی در اسناد xml بدین صورت است : [namespace-identifier]:[the-tag]
در اینجا ، داده ، شناسه ی فضای اسمی است و عناصر یکتای بیشتری نیز دارد . اصولا یک فضای اسمی ، در شناسایی و اختصاص اسامی یکتا به متغیرها کمک می کند .
متغیرهای داده ، تنوع فراوانی دارند . برخی از این متغیرها ، دسترسی کلی دارند . منظورم از دسترسی کلی ، این است که در هر جایی ، قابلیت دسترسی دارند . در حالیکه شناسه ها و برچسب های مشخص ، صرفا می توانند توسط شیء مشخص ، دسترسی داشته باشند .
اکنون به چگونگی عملکرد آنها می پردازیم :
داده های با دسترسی کلی The Globally available data
این داده ها در هر جایی از وباگ شما ، قابلیت دسترسی دارند . بنابراین هر جا که تمایل داشته باشید ، می توانید از آنها استفاده کنید . این داده ها به صورت بخشی از داده های « وبلاگ » ارجاع خواهند شد . مثلا در عنوان وبلاگ به صورت blog.title مورد مراجعه قرار می گیرند . فراموش نکنید که داده های فضای اسمی را در آغاز کار ، تحت شمول قرار دهید . کدهای زیر ، چگونگی کاربرد این کدها را تشریح می کند .
<!--[The blog's title.]--> <data:blog.title/> <!--[ The type of the current page. One of 'item', 'archive', or 'index'. This var is quite useful for selectively showing content on different type of pages. Put an if and check if its index page or item page and then display selective content ]--> <data:blog.pageType/> <!-- [The URL of the current page.] --> <data:blog.url/> <!-- [The homepage of the blog.] --> <data:blog.homepageUrl/> <!--[ The title of the current page. This is often the blog title, but may contain additional information on archive or post pages. ]--> <data:blog.pageTitle/> <!-- [The encoding to use for the blog, e.g. UTF-8.] --> <data:blog.encoding/> <!--[ Either "ltr" or "rtl" for left-to-right and right-to-left languages, respectively. ]--> <data:blog.languageDirection/> <!-- [The autodiscovery feed links for the page header.] --> <data:blog.feedLinks/>
جدای از داده های با دسترسی کلی ، داده های مشخصی نیز هستند که برای انواع مشخصی از اشیاء کاربرد دارند. در زیر ، فهرستی از انواع اشیاء را مشاهده می کنید . برای هر یک از این اشیاء ، برچسب های مختلفی موجود است .
- Page Header
- Blog Archives
- Profile
- Text / HTML / JavaScript
- Feed
- Picture
- Labels
- List
- Link List
- Logo
- Blog Posts
اشیاء سرصفحه Page header widgets
این اشیاء ، اصولا توسط « بخش » سرصفحه (header section) در مدخل وبلاگ شما ، مورد استفاده قرار میگیرند . یعنی جایی که عنوان و توضیح وبلاگ آورده شده است . این شیء ، بسیار ساده بوده و صرفا از دو نوع از متغیرهای داده جهت دسترسی ، استفاده می کند . بخاطر داشته باشید که این اشیاء به کاربردی همچون شناسه ی وبلاگ (blog.identifier) که در مورد داده های با دسترسی کلی وجود داشت ، نیازی ندارند . این اشیاء می توانند بطور مستقیم در اشیاء از نوع سرصفحه به کار گرفته شوند .
1. <!--[The blog's title. ]--> 2. <data:title/> 3. 4. <!-- [ The blog's description. ]--> 5. <data:description/>
آرشیو وبلاگ Blog Archive
سه نوع پیکربندی برای آرشیوهای وبلاگ وجود دارد .
فهرست (menu)
مسطح (flat)
سلسله مراتب (hierarchy)
اگر شما نسخه ی جدیدی را طراحی می کنید ، استفاده از پیکربندی « مسطح » آسانتر است . حالا می توانید ادامه ی کار را به شیوه ی دلخواهتان بپیمایید .
داده های کلیدی بشرح زیر هستند .
Title
Style
Data
Data : شامل نام مدت آرشیو ، آدرس پست و شماره ی پست در طول مدت می باشد .
Title : عنوان شی ء
Style : شامل یکی از حالات زیر خواهد بود :
Menu
Flat
Hierarchy
Data : لیستی از هر بخش از آرشیو که هر کدام از آنها ، شامل موارد زیر است :
Name : نام مدت یا دوره ی تکرار آرشیو
url : پیکربندی پستهای موجود در صفحه
Post-count : تعداد پست های موجود در این مدت
کاربرد : « زیر مجموعه » را برای حالت مسطح مورد بررسی قرار دهید که می تواند به صورت شمول در زیرمجموعه ی اصلی برای نمایش ، تحت شمول قرار گیرد .
<!--[ Simple usage of title ]--> <b:if cond='data:title'> <h2><data:title/></h2> </b:if> <!--[ For a includable flat type ]--> <b:includable id='flat' var='data'> <ul> <b:loop values='data:data' var='i'> <li class='archivedate'> <a expr:href='data:i.url'> <data:i.name/> </a> (<data:i.post-count/>) </li> </b:loop> </ul> </b:includable>
شیء نمایه profile widget
این شیء ، نمایه ی نویسنده ی وبلاگ است که می تواند یک نفر یا یک تیم نویسنده باشد . برای وبلاگی با یک نویسنده ، شیء نمایه ، دارای اطلاعات زیر خواهد بود
titleعنوان شیء
userUrlآدرس نمایه ی نویسنده
locationمکان نمایه ی نویسنده
aboutmeاطلاعات « درباره ی من » در نمایه ی نویسنده
displaynameنام قابل نمایش نویسنده
photoعکس موجود در نمایه ی نویسنده که حاوی موارد زیر است
urlآدرس عکس
widthعرض عکس در واحد پیکسل
heightارتفاع عکس در واحد پیکسل
altنوشته های مربوط به عکس
شیء مربوط به تیم نویسندگان ، حاوی اطلاعات کمتری است که برچسبهای آن را در زیر می بینیم .
- title
authorsفهرست نویسندگان که هر کدام از آنها شامل موارد زیر است :
displaynameنام قابل نمایش نویسنده
- userURL
آدرس نمایه ی نویسنده
اگر شما می خواهید وبلاگتان را طوری طراحی کنید که به هر دو حالت تک نویسنده و تیم نویسندگان ، دسترسی داشته باشید ، می توانید از حالت زیر برای تعیین وضعیت بین دو حالت گفته شده استفاده کنید .
Data : team variable
در زیر نیز می توانید این حالت را مشاهده کنید .
شیء جاوااسکریپت- اچ تی ام ال – متن text/HTML/JavaScript widget
این شیء بسیار ساده بوده و فقط شامل دو عنصر است :
Title : عنوان شیء
Content : محتویات شیء
کاربرد این دو عنصر مشابه همان چیزی است که در بخش کدهای آرشیو توضیح دادیم .
<b:if cond='data:team=="true"'> <!--[display multiple authors] --> </b:if>
شیء خوراک feed widget
شیء خوراک ، همانند سایر اشیاء ، برچسب هایی را برای دستیابی به اطلاعات خود از بین داده های خوراک دارد . این داده ها شامل همه موارد و عناصری است که در خوراک وجود دارد . مواردی همچون عنوان ، تاریخ انتشار ، نویسنده ، خلاصه ی متن و غیره . بنابراین اصولا این داده ی خوراک ، مجموعه ای از داده است . برچسب حلقه را که قبلا توضیح دادیم بیاد آورید . اکنون بایستی از آن در دستیابی به هر مورد از مجموعه موارد فوق استفاده کنیم .
titleعنوان شیء
feedUrlآدرس خوراک
feedDataموارد و عناصر خوراک که هر کدامشان نیز شامل موارد زیر هستند
titleعنوان هر مورد
str_publishedزمان انتشار آن مورد ( پیکربندی در محدوده ی زمانی وبلاگ )
publishedزمان انتشار آن مورد ( در ثانیه هایی پس از آن زمان )
str_updatedزمان آخرین روزآمدسازی ( پیکربندی در محدوده ی زمانی وبلاگ )
updatedزمان آخرین روزآمدسازی ( در ثانیه هایی پس از آن زمان )
authorنویسنده ی مطلب
summaryقطعه ای از متن ( در صورت دسترسی )
alternateمکانی که اطلاعات بیشتری در خصوص این مورد ، اخذ می شود . این قسمت شامل موارد زیر می شود :
hrefپیوند دائمی این مورد
typeنوع مفاد این مورد
شیء تصویر ، شامل یک « تک تصویر » است و کلیه ی داده های مرتبط برای داده را تهیه می کند .
titleعنوان شیء
sourceUrlآدرس تصویر
widthعرض تصویر در واحد پیکسل
heightارتفاع تصویر در واحد پیکسل
captionعنوان تصویر
شیء برچسب Labels Widget
شیء برچسب ، شامل لیستی از همه ی برچسب ها است که در وبلاگ استفاده شده اند .
title: The widget title.عنوان شیء
labels: The list of labels, each of which contains:فهرست برچسب ها که هر کدام از آنها شامل موارد زیر است :
nameمتن برچسب
countتعداد پستهایی که با این برچسب وجود دارند
urlیک پیوند به صفحه ای که پستهای دارای این برچسب را نشان می دهد .
شیء فهرست List Widget
این شیء ، ساده ترین نوع فهرست است . هر مورد فقط یک تکه متنی دارد ، بدون هیچ نوع متفاوتی از داده .
titleعنوان شیء
itemsفهرست موارد
کاربرد : مشابه آنچه که برای فهرست پیوندها توضیح داده شد .
یک لیست تقریبا تخیلی که هر مورد از آن ، دو بخش دارد : متن و پیوند
title:عنوان شیء
links:فهرست پیوندها ، که هر کدام از آنها شامل موارد زیر است :
name:متن پیوند
target:آدرس پیوند
<!--[Check the complete implementaion of the linklist widget. ]--> <b:widget id='LinkList1' locked='false' title='More Blogs' type='LinkList'> <b:includable id='main'> <b:if cond='data:title'> <h2><data:title/></h2> </b:if> <div class='widget-content'> <ul> <b:loop values='data:links' var='link'> <li> <a expr:href='data:link.target'> <data:link.name/> </a> </li> </b:loop> </ul> <b:include name='quickedit'/> </div> </b:includable> </b:widget>
لوگو یا آرم logo
از این ساده تر ، چیزی نداریم . اینجا فقط تکه ای از داده داریم . همین !
fullButtonآدرس دگمه ی بلاگری که توسط شما انتخاب شده است .
شیء پست وبلاگ Blog Post Widget
این شیء ، بخش مرکزی هر وبلاگ است . این بخش ، پیچیده ترین بخش وبلاگ نیز بشمار می رود .
feedLinksفهرستی از خوراک های این صفحه است . در صفحه ی اصلی ، شامل خوراک وبلاگ اصلی خواهد بود . در صفحه ی موارد و عناصر ، شامل خوراک نظرات می باشد . شیء پست وبلاگ ، زیرمجموعه ای دارد که بصورت پیوند خوراک تهیه شده که به نوبه ی خود از زیرمجموعه ی دیگری به نام « بدنه ی پیوند خوراک » استفاده می کند .
urlآدرس خوراک
nameنام خوراک ( مثلا پست یا نظرات )
feedTypeنوع خوراک (Atom or RSS)
mimeTypeنوع تقلید خوراک
olderPageUrlاگر پستهای قدیمی تر از پستی که هم اکنون بر روی صفحه وجود دارد نیز موجود باشد ، این گزینه ، آدرس آن پستها خواهد بود . نوع صفحه ، حساس به مفاد (contex-sensitive) می باشد ( این پیوند برای کلیه ی صفحات نمی باشد . بنابراین از دستورات شرطی برای آن استفاده می کنیم )
olderPageTitleعنوان پیوند به صفحات پست های قدیمی تر
newerPageUrlآدرس پستهای جدیدتر نسبت به پستهای قدیمی تر
newerPageTitleعنوان پستهای جدیدتر نسبت به پستهای قدیمی تر
commentLabelعبارت مورد استفاده برای نمایش تعداد نظرات ، مثلا « نظرات خوانندگان »
authorLabelعبارت مورد استفاده برای تشخیص نویسنده ی پست ، مثلا « نوشته شده توسط »
timestampLabelعبارت مورد استفاده برای تشخیص زمان نوشته شدن پست ، مثلا « تاریخ ارسال »
postLabelsLabelعبارت مورد استفاده برای معرفی فهرست برچسب های مورد استفاده در هر پست ، مثلا « برچسب های این نوشتار »
backlinksLabelعبارت مورد استفاده برای پیوندهای برگشتی به این پست ، مثلا « پیوندهای مربوط به این نوشتار »
postsفهرستی از همه ی پستها ی موجود در این صفحه . هر پست ، شامل موارد زیر می باشد .
dateHeaderتاریخ این پست ، که صرفا اگر این پست ، نخستین پستی باشد که در این فهرست در روز جاری ارسال شده باشد ، نمایش داده خواهد شد .
idشناسه ی پست عددی
titleعنوان پست
bodyمحتوای پست
authorنام قابل نمایش نویسنده ی پست
urlپیوند دائمی پست
timestampبرچسب زمان پست . این مورد با آنچه در بند یکم دیدیم متفاوت است . این تاریخ برای همه ی متن ها وجود خواهد داشت .
labelsفهرست برچسب های پست . هر برچسب ، حاوی موارد زیر خواهد بود .
nameمتن برچسب
urlآدرس صفحه ای که کلیه ی پستهای این وبلاگ را که دارای این برچسب هستند ، فهرست می کند .
isLastدرست یا غلط . مشخص می کند که آیا این برچسب ، آخرین برچسب در فهرست است یا خیر ( مورد استفاده ی این بخش ، برای این است که سامانه بداند که آیا باید از ویرگول استفاده کند یا نه ؟ ) (true or false )
allowComments« درست » (true) در صورتیکه این پست ، اجازه ی اعمال نظرات کاربران را داشته باشد .
numCommentsتعداد نظرات موجود در این پست
showBacklinksتعیین وضعیت نمایش یا عدم نمایش پیوندهای برگشتی برای این پست
numBacklinksتعداد پیوندهای برگشتی برای این پست
addCommentUrlآدرس فرم « افزودن نظر » از این پست
emailPostUrlآدرس فرم « ایمیل این پست » برای این پست
editUrlآدرس فرم « ویرایش » برای این پست
feedLinksفهرستی از خوراک های مشخص برای این پست ( این بخش ، متفاوت از آنچیزی است که در بخش پیوند خوراک وبلاگ دیدیم . این می تواند صرفا خوراکی حاوی نظرات پست باشد ) . هر کدام از اعضای این فهرست ، دارای موارد زیر خواهند بود .
urlآدرس خوراک
nameنام خوراک ( مثلا پست ها یا اینکه نظرات )
feedTypeنوع خوراک (Atom or RSS).
mimeTypeنوع تقلید خوراک
commentsفهرستی از کلیه ی نظرات این پست ( صرفا بر روی صفحات آیتم ) . هر مورد آن نیز شامل موارد زیر خواهد بود .
idشناسه ی عددی نظر
bodyبدنه ی نظر
timestampزمان ایجاد نظر
authorنمایش نام نویسنده ی نظر یا اعلام به صورت ناشناس
authorUrlآدرس نمایه ی نویسنده ی نظر ( در صورتیکه ناشناس نباشد )
deleteUrlآدرسی برای پاک کردن نظر
isDeletedتعیین وضعیت پاک شدگی نظر ( متنی با عنوان « نظر حذف شده » جایگزین مکان قبلی همان نظر می شود .
1. <!-- [Using feedlinks ]--> 2. <!-- [feedlinks for the blog can be used displayed using the elements in this way. ]--> 3. <data:feedlinks.url/> 4. <!-- [whereas feedlinks for a post which include e.g. comments can be shown this way. ]--> 5. <data:post.feedlinks.url/> 6. 7. 8. <!--[ 9. if inside a includable and a var is assigned to it while using the include 10. then use it in this manner 11. ]--> 12. <b:include data='post.feedLinks' name='feedLinksBody'/> 13. <b:includable id='feedLinksBody' var='links'> 14. <b:loop values='data:links' var='f'> 15. <a class='feed-link' expr:href='data:f.url' expr:type='data:f.mimeType'> 16. <data:f.name/> (<data:f.feedType/>) 17. </a> 18. </b:loop> 19. </b:includable>
بنابراین از فهرست بالا ، عناصر داده ای که در فهرست اصلی هستند ، می توانند به طور مستقیم ، قابل دسترسی باشند ، همانند آنچه در بالا در خصوص پیوند خوراک وبلاگ دیدیم . « زیرفهرستها » در فهرست اصلی می توانند با استفاده از عامل نقطه ، قابل دسترسی گردند . بعبارتی همانند برنامه نویسی شیء گرا که [classNameVar].[objectVar] به شما دسترسی به متغیرهای عنصر یک کلاس را میدهد ، عمل می کند . فلذا برای دسترسی عمیق تر به متغیرهای فهرست ، از عامل نقطه (dot operators) بهره بگیرید .
<!--[
For accessing the comment id you will have to use either the
includable method shown previously or use this one.
]-->
<data:post.comments.id/>
<!-- [but you should use includable as they are cool :) ]-->
گاهی اوقات ، هنگامی که شما سعی می کند که این عناصر داده را بطور مستقیم بکار ببرید ، به شما خطا می دهد . یا « شیء » /« بخش » (widget/section) کار نمی کند یا گاهی اوقات شبیه آن اتفاق می افتد . یک دلیلش این است که شما نمی توانید این « اصطلاحات » (expressions) را بطور مستقیم بکار بگیرید . شما باید از فضای اسمی اصطلاح ، استفاده کنید که در این باره در بخشهای قبل ، صحبت کردیم .
ادامه ی مطلب را در قسمت سوم بخوانید .
اگر هر گونه نظر تکمیلی یا اصلاحی دارید ، در بخش نظرات وارد کنید .
هیچ نظری موجود نیست:
ارسال یک نظر
بازدیدکننده ی گرامی ، از اینکه بنده رو مفتخر به دریافت نظرات ارزشمند خودتون می کنید ، متشکرم . حسین حقگو