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

alireza82

Well-Known Member
این کتاب یک ترجمه ناشاینه است از راهنمای smarty !

http://smarty.php.net/manual/en

سلام
درسته میلاد جان برا همین بهش سطح کیفی B دادم. از نظر مثال هم تو فقر هست. چینش مطالب هم ضعیف هست.
معرفیش کردم چون گفتم احتمالا خیلی ها هستن که دنبال ترجمه فارسی همین منوال هستند که ا به این دسته از افراد کمک خوبی میکنه!
اگر کسی انگلیسی خوبی داره همیشه منوال ها کامل تر و بهتر هیتند.
موفق باشید
 

NabiKAZ

Well-Known Member
سلام ،
از دوستان تشکر میکنم . تاپیک خوبی شده.

به نظر شما کدامیک اصولی تر است:
کد:
$str = "Sun or rain expected\ntoday, dark tonight";
$smarty->assign('articleTitle', $str);
{$articleTitle|nl2br}
یا:
کد:
$str = "Sun or rain expected\ntoday, dark tonight";
$smarty->assign('articleTitle', nl2br($str));
{$articleTitle}

همچنین در مورد دیگر توابع lower, upper ,...


یا مثلاً استفاده از {html_image file='pumpkin.jpg'} بجای <img src="pumpkin.jpg" alt="" width="44" height="68" /> و امثالهم رو پیشنهاد میکنید؟ اصلا لزومی داره اینکارها ؟

تشکر
 
آخرین ویرایش:

NabiKAZ

Well-Known Member
اتفاقی به این برخوردم به نظرم جالب اومد :

HTML:
{mailto address="[email protected]"}
<a href="mailto:[email protected]" >[email protected]</a>

{mailto address="[email protected]" text="send me some mail"}
<a href="mailto:[email protected]" >send me some mail</a>

{mailto address="[email protected]" encode="javascript"}
<script type="text/javascript" language="javascript">
   eval(unescape('%64%6f% ... snipped ...%61%3e%27%29%3b'))
</script>

{mailto address="[email protected]" encode="hex"}
<a href="mailto:%6d%65.. snipped..3%6f%6d">m&..snipped...#x6f;m</a>

{mailto address="[email protected]" subject="Hello to you!"}
<a href="mailto:[email protected]?subject=Hello%20to%20you%21" >[email protected]</a>

{mailto address="[email protected]" cc="[email protected],[email protected]"}
<a href="mailto:[email protected][email protected]%[email protected]" >[email protected]</a>

{mailto address="[email protected]" extra='class="email"'}
<a href="mailto:[email protected]" class="email">[email protected]</a>

{mailto address="[email protected]" encode="javascript_charcode"}
<script type="text/javascript" language="javascript">
    <!--
    {document.write(String.fromCharCode(60,97, ... snipped ....60,47,97,62))}
    //-->
</script>

نیاز به توضیح نداره ، واضحه ... کد اسمارتی و بعدش نمونه خروجی نوشته شده.

به خروجی ها در حالت encode های مختلف توجه کنید، فرار از دست اسپمر ها رو بسیار ساده کرده.

نبی
 

alireza82

Well-Known Member
به نظر شما کدامیک اصولی تر است:
کد:
$str = "Sun or rain expected\ntoday, dark tonight";
$smarty->assign('articleTitle', $str);
{$articleTitle|nl2br}
یا:
کد:
$str = "Sun or rain expected\ntoday, dark tonight";
$smarty->assign('articleTitle', nl2br($str));
{$articleTitle}

همچنین در مورد دیگر توابع lower, upper ,...

