تبلیغات :
آکوستیک ، فوم شانه تخم مرغی، صداگیر ماینر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




صفحه 1 از 2 12 آخرآخر
نمايش نتايج 1 به 10 از 12

نام تاپيک: اسمارتی(Smarty) - از آغاز تا پایان

  1. #1
    ناظر انجمن مباحث عمومی نرم‌افزار Mohammad King's Avatar
    تاريخ عضويت
    Sep 2005
    محل سكونت
    Markazi-Arak
    پست ها
    6,470

    پيش فرض اسمارتی(Smarty) - از آغاز تا پایان

    * این آموزش ها منبع اصلیشون از راهنمای Smarty هست البته من برداشت خودم رو نسب به این راهنما بیان میکنم به همراه مواردی که توی نت و کتب مختلف برای یادگیری این Template Engine جستجو کردم پس در صورتی که منبع خاصی باشی حتما اشاره میکنم

    مبحث اول :

    مقدمه :


    تقریبا 2 سال پیش برای انجام یه پروژه قالبمند مجبور شدم دنبال یه موتور تمپلیت بگردم که با اسمارتی آشنا شدم میشه گفت با شناختن اسمارتی و بطور کلی Template Engine یه تحویل بزرگی توی طراحی - برنامه نویسی من پیش اومد (حالا چرا ؟! زیاد مهم نیست چون اینجا جاش نیست . . .) وقتی فهمیدم که اسمارتی یه کلاس Php هست که برای مدیریت کدهای استفاده شده در وب سایت بکار میره و موجب میشه که براحتی اجزاء سایت رو ویرایش کنیم برام خیلی مهم و جذاب بود بطور مثال شما درنظر بگیرید یه مطلبی که بصورت خبر در یک سایت منتظر شده چطور میتواند تیتر خبر / تاریخ انتشار خبر / نویسنده خبر / متن خبر را بصورت قالبمند نمایش دهد !؟ برای تحقق به این آرمان اسمارتی این امکان را میدهد که تمپلیتی قابل ویرایش و قابل استفاده در تگ های HTML طراحی کنیم ! با این اوصاف دیگه هم Programer و هم Designer در صورت نیاز چنانچه تمایل به دست بردن در ظاهر و یا کدهای سیستم داشته باشند بدون دخالت در حیطه کاری هم میتونند کار خودشون رو بدون هیچ مشکلی انجام دهند

    خوب این یک مقدمه بود که فکر میکنم بصورت ساده و سلیس توضیح دادم بهتره حالا بریم سر اصل مطلب و برای بیان اون بهتره یه مقدار کتابی تر و رسمی تر صحبت کنیم

    ------------------------------
    برای شروع اسمارتی بهتر است با سایت این موتور تمپلیت اشنا بشویم برای دسترسی به این کلاس و دریافت اخرین نسخه میتوانید از آدرس اینترنتی [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] جدیدترین پکیج که شامل اخرین تغییرات نیز میباشد دریافت کنید
    Template Engine های فراوانی برای Php موجود هست که میتوان اسمارتی یکی از برترین های آنها دانست Smarty از Php و Zend Engine بهره میگیرد و برنامه ها را با کمترین زمان ممکن اجرا میکند چون اسمارتی یکبار الگو را کامپایل میکند تا زمانی که الگو تغییری حاصل نکند دیگر نیاز به کامپایل ان ندارد اط طرفی همانطور که در ادامه بطور مفصل عرض خواهم کرد Smarty از Caching به نحو احسنت بهره گرفته است


    باید توجه داشت که Smarty بصورت شیءگرا طراحی شده و عمل میکند که برای استفاده از آن میبایست یک Instance از آن ایجاد کرد که نمونه آن در زیر آورده شده است



    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

    اسمارتی درون شاخه ای که فراخوانی میشود اما بدلیل موارد امنیتی الگو ها نباید درون شاخه هایی که از طریق وب قابل دسترسی میباشند جاگذاری شوند از این جهت برای معرفی مسیر Smarty بدین شکل عمل میکنیم





    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


    شاخه Template مسیری است که اسمارتی درون آن بدنبال فایل های tpl. میگردد (منظور فایل های مربوط به ساختار تمپلیت میباشد)
    شاخه Compileمسیری است که اسمارتی درون آن الگوهای کامپایل شده را ذخیره میکند
    شاخه Config مسیری است که اسمارتی درون آن بدنبال فایل های تنظیمات میگردد
    شاخه Cache مسیری است که اسمارتی درون آن فایل های Cache شده خود را ذخیره میکند

    روش دیگری نیز روشی دیگر جهت معرفی این متغییرها وجود دارد که روش ارث بری نامیده میشود که بصورت زی میتوانید عمل کنید.



    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


    خصوصیات اسمارتی Smarty


    1- دارای سرعت زیاد میباشد
    2- تا زمانی که در PHP خطایی رخ نداده باشد، مفید بود و بدون مشکل کار میکند.
    3- فقط یکبار کامپایل می شود.
    4- فقط فایلهایی را که تغییر کرده اند را دوباره کامپایل می نماید.
    5- شما می توانید توابع سفارشی و یا متغیرهای ویرایشگر استفاده کنید، بنابراین قالبها قالب انعطاف پذیری پیدا می کنند.
    6- قالب ها با استفاده از تگهای حائل (delimiter tag) یعنی {} ، {{}} ، <—{}--!> قابل پیکربندی می باشند.
    7- ساختارهای if/elseif/else/endif در عبارات PHP گذاشته می شوند، یعنی عبارت {if …} می تواند ساده و یا پیچیده باشد.
    8- اجازه استفاده بخش ها مثل if ها و غیره را بصورت نامحدود تودرتو وجود دارد.
    9- می توان کدهای PHP را در فایلهای Template درون سازی نمود، اگر چه توصیه نمیشود
    10- امکان ساپورت Caching که یکی از بزرگترین و بهترین قابلیت های اسمارتی محسوب میشود

    * توجه : برای استفاده از اسمارتی به Php 4.0.6 به بالا نیاز است

  2. 6 کاربر از Mohammad King بخاطر این مطلب مفید تشکر کرده اند


  3. #2
    ناظر انجمن مباحث عمومی نرم‌افزار Mohammad King's Avatar
    تاريخ عضويت
    Sep 2005
    محل سكونت
    Markazi-Arak
    پست ها
    6,470

    پيش فرض

    بعد از یادگیری مراحل اولیه ی کار با اسمارتی و ارسال متغیر به فایل تمپلیت نوبت به مرحله ی بعدی میشه که شما با این آموزش می تونید بگید " من با اسمارتی می تونم یه پروژه رو انجام بدم ".. البته باید تمرین کرد !!.. توی هر چیزی
    خوب. بریم سراغ درس
    تابع if در اسمارتی :



    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


    این یک مثال ساده بود...

    عملگر های شرطی در اسمارتی اینطوری هستن :



    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

    برای ایجاد حلقه در اسمارتی توبع foreach و section وجود دارن.
    که ما قصد داریم section رو کار کنیم ( توی این آموزش )

    فرض بر اینه که می خوایم از یک بانک اطلاعاتی اطلاعات رو بخونیم و توی فایل تمپلیت نشون بدیم.
    اول از همه باید متغیر ها رو توی Php معرفی کنیم و بعد اون ها رو به فایل ارسال کنیم و از تابع section برای نمایش استفاده کنیم.




    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید



    خوب مثلا فایل footer.tpl امل اینه :


    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    فایل هدر رو هم که از آموزش قبلی دارین.

    این الگوریتم :




    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


    میاد تمام رکورد های فیلد های name و phone در جدول user رو به آرایه های معادل خودشون نسبت می ده...
    ( این دیگه کد php هستش... باید خودتون متوجهش بشید.. اگه نشدین دوباره فکر کنین... اگه بازم نشدین php رو بزارید کنار... اگه دوست دارین تنبلی کنید توی انجمن php بپرسین جواب داده خواهد شد )

    خوب, کار ما توی php تموم شد.. حالا این آرایه ها توی اسمارتی با {$users}, {$phone} قابل دسترسی اند ( یادتنو نره اینا آرایه هستن)
    خوب... اسمارتی :



    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


    تابع section دو پارامتر الزامی می گیره :
    loop که به تعداد اندیس های آرایه ی users حلقه رو ادامه میده.
    و name که یک مقدار دلخواه می گیره و به عنوان اندیس آرایه قرار می گیره و محتویات رو نشون می ده.

    به همین سادگی, به همین زیبایی.
    خوب آموزش تموم شد.
    البته برای حرفه ای شدن چیزای دیگه ای هم باید یاد بگیرین. سایر توابع و اصلاح گرهای متغیر ها رو در درس های بعد و یا در سوالات خودتون خواهید دید.
    موفق باشید.

  4. 4 کاربر از Mohammad King بخاطر این مطلب مفید تشکر کرده اند


  5. #3
    ناظر انجمن مباحث عمومی نرم‌افزار Mohammad King's Avatar
    تاريخ عضويت
    Sep 2005
    محل سكونت
    Markazi-Arak
    پست ها
    6,470

    پيش فرض

    صلاح گرهای اسمارتی (قسمت 1/3)

    سلام.
    ما می خوایم 21 اصلاح گر توی اسمارتی رو توی سه قسمت آموزش بدیم.
    خوب اول بگیم اصلاح گر چیه.
    مبتدی(مثه خودم) : اصلاحگرها پارامترهایی هستن که متغیرها می گیرن و به توجه با اون خودشون رو تغییر میدن و مطابق می کنن با اونا.
    و به این صورت به کار می رن:

    مثلا :



    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


    خوب...بسم ا.. :

    1) count_charactars
    شمارش کارکترها
    2) count_words
    شمارش کلمات
    3) count_sentences
    شمارش جمله ها
    4) count_paragraphs
    شمارش بندها
    5) capitalize
    حروف اول کلمات رو بزرگ میکنه.
    6) upper
    تمام حروف رو بزرگ می کنه.
    7) lower
    تمام حروف رو کوچیک می کنه.
    خوب.. اینا اصلاحگرهای خیلی ساده ای بودن که مربوط به قسمت اول بود.
    نظرات و یا سوالاتتون رو بگین خوشحال میشم.
    منتظر دو قسمت بعدی اصلاح گرها باشین.
    خدافظ ( می دونم سطح اینا خیلی پایین بود اما باید گفته میشد...

  6. 4 کاربر از Mohammad King بخاطر این مطلب مفید تشکر کرده اند


  7. #4
    ناظر انجمن مباحث عمومی نرم‌افزار Mohammad King's Avatar
    تاريخ عضويت
    Sep 2005
    محل سكونت
    Markazi-Arak
    پست ها
    6,470

    پيش فرض

    اصلاح گرهای اسمارتی (2/3)
    ***
    سلام
    خوب, می ریم سراغ قسمت دوم اصلاح گرهای اسمارتی :

    8) default:'string'
    این اصلاح گر مقدار پیشفرض رو برای یک متغیر در نظر می گیره چنان چه اگه متغیر مقدارنداشت این مقدار نمایش داده بشه.
    9)


    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


    این اصلاح گر دقیقاً مثل تابع strftime توی php هست. ( تاپیک "در دست گرفتن زمان" رو بخونید). این تابع روی یک عدد اجرا میشه که تابع strtotime در php این عدد رو بر میگردونه.
    برای مثال :



    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


    10) string_format
    این تابع فرمت خروجی یک رشته رو تعیین می کنه.
    برای مثال :


    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید



    11) replace:'search':'replace'
    برای مثال :



    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


    این کدی در متغیر string واژه ی salam رو با hello جایگزین می کنه.
    12) truncate:80:'...':false
    این اصلاح گر متن رو خلاصه می کنه به 80 کارکتر و در ادامه ی اون کارکترهای "..." رو قرار می ده و چون مقدار سوم false هست, این سه نقطه نه در میان آخرین کلمه بلکه بعد از پایان اون قرار می گیرن.و به این ترتیب ممکنه که بیش از 80 کارکتر بشه متن خلاصه ی شما.
    مثال :




    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


    و اگه به جای false شما مقدار true رو بدین اگه کارکتر 100ام ( البته منهای سه کارکتر نقطه.. ینی در حقیقت 87 کارکتر) روی یک کلمه باشه از همون جا مقدار جایگزینی شما قرار می گیره.

    13) spacify[:' _ ']
    این اصلاح گر اگه هیچ مقداری نداشته باشه بین هر کارکتر توی متغیر یه اسپیس می ندازه و اگه مقدار داشته باشه, اون موقدار بین هر کارکتر قرار می گیره.

    حالا هم یه اصلاح گر ساده بگم تا خستگی از تنتون در آد :
    14) cat:'text'
    این اصلاح گر مقدار text رو به انتهای متغیر اضافه می کنه.
    خسته نباشید !!!

  8. 5 کاربر از Mohammad King بخاطر این مطلب مفید تشکر کرده اند


  9. #5
    ناظر انجمن مباحث عمومی نرم‌افزار Mohammad King's Avatar
    تاريخ عضويت
    Sep 2005
    محل سكونت
    Markazi-Arak
    پست ها
    6,470

    پيش فرض

    ) strip[:replacement]
    این اصلاح گر تمام کارکترهای فاصله ( تب, خط بعد, اسپیس) رو با '' تعویض می کنه و اگه مقدار بدیم با اون تعویضش می کنه.
    16) nl2br
    این واضحه.
    17)


    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    اینم خوب باز واضحه !
    18) strip_tags[:false|true]
    این اصلاح گر کدها رو غیر فعالی می کنه.
    ینی در حقیقت پترن <?> رو با جای خالی عوض می کنه.
    19)(آرایه ها)با علامت @ می تونیم به پارسر بفهمونیم که آقا جون متغیر ما آرایه هستش و اصلاح گر مربوط به آرایه هست.
    مثلاً :
    @count
    و یا ... که من هنوز در اون سطح نمی دونم. البته میشه گفت که این مورد خودش یک اصلاح گر نبود !
    20)


    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    پارامترها دقیقاً شبیه اصلاحگر truncate هستش.
    البته اینا شدن 20 تا که من قول 21 رو دادم شرمنده.
    احتمالاً توی شمارش اشتباه کردم.
    اما
    منتظر باشید.(احتمالاً !!)
    خوب, این جلسه تموم شد.
    به هر حال اگه بد آموزش دادم به بزری خودتون ببخشید.
    منبع هم توی امضامه.
    موفق باشید و...

  10. 6 کاربر از Mohammad King بخاطر این مطلب مفید تشکر کرده اند


  11. #6
    ناظر انجمن مباحث عمومی نرم‌افزار Mohammad King's Avatar
    تاريخ عضويت
    Sep 2005
    محل سكونت
    Markazi-Arak
    پست ها
    6,470

    پيش فرض

    وقتی از اسمارتی استفاده میکنید. اگر در فایل قالب ، از کدهای جاوا اسکریپت و یا css استفاده کرده باشید. به دلیل شباهت برخی کارکترهای ویژه (مثل ; در کدهای جاوا اسکریپت و یا {} در کدهای css) با دستورات اصلی اسمارتی ، با خطایی از سمت اسمارتی مواجه میشید.
    برای رفع این خطا ، کافیست دستورات جاوا اسکریپت یا css خود را بین دستور {literal}{/literal} قرار دهید.
    مثال:


    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

  12. 5 کاربر از Mohammad King بخاطر این مطلب مفید تشکر کرده اند


  13. #7
    ناظر انجمن مباحث عمومی نرم‌افزار Mohammad King's Avatar
    تاريخ عضويت
    Sep 2005
    محل سكونت
    Markazi-Arak
    پست ها
    6,470

    پيش فرض

    [
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    ]
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    ]

  14. 5 کاربر از Mohammad King بخاطر این مطلب مفید تشکر کرده اند


  15. #8
    در آغاز فعالیت
    تاريخ عضويت
    Jan 2007
    پست ها
    3

    پيش فرض

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

  16. #9
    در آغاز فعالیت
    تاريخ عضويت
    Jan 2011
    پست ها
    1

    پيش فرض

    یک سوال چرا دستور if داخل دستور حلقه درست کار نمیکنه

  17. #10
    در آغاز فعالیت
    تاريخ عضويت
    Dec 2012
    پست ها
    1

    پيش فرض

    سلام
    عالی بود
    باز هم ادامه بدهید

صفحه 1 از 2 12 آخرآخر

Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •