اگر شما یک کاربر معمولی وبسایت موتور هستید، برای راهاندازی، نگهداری یا مدیریت سایت خودتان نیازی به آگاهی از چگونگی عملکرد وبسایت موتور ندارید.
اما اگر علاقهمند توسعه و طراحی سایت روی این سکو باشید، مطلب زیر میتواند برای آشنایی شما با نحوه و
عملکرد این موتور مفید باشد.
خلاصه اینکه :
یک برچسب یا tag اچتیامال به مرورگر میگوید که این نوشته را چه طور نمایش دهد. چه قلمی، چه رنگی، کجا و...
اما به کمک وبسایت موتور، برچسبها نقش بیشتری پیدا میکنند.
مثلاً با یک برچسب به موتور بگویید که چند مطلب اخیر را انتخاب کن و مثلاً نام آنها را نمایش بده.
<ITEMS>%title</ITEMS>
حالا نوبت مرورگر است که هر نام را در یک بند نشان دهد.
<ITEMS><p>%title</p></ITEMS>
و خروجی مرورگر مشابه زیر خواهد بود.
نمونه مطلب۱ نمونه مطلب۲ نمونه مطلب۳
وبسایت موتور
دسترسی به پایگاه داده، محدود به موتور وبسایت است و موتور تنها برچسبهای اچتیامال را تفسیر میکند.
وبسایت موتور یک چارچوب نرمافزاری تحت وب فراهم میکند که در آن اسکریپتنویسی سمت سرور با تبدیل شدن به برچسب، بسیار ساده شده و هم سطح توسعه سمت کاربر قرار میگیرد.
به علاوه، وبسایت موتور، متکی به یک شبکه تحویل محتوای ابداعی است.
در مدل تحویل محتوای وبسایت موتور، گاه پروندههای با محتوای غیر متنی، روی سرورهای متفاوت به مرورگر ارائه میشوند.
البته این شبکه تحویل هنوز کاملاً هوشمند نیست و سرورهای متعددی را هم شامل نمیشود.
تعریفهای بنیادی
توجه: موارد زیر صرفاً برای سکوی وبسایت موتور تعریف شده و به طور کلی قابل تعمیم و اطلاق نیستند.
موتورِ وب سایت (Website Motor)
نرمافزاری که عهدهدار به نمایش درآوردن محتوای سایت، ارائه پاسخهای معتنابه در قبال درخواستهای بازدیدکنندگان و برونداد پروندههای سایت است، موتور سایت تعریف میشود.
مفسر (Interpreter)
مفسر بخش عمده موتور سایت است که کدنوشتههای مربوط به موتور که در متن قالبهای پوسته آمده است را تفسیر کرده و مطابق آن محتوای مربوط را از پایگاه داده انتخاب، ذخیره و یا به روز میکند.
پایگاه داده (DataBase)
محتویات متنی، نوشتهها، تنظیمات و تقریباً همه چیز سایت به جز پروندهها، بانک اطلاعاتی دادِگان سایت را تشکیل میدهند.
دسترسی به این بخش محدود شده است و عملیات مربوط صرفاً از طریق مفسر موتور سایت امکان پذیر است.
از جمله محاسن این محدودیت کاهش احتمال نفوذپذیری سایت خواهد بود؛ چرا که هر کد و برنامهای برای اجرا الزاماً باید سازگار با مفسر باشد.
فنآوری به کار رفته در موتور، SQLite است و پروندههای مربوط در پوشه wotor/data روی خود سایت ذخیره میشود که ضمن تأمین سرعت بالاتر، پرتابل بودن سایت را نیز در بر دارد. به این معنا که، تنها محتوای پروندههای سایت برای انتقال، تهیه نسخه پشتیبان یا بازیابی، بسنده میکند.
سامانه مدیریت محتوا (CMS)
برای انتشار محتوا، شخصیسایت سایت و به طور کلی مدیریت سایت، یک سامانه طراحی شده است که با آدرسی مشابه yoursite.com/ctrl روی سایت شما در دسترس خواهد بود.
با راهاندازی سایت، این بخش فعال شده و اطلاعات دسترسی در اختیار مدیر سایت قرار میگیرد.
در سامانه مدیریت محتوای وبسایت موتور، علاوه بر موارد لازم جهت تنظیم و انتشار محتوا و فراداده جهت موتورهای جستجو، مدیریت ایمیلها، پروندهها، تنظیم و تغییر دامنه، تعویض و ویرایش پوسته یا طراحی، امکان تعریف و اختصاص پرونده اچتیامال دلخواه را برای هر مطلب یا دسته در نظر گرفته شده است. مثلاً به راحتی تعیین میکنید که برای نمایش مطلب فلان یا بایگانی مطالب دسته فلان، پرونده اچتیامال فلان مورد استفاده قرار گیرد.
ریشه سایت (root)
پوشه اصلی سایت شما که مستقیماً با آدرس سایت شما از طریق وب در دسترس است، ریشه سایت تعریف میشود.
مثلاً اگر تصویری با نام test.png اینجا ذخیره کنید با آدرس yoursite.com/test.png روی وب در دسترس است.
توجه کنید که در نشانیهای سایت حروف بزرگ و کوچک با هم متفاوت است و برای مثال yoursite.com/TEST.Png روی سایت شما موجود نیست و منجر به خطای 404 خواهد شد.
توجه: بهتر است برای جلوگیری از خطای احتمالی، از کاربرد حروف غیر انگلیسی استاندارد در نام پروندههای خود اجتناب کنید.
پوسته سایت یا قالب سایت (Theme)
مجموعه پروندههایی که برای نمایش سایت شما مورد استفاده قرار میگیرد، پوسته سایت شما را تشکیل میدهند.
یک پوسته به طور معمول شامل پروندههایی مثل تصاویر، قلمها، سبکها (css)، کدنوشتههای جاوا (js) و البته html است.
برای استفاده از قابلیتهای موتور لازم است پوشهای با نام pages نیز در پوسته وجود داشته باشد و شامل قالب صفحات لازم باشد.
قالب یا قالب صفحات سایت (Template)
برای نمایش صفحه اصلی، صفحه خطا، صفحه مطلب و هر صفحهای روی سایت باید قالبی وجود داشته باشد. این قالبها در پوشهای با نام pages روی ریشه سایت ذخیره شده و محتوای آن مورد تفسیر موتور قرار میگیرد.
دسته ساختاری (Structure)
دستههایی که توسط طراح پوسته تعریف میشود و اغلب برای بخشهای خاص از سایت با نامهایی مثل «لغزانه صفحه اصلی»، «مطب ثابت پانویس» و... تعیین میشود.
قاعده (در یک دسته ساختاری) (Rule)
مجموعه خصلتهایی که به یک دسته ساختاری منتسب میشود، قاعده تعریف میشود.
به طور مثال طراح برای دستهای که نام آن را «موارد نمادکدار» در نظر گرفته است قاعده "+icon-content" را تعریف میکند تا مطالبی که به این دسته تخصیص مییابند از قابلیت انتخاب نمادک برخوردار، ولی فاقد محتوا و صفحه اختصاصی باشند.
دیگر خصلتهای معمول «تصویر image»، «محتوا content»، «کالا product»، «نویسنده author»، «عنوان فرعی caption» است.
مینی وتور
Mini Website Motor یا Mini Wotor یک نرمافزار رومیزی برای راهاندازی وبسایت موتور روی رایانه شخصی است.
این برنامه، یک سرور وب است و در طراحی آن سعی شده است تا حد امکان، برنامه همانند سرور وبسایت موتور عمل کند و طراح با سرعت بالا و بدون نیاز به اینترنت، امکان طراحی سایت و ایجاد و ویرایش پوسته سازگار با وبسایت موتور را داشته باشد.
خلاصه راهنمای آشنایی با نحوه برچسبگذاری وبسایت موتور
به طور مثال برای اینکه حداکثر 2 مورد از مطالبی که در «دسته1» روی پایگاه داده ذخیره شده است را به تصادف انتخاب کرده و تصویر، پیوند و خلاصه مطلب مربوط به هر کدام را درج کنیم؛ کافی است مشابه تصویر زیر عمل کنیم.
موارد سراسری
موارد زیر در تمامی صفحات سایت قابل استفاده است و در هر صفحهای به مقدار متناسب مبدل میشوند.
%SITENAME نام سایت
%SITEURL نشانی سایت
%SITELINK پیوند به سایت
%MTITLE فراعنوان (meta title) سایت یا صفحه
%MDESCRIPTION توضیح سایت یا صفحه
%MKEYWORDS کلیدواژههای سایت یا صفحه
همچنین موارد زیر قابل شخصیسازی هستند.
%DATE% تاریخ میلادی %PDATE% تاریخ شمسی %HDATE% تاریخ قمری
مثال:
%PDATE% چهارشنبه ۱۳۹۷/۰۱/۲۹ ۱۳:۰۰ %PDATE(Y/m/d)% ۱۳۹۷/۰۱/۲۹ %HDATE(l d F Y)% الاربعاء ١ شعبان ١٤٣٩ %HDATE% ١ شعبان ١٤٣٩
برای تصحیح روز در تقویم قمری میتوانید از مقدار ویژه Hijri_calendar_correction استفاده کنید مثلاً برای یک روز جلو بردن عبارت را تعیین کنید.
Hijri_calendar_correction=1
تعریف مقادیر ویژه از طریق بخش «ابزارها» قسمت «تنظیمهای طراحی» برگه «مقادیر ویژه» در دسترس است.
متن یا نوشته (در پوسته)
موارد متنی این امکان فراهم میکند تا به سهولت متن بخشی از پوسته سایت از طریق سامانه مدیریت قابل ویرایش باشد.
این متن میتواند در هر بخشی از صفحات سایت ظاهر شود. همچنین موارد متنی، علاوه بر پروندههای اچتیامال پوشه pages در هر پرونده css یا js که نام آن با custom شروع شود، قابل استفاده است.
مثلاً برای نمونه، پرونده custom.css میتواند شامل برخی تنظیمات شود که مدیر سایت به سرعت و سهولت بتواند تغییراتی در سایت اعمال کند.
این نوع پروندهها با سردادۀ بدون قابلیت ذخیره نهان یا Cache به مرورگر عرضه میشود.
فراخوانی سراسری
%Tشماره متن%
مثال:
%T3% متن سوم %T3_% متن-سوم %T3@% پیوند دسته- در صورتی که نوع T3 «دسته» تعریف شده باشد. %T3#% شماره دسته- در صورتی که نوع T3 «دسته» تعریف شده باشد.
متنها در سامانه مدیریت
برای ویرایش متنها، قسمت «پوسته» در بخش «محتوا» در نظر گرفته شده است. در این بخش امکان تنظیم مقادیر دلخواه برای موارد متنی به تفکیک نوع آنها تعبیه شده است.
لازم است در هر ردیف به ترتیب، شماره خط، نوع متن و نام متن درج شود.
مثال:
T4 | P | نمونه محتوای تصویر
تعریف متنها در مینی وتور
در هریک از ردیفهای بخش text در پرونده theme.json امکان درج یک متن وجود دارد.
لازم است به ترتیب نام متن، نوع و مقدار پیشفرض درج شود. مقدار پیشفرض در مینی وتور به منزله محتوای متن، و در هنگام نصب پوسته مورد استفاده قرار میگیرد.
مثال:
["نمونه متن کد رنگ","C","8080FF"]
توجه:
رعایت ترتیب ردیفهای موارد متنی لازم است.
مطلب (Post)
نوشتهای که دارای صفحه اختصاصی است، مطلب تعریف میشود. جزء لازم برای یک مطلب عنوان آن است.
نشانی وب
صفحه اختصاصی هر مطلب به هر یک از سه صورت زیر قابل دسترس است.
/شناسه مطلب/نام-مطلب/ /شناسه مطلب/ /نام-مطلب/
مثال:
/103/عنوان-نمونه/ /103/ /عنوان-نمونه/
قالب
پیشفرض: /pages/post.html یا پرونده تعیین شده در مشخصات مطلب
فراخوانی در صفحه اختصاصی
i="post"
فراخوانی در تمامی صفحات
i="post/شناسه مطلب"
مثال
i="post/103"
مقادیر سراسری در صفحه اختصاصی:
%post_title عنوان مطلب %post_link پیوند مطلب %post_category_index شناسه (اولین) دسته مطلب %post_category_link پیوند (اولین) دسته %post_Category دسته-مطلب %post_category دسته مطلب
دسته (Category)
میتوان تعدادی از مطالب را به یک نام مشترک منتسب کرد. این نام که امکان فراخوانی مطالب با آن فراهم میشود، دسته تعریف میشود.
دستههای ساختاری (Structure)
دستههای ساختاری متناسب با قالب و مضمون سایت، توسط طراح پوسته تعریف شدهاند و قابلیتهای بیشتری نسبت به دستهها دارد.
دستههایی ساختاری اغلب برای بخشهای خاص از سایت با نامهایی مثل «لغزانه صفحه اصلی»، «مطب ثابت پانویس» و... تعیین میشود و امکان بازتعریف آن از طریق بخش تنظیمات طراحی فراهم است.
این دستهها قاعدهپذیر هستند به این معنا که میتوان مجموعه خصلتهایی را به آنها نسبت داد.
مثلاً خصلت +product برای یک دسته ساختاری، امکان تعیین قیمت کالا، نام و واحد شمارش، موجودی و... را به مطالب منتسب به آن دسته اضافه میکند.
دیگر خصلتهای معمول «تصویر image»، «محتوا content»، «نمادک icon «نویسنده author»، «عنوان فرعی caption» است.
قاعده پیشفرض یک دسته ساختاری به صورت زیر میباشد.
+image+content-icon-product-author-caption
نشانی وب
/نام-دسته/شماره-صفحه/
مثال:
/دسته-نمونه/ /دسته-نمونه/2/
قالب
پیشفرض: /pages/category.html یا مورد تعیین شده در بخش ویرایش دستهها
فراخوانی در صفحه اختصاصی
i="category"
صفحهبندی در صفحه اختصاصی
%paging(category)
فراخوانی در تمامی صفحات
دستهها: i="شماره دسته" i="نام دسته" i="نام-دسته" مثال: i="1" i="دسته نمونه" i="دسته-1"
دستههای ساختاری:
i="Sشماره دسته ساختاری" مثال: i="S3"
صفحهبندی در تمامی صفحات
%paging(category/مقدار تعیین شده i)
مقادیر سراسری در صفحه اختصاصی
%category_index شناسه ترتیبی دسته %category_name نام دسته %category_desc توضیح دسته %Category_name نام-دسته %category_page شماره صفحه جاری %category_link پیوند
فراخوانی سراسری
%Cشماره دسته%
مثال
نام دسته دوم: %C2% نام-دسته-دوم: %C2_% پیوند به دسته دوم: %C2@%
تعریف دستهها در سامانه مدیریت
به سادگی از طریق بخش «محتوا» قسمت «دستهها» امکان افزودن، حذف و ویرایش دستهها فراهم است.
همچنین میتوان برای دسته قالب دلخواه را نیز تعیین کرد. متن خلاصه دسته نیز در این بخش قابل تعریف است.
برای تعریف دستههای ساختاری لازم است از طریق بخش «ابزارها» قسمت «تنظیمهای طراحی» به برگه «دستههای ساختاری» مراجعه کنید.
در هر ردیف میتوانید به ترتیب شماره خط، نام دسته و قاعده آن را ذکر کنید.
برای مثال
S1|دسته ساختاری یک|+icon
تعریف دستهها در مینی وتور
بخش categories در پرونده theme.json دستههای سایت را تعریف میکند. این دستهها تنها نمایشی است و کاربر از طریق بخش مدیریت سایت آن را به دلخواه خود تنظیم میکند.
در هر ردیف به ترتیب نام دسته، دسته مادر و قالب مورد نظر برای نمایش آن، ذکر میشود. تعیین دسته مادر و قالب اختیاری است و دسته مادر باید تعریف شده باشد.
قالب پیشفرض category است و نباید با پسوند وارد شود.
ترتیب دستهها به عنوان شناسه احضار دسته مورد استفاده قرار میگیرد. همچنین نام دسته نیز قابل استفاده است ولی از آنجا که مدیر سایت ممکن است آن را تغییر دهد، به طور عمومی توصیه نمیشود.
توجه:
با تغییر دستهبندیها،مطالب نوشته شده سایت حذف نمیشوند ولی چون اختصاص دستهها ترتیبی انجام میشود، ممکن است دستههای منتسب به مطالب تغییر کند.
به کمک تعیین limit، میتوان صفحه دلخواهی از موارد یک دسته را در هر صفحه از سایت فراخوانی کرد. (به توضیحات limit نگاه کنید.)
فهرست (LIST)
مجموعه چند پیوند کلیکپذیر که اغلب به صورت یک منو در بالای صفحات به نمایش درمیآید، فهرست تعریف میشود.
در یک فهرست، هر پیوند (link) که به داخل، خارج یا جایی در همان صفحه از سایت اشاره میکند.
مثال:
/دسته-نمونه/ که به صفحه «دسته نمونه» باز میشود. /درباره-ما/ که به مطلب «درباره ما» باز میشود.
توجه:
پیوندهای خارجی به طور خودکار در برگه جدید مرورگر باز میشوند.
الزامی به همخوانی نام و مقدار یک پیوند نیست.
در صورت معتبر نبودن مقصد پیوند، خطای 404 رخ میدهد.
اعتبار مقصد فهرستها در نمایش بررسی نمیشود. مثلاً با حذف یک دسته که در یک فهرست استفاده شده است، آن فهرست خودکار به روز نمیشود.
تعریف فهرستها در سامانه مدیریت
برای اینکه از طریق سامانه مدیریت، امکان تخصیص و تنظیم ردیفهای یک فهرست فراهم باشد، لازم است فهرست در بخش «ابزارها» قسمت «تنظیمات طراحی»، برگه «فهرستها» تنها با یک نام تعریف شود. مثل:
L2|فهرست پانویس
شناسه ترتیبی این فهرست شماره خط ذکر آن در این بخش میباشد.
بعد از ذخیره این تنظیم، این فهرست با نام انتسابی بلافاصله در بخش «محتوا» ذیل قسمت «فهرستها» در دسترس میباشد.
تعریف فهرستها در مینی وتور
در پرونده theme.json ذیل بخش lists فهرستها یا منوهای نمونه برای سایت تعریف میشود.
لازم است در هر ردیف ابتدا نام فهرست و سپس نام پیوند و نشانی آن وارد شود.
فراخوانی فهرستها
در تمامی صفحات به یک شکل صورت میگیرد.
<LIST i="شماره ترتیبی دسته شروع از یک" type="dropdown یا simple" activator="a یا li" />
نمایش فهرست شماره یک تو در تو
<LIST i="1" />
<!-- L1 فهرست بالای صفحات --> <li><a class="active" href="/">صفحه اصلی</a></li> <li class="dropdown"><a class="dropdown-toggle" href="/دسته-1/" data-toggle="dropdown" >دسته 1</a> <ul class="dropdown-menu"> <li><a href="/دسته-11/" >دسته 11</a></li> <li class="dropdown"><a class="dropdown-toggle" href="/دسته-12/" data-toggle="dropdown" >دسته 12</a> <ul class="dropdown-menu"> <li><a href="/دسته-121/" >دسته 121</a></li> </ul> </li> </ul> </li> <li class="dropdown"><a class="dropdown-toggle" href="/دسته-12/" data-toggle="dropdown" >دسته 12</a> <ul class="dropdown-menu"><li><a href="/دسته-121/" >دسته 121</a></li></ul></li><li><a href="/101/">نمونه مطلب</a></li> <!-- /L1 فهرست بالای صفحات -->
نمایش فهرست شماره یک ساده (بدون نمایش زیر دستهها)
<LIST i="1" type="simple" />
<!-- L1 فهرست بالای صفحات --> <li><a href="/">صفحه اصلی</a></li> <li><a class="active" href="/دسته-1/">دسته 1</a></li> <li><a href="/دسته-12/">دسته 12</a></li> <li><a href="/101/">نمونه مطلب</a></li> <!-- /L1 فهرست بالای صفحات -->
<li><a class="active" href="/">صفحه اصلی</a></li>
<LIST i="1" type="simple" activator="li"/>
به طور خودکار به پیوند فعال در فهرست class="active" اختصاص مییابد.
مثل
<li class="active"><a href="/">صفحه اصلی</a></li>
برچسب (Tag)
نشانی وب
/tag/نام-برچسب/شماره-صفحه/
مثال:
/tag/برچسب-نمونه/ /tag/برچسب-نمونه/2/
قالب
/pages/tag.html
فراخوانی در صفحه اختصاصی
i="tag"
صفحهبندی در صفحه اختصاصی
%paging(tag)
فراخوانی در تمامی صفحات
i="tag/نام-برچسب"
صفحهبندی در تمامی صفحات
%paging(tag/نام-برچسب)
مقادیر سراسری در صفحه اختصاصی
%tag_link %tag_title
جستجو (Search)
نشانی وب url
/?search=عبارت+جستجو&page=شماره صفحه
مثال:
/?search=%D8%B9%D8%A8%D8%A7%D8%B1%D8%AA&page=2 /?search=عبارت /?search=عبارت&page=2
قالب
/pages/search.html
فراخوانی در صفحه اختصاصی
i="search"
صفحهبندی در صفحه اختصاصی
%paging(search)
فراخوانی در تمامی صفحات
i="search/عبارت+جستجو/" i="search/عبارت جستجو/" i="search/%D8%B9%D8%A8%D8%A7%D8%B1%D8%AA%20%D8%AC%D8%B3%D8%AA%D8%AC%D9%88/"
مثال
i="search/کلمه" i="search/%DA%A9%D9%84%D9%85%D9%87/"
صفحهبندی در تمامی صفحات
%paging(search/عبارت+جستجو) %paging(search/عبارت جستجو) %paging(search/%D8%B9%D8%A8%D8%A7%D8%B1%D8%AA%20%D8%AC%D8%B3%D8%AA%D8%AC%D9%88)
مقادیر سراسری در صفحه اختصاصی
%search_query عبارت جستجو %search_page شماره صفحه جاری %search_pages شمار صفحات %search_finds تعداد یافته %search_info عبارت جستجو+ متن تعاملی search_result_for
موارد (ITEMS)
مواردی از مطالب سایت را مطابق ضابطه تعریف شده انتخاب میکند.
ITEMS در تمامی صفحات قابل استفاده است و برای هر صفحه نیز امکان خاصی دارد.
<ITEMS i="شناسه فراخوانی" limit="محدوده" type="نوع" interleave="اضافهگذاری"> %متن و نشانهها </ITEMS>
سادهترین استفاده به صورت زیر و برای انتخاب آخرین 10 مطلب منتشر شده است.
در این مثال %index با شماره ردیف پر میشود.
<ITEMS>%index</ITEMS>
<!-- LAST POSTS --> 1 2 3 4 5 6 7 8 9 10 <!-- /LAST POSTS -->
برای انتخاب 2 مورد از آخرین مطالب منتشره در دسته 1 که شناسه یک دارد هر سه روش زیر قابل استفاده است.
در این مثال %title با عنوان مطلب پر میشود.
<ITEMS i="1" limit="2">%title</ITEMS> <ITEMS i="دسته 1" limit="2">%title</ITEMS> <ITEMS i="دسته-1" limit="2">%title</ITEMS>
<-- CATEGORY /دسته 1 i="1" limit="2" --> عنوان نمونه5 عنوان نمونه3 <!-- /CATEGORY /دسته 1 -->
برای نمایش صفحهبندی، عبارت مشابه زیر تعریف شده است. به صورتی که محتوای پرانتز باید مطابق مقدار تعیین شده i در اینجا i="1" باشد.
%paging(1)
مثال زیر مطلب شماره 108 انتخاب میکند. در این حالت limit ثابت یک و تعریف آن بیتأثیر است.
<ITEMS i="post/108" >%id</ITEMS>
<-- POST/108 i="post/108" --> 108 <!-- /POST/108 -->
<ITEMS i="search/عبارت جستجو" limit="3">%link</ITEMS>
عبارت وارد شده جستجو و حداکثر 3 مورد انتخاب و %link آنها به نمایش در میآید.
<-- SEARCH / عبارت جستجو i="search/عبارت جستجو" limit="3" --> <a href="/113/مطلب-13" title="مطلب 13" >مطلب 13</a> <a href="/117/مطلب-17" title="مطلب 17" >مطلب 17</a> <!-- /SEARCH / عبارت جستجو -->
<ITEMS i="tag/برچسب 1" limit="3">%link</ITEMS>
<!-- TAG /برچسب 1 i="tag/برچسب 1" limit="13" --> <a href="/100/نمونه-طراحی-سایت" title="نمونه طراحی سایت" >نمونه طراحی سایت</a> <!-- /TAG /برچسب 1 -->
<ITEMS i="top_comments" limit="2">%comntno</ITEMS> <!-- Top Comments i="top_comments" limit="2" --> 5 دیدگاه 3 دیدگاه <!-- /Top Comments -->
کلمه دیدگاه به نمایش درآمده در این مثال، یک متن تعاملی است که از طریق تنظیمات پوسته قابل ویرایش است.
برای اینکه تنها عدد نمایش درآید از Comntno به جای comntno استفاده کنید.
این مورد اختصاصاً در صفحه مطلب قابل فراخوانی است و در دیگر صفحات باید با ذکر شماره دسته احضار شود.
<ITEMS i="related_posts" limit="10">%title</ITEMS> نمونه سایت طراحی نمونه طراحی سایت طراحی سایت طراحی
<ITEMS i="top_visits" limit="3">%thumb</ITEMS> <!-- Top Visits i="top_visits" limit="3" --> <img src="/?thumb=images%2Fdemo%2F4.jpg" alt="عنوان6" /> <img src="/?thumb=images%2Fdemo%2F7.jpg" alt="نمونه طراحی سایت" /> <img src="/?thumb=images%2Fdemo%2F9.jpg" alt="طراحی سایت" /> <!-- /Top Visits -->
<ITEMS i="top_visits" limit="3">%title: %visit</ITEMS> <!-- Top Visits i="top_visits" limit="3" --> طراحی سایت: 21 طراحی سایت: 18 طراحی سایت: 11 <!-- /Top Visits -->
توجه:
موارد زیر فاقد نشانی، قالب و امکان صفحهبندی هستند.
دسته ساختاری i="Sشماره دسته ساختاری" i="S2" پربادیدها i="top_visits" پربحثترینها i="top_comments" مطالب مرتبط i="related_posts" همه مطالب i="all_posts" i="" یا i="0" یا i="all_posts" یا بدون تعریف
order="new" پیشفرض ترتیب نمایش از تازهترین مطلب order="old" ترتیب نمایش ازقدیمیترین مطلب order="random" ترتیب تصادفی مطالب
توجه:
ملاک زمان مطلب، زمان ایجاد مطلب است و نه زمان ویرایش.
نوع caption
در صورتی که موردی در نتیجه ITEMS یافت نشود، نمایش داده نمیشود و در صورت موجود بودن تنها یک بار به نمایش در میآید.
مثال:
<ITEMS i="5" type="caption">متن توضیح در صورت بودن موارد</ITEMS>
تنها زمانی که دسته 5 تعریف شده و موردی برای نتیجه نمایش وجود داشته باشد، عبارت «متن توضیح در صورت بودن موارد» به نمایش در میآید.
اضافهگذاری (Interleave)
به کمک تنظیم Interleave، امکان افزودن تعداد متن دلخواه در ردیف دلخواه مهیا میشود.
مثال:
<ITEMS i="" limit="10" interleave="right;left;center" > class="%interleave1%interleave2%interleave3" </ITEMS> <!-- LAST POSTS i="" limit="10" interleave="right;left;center" --> class="right" class="left" class="center" class="right" class="left" class="center" class="right" class="left" class="center" class="right" <!-- /LAST POSTS -->
<ITEMS i="" limit="10" interleave="right,2;left,3" > %index %interleave1 %interleave2 %id </ITEMS> <!-- LAST POSTS i="" limit="10" interleave="right,2;left,3" --> 1 214 2 right 213 3 left 212 4 right 112 5 100 6 right left 103 7 106 8 right 107 9 left 108 10 right 109 <!-- /LAST POSTS -->
<ITEMS i="" limit="10" interleave="right;left" > %index %interleave1 %interleave2 %id </ITEMS> <!-- LAST POSTS i="" limit="10" interleave="right;left" --> 1 right 214 2 left 213 3 right 212 4 left 112 5 right 100 6 left 103 7 right 106 8 left 107 9 right 108 10 left 109 <!-- /LAST POSTS -->
<ITEMS i="" limit="10" interleave="right,2" > %index %interleave1 %id </ITEMS> <!-- LAST POSTS i="" limit="10" interleave="right,2" --> 1 214 2 right 213 3 212 4 right 112 5 100 6 right 103 7 106 8 right 107 9 108 10 right 109 <!-- /LAST POSTS -->
<ITEMS i="" limit="10" interleave="right,2" > %index </ITEMS> <!-- LAST POSTS i="" limit="10" interleave="right,2" --> 1 2 right 3 4 right 5 6 right 7 8 right 9 10 right <!-- /LAST POSTS -->
<ITEMS i="" limit="10" interleave="right;left;center,4" > class="%interleave1%interleave2 %interleave3" </ITEMS> <!-- LAST POSTS i="" limit="10" interleave="right;left;center,4" --> class="right " class="left " class=" " class="right center" class="left " class=" " class="right " class="left center" class=" " class="right " <!-- /LAST POSTS -->
<ITEMS i="" limit="10" interleave="right,1;left,3;center,2" > class="%interleave1%interleave2 %interleave3" </ITEMS> <!-- LAST POSTS i="" limit="10" interleave="right,1;left,3;center,2" --> class="right " class=" center" class="left " class="right center" class=" " class="left center" class="right " class=" center" class="left " class="right center" <!-- /LAST POSTS -->
توجه:
برای خاموش کردن توضیحات قبل و بعد، میبایست مقدار help به صورت help="off" تنظیم شود.
مثلاً:
|<ITEMS i="1" limit="15" interleave="" help="off" >%id</ITEMS>|
|100108116124132140148156164172180188196|
تعیین محدوده برای موارد
9 مورد شروع از دومین مورد (مورد 2 تا مورد 11)
limit="2,9"
9 مورد اول
limit=",9"
دومین مورد تا ده مورد
limit="2,"
اولین تا پنج مورد (5 مورد)
limit="5"
توجه:
موارد زیر معادل هستند.
limit="" ~ limit="10" ~ limit=",10" ~ limit="1,10"
مثال:
<ITEMS i="" limit="3,5" order="old" > %index %id </ITEMS> <!-- LAST POSTS i="" limit="3,5" order="old" --> 1 103 2 104 3 105 4 106 5 107 <!-- /LAST POSTS -->
<ITEMS i="1" limit="3,1" order="old" > %index %id </ITEMS> <!-- CATEGORY /دسته اول i="1" limit="3,1" order="old" --> 1 112 <!-- /CATEGORY /دسته اول -->
<ITEMS i="2" type="caption" > Caption text where Items not empty </ITEMS> <!-- CATEGORY /دسته دوم i="2" type="caption" --> Caption text where Items not empty <!-- /CATEGORY /دسته دوم -->
<ITEMS i="2" limit="2"> Caption text where Items not empty </ITEMS>
<!-- CATEGORY /دسته دوم i="2" limit="3" --> Caption text where Items not empty Caption text where Items not empty Caption text where Items not empty <!-- /CATEGORY /دسته دوم -->
موارد قابل استفاده در ITEMS
%Index ردیف از صفر %index ردیف %id شناسه مطلب مثل 105 %title عنوان مطلب %excerpt خلاصه مطلب %visit شمار بازدید %caption عنوان فرعی- در صورت تعریف خصلت +caption در دسته ساختاری منسوب %author نویسنده- در صورت تعریف خصلت +author در دسته ساختاری منسوب %Icon نمادک - تنها نام مثل fa fa-flask %icon نمادک مثل <i class="fa fa-flask"></i> %content محتوای مطلب %class_active برگردان class="ative" برای مورد جاری %active برگردان ative برای مورد جاری %img تصویر شاخص مطلب مثل <img src="/images/demo/9.jpg" alt="نمونه مطلب 8" /> %thumb تصویر بندانگشتی از تصویر شاخص مطلب مثل <img src="/?thumb=images%2Fdemo%2F9.jpg" alt="نمونه مطلب 8" /> %mthumb تصویر بندانگشتی بزرگ از تصویر شاخص مطلب مثل <img src="/?thumb=images%2Fdemo%2F9.jpg&s=m" alt="نمونه مطلب 8" /> %tthumb تصویر بندانگشتی کوچک از تصویر شاخص مطلب مثل <img src="/?thumb=images%2Fdemo%2F9.jpg&s=t" alt="نمونه مطلب 8" /> %src منبع تصویر مثل /images/demo/9.jpg %tsrc منبع تصویر بندانگشتی مثل /?thumb=images%2Fdemo%2F9.jpg %href نشانی مطلب مثل /105/نمونه-مطلب-8 %link پیوند مطلب مثل <a href="/105/نمونه-مطلب-8" title="نمونه مطلب 8" >نمونه مطلب 8</a> %date تاریخ ایجاد مطلب مثل ۱۳۹۶/۱۰/۱۱ %time زمان ایجاد مطلب مثل ۱۱:۱۰ %day روز هفته ایجاد مطلب مثل دوشنبه %sdate تاریخ متنی مثل ۱۱ دی ۹۶ %htime زمان انسانی مثل 3 ماه پیش %ctg_link پیوند دستهبندی اصلی %Category نام-دستهبندی-مطلب %category نام دستهبندی مطلب %ctgs_links پیوندهای دستهبندی مطلب %Categories نام-دستهبندیهای-مطلب %categories نام دستهبندیهای مطلب %taglinks پیوند برچسبها %tags برچسبها %comntno شمار نظرات مثل 4 دیدگاه %Comntno شمار عددی نظرات مثل 4
در صورت تعریف خصلت +product در دسته ساختاری منسوب
%price بهای کالا مثل: 13,000 %Price بهای عددی کالا مثل: 13000 %total موجودی کالا %Total موجودی عددی %unit واحد کالا
فرم دریافت دیدگاه
این فرم تنها در صفحه مطلب قابل استفاده است و کاملاً مشابه فرم تماس میباشد.
نام و تعداد ردیفهای فرم دلخواه است و تنها ضروری است متن پیام با نام message ارسال شود.
<div id="comment_form"> <p class="%comment.impact">%comment.result</p> <form id="myForm" action="#comment_form" method="POST" > <input type="text" name="comment[name]" placeholder="نام شما" value="%comment[name]"> <input type="email" name="comment[email]" placeholder="e-mail@example.com" value="%comment[email]" /> <textarea name="comment[message]" rows="4" placeholder="متن پیام" required >%comment[message]</textarea> <button type="submit"> ثبت پیام</button> </form> </div> <script type="text/javascript"> $('#myForm').submit(function(e){ e.preventDefault(); $.ajax({ type: 'POST', data: $("#myForm").serialize(), dataType: 'json', success: function(data){ if(data['impact']=='success'){ alert(data['result']); }else if(data['impact']=='error'){ alert(data['result']); } } }); }); </script>
در مثال زیر با توجه به اینکه type برابر caption تعریف شده است، محتوای درونی تنها زمانی که دیدگاه وجود داشته باشد، به نمایش در خواهد آمد.
<COMMENTS type="caption"> نظرات </COMMENTS>
در مثال زیر دیدگاههای ذیل یک مطلب به نمایش در خواهد آمد. همان طور که در توضیح فرم دیدگاه اشاره شد، نام و تعداد متغییرهای این بخش دلخواه و هم نام با فرم دریافت خواهد بود. تنها message باید الزماً در فرم به عنوان متن پیام، مورد استفاده قرار گیرد.
<COMMENTS> %name %htime %message </COMMENTS>
موارد قابل استفاده در COMMENTS
%id شناسه دیدگاه %index ردیف دیدگاه %Index ردیف دیدگاه از صفر %approved وضعیت تأیید دیدگاه %date تاریخ دریافت دیدگاه %htime زمان انسانی دریافت دیدگاه %time زمان دریافت دیدگاه %message متن پیام
فرم تماس
<div id="contact_form"> <p class="%contact.impact">%contact.result</p> <form action="#contact_form" method="POST"> <input type="text" name="contact[author]" placeholder="نام شما" value="%contact[author]" required /> <input dir="ltr" type="email" name="contact[email]" placeholder="email" value="%contact[email]" required /> <textarea name="contact[message]" rows="5" placeholder="متن ییام" >%contact[message]</textarea> <button type="submit" >ارسال</button> </form> </div>
توجه کنید که نام و تعداد ردیفهای فرم، دلخواه است؛ ولی ارسال باید به صورت یک آرایه با نام contact و به صورت POST انجام شود.
در حالت برگشت موفق %contact.impact برابر success و %contact.result به مقدار contact_msg_sent خواهد بود.
در حالت خطا نیز %contact.impact برابر error و %contact.result به مقدار contact_msg_failed مبدل میشود. همچنین مقدار تمام موارد ارسالی، با همان نام، برگشت داده میشود.
مقدار impact امکان مناسبی برای استفاده در css یا جاوااسکریپت است. contact_msg_sent و contact_msg_failed متن تعاملی تعریف شدهاند و تعیین متن دلخواه برای آنها از طریق سامانه کنترل فراهم است.
در حالتی که ارسالی انجام نشده است نیز %contact.impact برابر none و result رشته بدون مقدار خواهد بود.
impact: none,error,success result: contact_msg_sent,contact_msg_failed
موارد دریافت به همراه نام تعریف شده در فرم، به نشانی ایمیل اصلی مدیر سایت ارسال و یک کپی از آن در صندوق خروجی سامانه ایمیل سایت ذخیره میشود.
ارسال فرم از طریق Ajax
در این صورت مقادیر impact و result، در قالب JSON بازگشت داده میشوند.
برای مثال:
<form id="myForm" action="/" method="post"> <input type="text" name="contact[author]" placeholder="نام شما" required> <input type="email" name="contact[email]" placeholder="email" required> <textarea name="contact[message]" placeholder="متن ییام" required></textarea> <input type="submit" value="ارسال" /> </form> <script type="text/javascript"> $('#myForm').submit(function(e){ e.preventDefault(); $.ajax({ type: 'POST', data: $("#myForm").serialize(), dataType: 'json', success: function(data){ if(data['impact']=='success'){ alert(data['result']); }else if(data['impact']=='error'){ alert(data['result']); } } }); }); </script>
ایجاد فرم سفارشی
برای دریافت اطلاعات از کاربر سایت، مثلاً فرم ثبت نام خبرنامه یا نظر سنجی و... میتوانید یک فرم دلخواه تنظیم کنید.
فرم دلخواه حالت کلی و مشابه فرم تماس است و در هر صفحهای از سایت قابل استفاده است.
نام فرم، پیام موفق، پیام خطا را از طریق برگه «مقادیر ویژه» تعبیه شده در قسمت «تنظیمهای پوسته» تعریف میشود.
در صورت تمایل به ایمیل شدن فرم دریافتی در سایت به ایمیل دلخواه میتوانید mailto را مقداردهی کنید.
برای ثبت در یک پرونده متنی در پوشه logs نیز تعیین log=on توصیه میشود.
لازم به ذکر است در صورتی که ارسال با ایمیل تعیین نشود، الزاماً ثبت متنی فعال خواهد بود.
همچنین تعریف چندین فرم نیز با نام آنها و با ویرگول مثل forms =form1,form2,form3 انجام میشود.
همچنین امکان استفاده از Ajax نیز مشابه فرم تماس فراهم است و result و impact در پاسخ در قالب JSON بازگشت داده میشود.
مثال زیر یک فرم سفارشی با نام register را نشان میدهد.
forms = register forms.register.success = ثبت نام شما با موفقیت انجام شد. forms.register.error = خطا در ثبت نام forms.register.mailto=aaa@bbbb.ccc forms.register.log=on
<p class="%register.impact">%register.result</p> <form method="POST"> نام: <input type="text" name="register[name]" value="%register[name]" required /> email:<input dir="ltr" type="email" name="register[email]" value="%register[email]" required /> <button type="submit" >ارسال</button> </form>
سبد خرید
ایجاد یک سبد خرید وابسته به پوسته نیست و اگر در پوسته چنین امکانی تعریف نشده باشد باز هم درگاه پرداخت قابل استفاده است.
سه پرونده مربوط به خرید به طور پیشفرض تعریف شدهاند و در صورتی که هر کدام در پروندههای پوسته موجود نباشد و یا از سایت حذف شده باشد، خطای 404 رخ نداده بلکه صفحه پیشفرض مورد استفاده قرار خواهد گرفت. بنابراین طراحی این صفحات برای پوسته ضروری نیست.
cart.html
این پرونده، برای نمایش محتوای سبد خرید استفاده میشود.
برچسبهای قابل استفاده در این پرونده و دو دیگر مورد مربوط به پرداخت، محدود است و طراحی آن برای پوسته ضروری نیست.
checkout.html
این پرونده مربوط به زمانی است که پس از تأیید سبد خرید، اطلاعات خریدار جهت پرداخت دریافت میشود.
در این صفحه فرمی تعبیه میشود و فرصتی برای نمایش یا دریافت توضیحات لازم پیش از انتقال به درگاه پرداخت فراهم است.
receipt.html
با پایان فرآیند خرید، این صفحه به نمایش در خواهد آمد. در صورت ناموفق بودن خرید، خطا و با پرداخت موفق اطلاعات تراکنش به نمایش در خواهد آمد.
همچنین در صورتی که برای نوشته مربوط پرونده فروش در نظر گرفته شده باشد، یک پیوند رمز شده وابسته به شناسه اینترنت، برای بارگیری پرونده فروخته شده، در اختیار خریدار قرار میگیرد.
مثالهایی برای آشنایی با نحوه عملکرد سبد خرید
توجه: نوشتهای که شناسه آن به سبد ارسال میشود، باید عضو یک دسته ساختاری با قاعده +product باشد. یعنی باید کالا باشد. در غیر این صورت محتوای سبد تغییر نخواهد کرد.
نمایش سبد خرید جاری /?cart ایجاد یک سبد خرید محتوی یک واحد از کالا با شناسه 105 /?cart=105 افزودن یک واحد کالای با شناسه 105 به سبد خرید جاری /?cart=105&do=add ایجاد یک سبد خرید محتوی یک واحد از کالا با شناسه 105 و یک واحد از کالا با شناسه101 /?cart=105,101 ایجاد یک سبد خرید محتوی یک واحد از کالا با شناسه 105 و 3 واحد از کالا با شناسه101 /?cart=105-1,101-3 افزودن 3 واحد کالای با شناسه 105 و 3 واحد از کالا با شناسه101 به سبد خرید جاری /?cart=105-3,101-2&do=add به روز کردن محتوای سبد خرید جاری بدون نمایش صفحه مربوط برای انجام موفق عبارت OK برگشت داده خواهد شد. /?cart=105-3,101-2&do=update ایجاد یک سبد خرید محتوی یک واحد از کالا با شناسه 105 و همزمان نمایش صفحه دریافت اطلاعات پرداخت (بدون نمایش صفحه مربوط به سبد خرید) /?cart=105&do=checkout نمایش صفحه دریافت اطلاعات پرداخت (نهایی کردن خرید) /?cart=checkout صفحه رسید پرداخت /receipt/
سبد خرید
<CART> <tr id="wm_invoice_prod_%index" data="%pid"> <td>%link</td> <td>%unit_price</td> <td>%quantity</td> <td>%unit</td> <td>%subtotal</td> </tr> </CART> قابل پرداخت: %grand_total تومان
موارد قابل استفاده در سبد خرید
%Index ردیف از صفر
%index ردیف
%pid شناسه کالا
%link پیوند کالا
%unit_price بهای واحد کالا
%unit واحد شمارش کالا مثل دستگاه
%quantity تعداد سفارش از کالا
%subtotal مبلغ مجموع برای این کالا (قیمت × تعداد)
%min حداقل مجاز خرید از کالا
%max حداکثر مجاز خرید از کالا
%grand_total مجموع کل قابل پرداخت
مقادیر بازگشتی، مشابه فرم سفارشی:
%info توضیح خرید
%impact تأثیر یا نتیجه خرید
%download_links پیوند به پرونده فروخته شده