این ها هم که هر دو در اصل یه کار میکنن و توی خود منوال اسمارتی تا اونجا که یادمه تفاوتی بینشون نذاشته بود. گفته بود میشه به این دوشکل کار کرد برای اصلاح گر ها!!!
اما به نظرم همون اولی هم خوشگل تره و هم با کلاس تره یه جورایی!!
میدونی کلاس داره!!:neutral:
یا مثلاً استفاده از {html_image file='pumpkin.jpg'} بجای <img src="pumpkin.jpg" alt="" width="44" height="68" /> و امثالهم رو پیشنهاد میکنید؟ اصلا لزومی داره اینکارها ؟
تشکر
والا این تابع های اسمارتی به نظر من بیشتر برای راحتی کار و مقداری هم خوشگلی نوشته شدن. مثلا طرف اومده دیده خسته میشه این همه کد HTML بنویسه تا یه عکس نمایش داده شه اومده سه صوت یه تابع نوشته تا از این به بعد آدرس عکس و بده و طول و عرض تا خسته نشه!!! همون کاری که من و شما میکنیم!! مثلا یه کلاس فرم فکتوری مینویسیم تا دیگه هی ننویسیم <input .... طرفی هم که امثال این تابع رو گسترش داده به نظر من هدفش راحت تر کردن کار بوده همین!!!1
به نظرم اگر قرار هست یه کدی رو به تعداد زیاد یا مثلا فری بدیم بهتره از این توابع استفاده نشه تا اگر یه بنده خدایی که با اسمارتی اشنا نیست خواست یه حرکتی بزنه کمتر گیج شه!!(البته اسم توابع تابلو هست چیکار داره میکنه و همینطور ارگومان هاش ولی با این وجود).....
البته نظر من بود!!!!
 

NabiKAZ

Well-Known Member
سلام و تشکر از توضیحاتت.
البته که تفاوتی وجود نداره بین اون دو ، منم منظور بیشتر از دید اصولی بود. اما ظاهراً که اصولی در کار نیست و در این مورد باید سلیقه ای عمل کرد.

در مورد زیر ، کلاس آماده سراغ دارید؟
"مثلا یه کلاس فرم فکتوری مینویسیم تا دیگه هی ننویسیم <input .... "

تشکر
 

alireza82

Well-Known Member
سلام و تشکر از توضیحاتت.
در مورد زیر ، کلاس آماده سراغ دارید؟
"مثلا یه کلاس فرم فکتوری مینویسیم تا دیگه هی ننویسیم <input .... "

تشکر

سلام
من یه کلاس فرم فکتوری برای خودم نوشتم مثلا اگر بخوام یه تکست فیلد درست کنم مینویسم!
PHP:
$form=new Formfactory();
$form->createText('user_fullname,20,'alireza'');
این کلاس دست نوشته خودم هست که یه کارایی انجام میده مثلا بالا یه تکست فیلد ایجاد کردم !و value رو alireza گذاشتم.
و سایز رو هم 20 دادم.
نکته:
حالا که بحث به اینجا رسید یه نکته بگیم که بحث به اسمارتی مربوط شه!
برای دسترسی به عناصر یم شیء در اسمارتی به این صورت عمل میکنیم!!! یعنی اگر بخوایم به عناصر و متود های کلاس فرم فکتوری دست پیدا کنیم مینویسیم:
اول تعریفش تو فایل php:
PHP:
$smarty->assign('form',$form)
دسترسی تو اسمارتی برای ایجاد همون تکست باکس قبلی:
کد:
{$form->createText('user_fullname,20,'alireza'')}
به عبارتی همون طور که تو php به متود ها و عناصر دسترسی دارید تو اسمارتی هم با
PHP:
->
دسترسی پیدا میکنید. یه کلاس هم متونید اینجا ببینید که برای ساخت فرم هست و خیلی کامل تر از کلاس من هست گویا البته من تست نکردم از رو توضیحات میگم.
موفق باشید.
 
آخرین ویرایش:

NabiKAZ

Well-Known Member
alireza82 جان از توضیحاتت ممنونم .
البته خودم پیش از این کلاسی برای خودم نوشته بودم ولی منظورم یه چیز کامل و جامع و اصولی بود که کم و بیش پیداش کردم !
کلاسی هم که معرفی کردی میبینم.
خودم هم یه جستجو کردم و به کلاس piwi برخوردم که امکاناتش تقریبا مشابه کلاسی بود که شما معرفی کردید:
کد:
Piwi 0.1 has been released. Piwi can create XHTML widgets with the use of easy and customizable PHP Classes.

What piwi 0.1 has:

    * Bin widgets: Buttons, Combos, Entries, etc
    * Containers: Boxes, Datagrids (a nice feature), Forms, Toolbars, Fieldsets, ViewPorts, etc.
    * Misc objects: Labels.
    * Validators (more than 10) for forms
    * Events for Bin widgets (onsubmit, onclick, etc)
    * Everything is based on w3c standards.
    * Based on Gtk# ideas (Gtk ideas with objects).
    * Enjoy it!

از اينجا قابل دون بود است.


تشکر
 

.:: Ali ::.

Member
Smarty - the compiling PHP template engine

آموزش Smarty از نصب تا ريزه كاري هاي قالب ها .

خواهشي كه از دوستان دارم اينه كه سوال و جواب ها رو تو تاپيك مجزا مطرح كنن تا اين تاپيك حالت چكيده و يكسو پيدا كنه .

با تشكر .
 

پیوست ها

  • Smarty_the_compiling_PHP_template_engine.rar
    334 کیلوبایت · بازدیدها: 227
آخرین ویرایش:

Goroopid

Banned
اینم یک نمونه برای استفاده از اسمارتی به صورت {Tample}

PHP:
//<!-- www.Goroop.ir
 $MyFileArray = @file('templates/'. $Config['SiteLanguage'] .'/Your-Tample.tpl.html');
 $MyFileCount = count($MyFileArray);
 $Body = '';
 for($i = 0; $i != $MyFileCount; $i++)
 {
  $Body .= $MyFileArray[$i];
 }
 if($Config['SiteLanguage'] == 'fa')
     $Body = str_replace('{date}', sun_cal(), $Body);
    else
     $Body = str_replace('{date}', strftime("%c"), $Body);

 $Body = str_replace('{SenderName}', $Name, $Body);
 $Body = str_replace('{WebSiteUrl}', $Url, $Body);
 $Body = str_replace('{EmailAddr}', $Email, $Body);
 $Body = str_replace('{Body}', $MsgBody, $Body);
 $Body .= '<font face="tahoma" color="#RGH">';
//End of Load Template-->
 

alireza82

Well-Known Member
چند لینک مفید برای کسایی که تازه میخوان اسمارتی یاد بگیرن ولی ول میخوان بدونن چرا باید این اسمارتی یا یه تمپلت انجین دیگه رو یاد بگیرن:
این ها مختصر و مفید هستن!!!
لینک ها تصحیح شد:

http://www.iranphp.net/articles/template_engines/Articles000.pdf
و
http://www.iranphp.net/index.php?option=com_content&task=view&id=60&Itemid=25
و
http://www.iranphp.net/index.php?option=com_content&task=view&id=67&Itemid=25
موفق باشید
 
آخرین ویرایش:

siavashmusic

Active Member
علیرضا میگم عاشق iranphp هستیا !!
هرجا صحبت لینک باشه به هر صورت یک لینک مرتبط با موضع به ایران پی اچ پی متصل میکنی
:)
 

NabiKAZ

Well-Known Member
سلام ؛

وقتی از اسمارتی استفاده میکنید. اگر در فایل قالب ، از کدهای جاوا اسکریپت و یا css استفاده کرده باشید. به دلیل شباهت برخی کارکترهای ویژه (مثل ; در کدهای جاوا اسکریپت و یا {} در کدهای css) با دستورات اصلی اسمارتی ، با خطایی از سمت اسمارتی مواجه میشید.
برای رفع این خطا ، کافیست دستورات جاوا اسکریپت یا css خود را بین دستور {literal}{/literal} قرار دهید.
مثال:
کد:
{literal}
<script language="JavaScript" type="text/javascript">
// code here
</script>

<style type="text/css">
/* css here */
</style>
{/literal}

موفق باشید
نبی
 

Goroop.ir

Member
کسی یک نمونه از این smarty اپلود نمیکنه ؟
یک نمونه ی خیلی خیلی خیلی ساده میخام که کامل باشه یعنی فایل های .tpl و غیره رو داشته باشه ؟

ممنون میشم اگر این کار رو بکنید .
 

irlogo

Active Member
من اسمارتی را دارم ولی نمی دونم اصلا چیه !!


تو رو خدا یکی بگه این اسمارتی چیه ! یکی بگه دیگه ، آقا جون بگو جان من
 

Goroop.ir

Member
اگر دوستان یک کد ساده بزارند برای تست کردن اون موقع میشه فهمید که اسمارتی چیه
 

siavashmusic

Active Member
شما اسمارتی رو دانلود کن طبق آموزش این مفاله روی سیستمت نصب کن توی خوده پروژه فایل تست هست میتونید تست کنید
اگر دوستان یک کد ساده بزارند برای تست کردن اون موقع میشه فهمید که اسمارتی چیه

شما تا الان اسمارتی رو نصب کردی؟ این همه مثال توی این 4 صفحه مقاله پس چیه !!!

من همش رو خوندم چيزي نفهميدم !

بنظر شما من از کجا میتونم برای توضیح شروع کنم ؟!!! شما چی رو متوجه نشدی !؟
 

جدیدترین ارسال ها

بالا