الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

نظام القوالب Smarty

مغلق
بدأه php0 في 19 يونيو 2006 · 15 رد · 2,895 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

ما هو Smarty

ما الفائدة منه

كيف يعمل

طريقة البداية

محاولة شرح تتضمن اضافات والتعديلات اللازمة

باذن الله تعالى

نبدا اليوم بشرح بسيط عنه

طبعا حسب ما سمعت ان اول من قام به روسي

ما هو Smarty نظام قوالب يفصل الكود البرمجي عن html وتوفير ايضا بالجهد والوقت وعدا عن ذلك عندما يتم فصل الكود البرمجي بامكنك التعديل بسهولة وفهم الكود ببساطة

وعدا عن ذلك فهناك مميزات كثيرة مضافة مع النظام

تسمى بلنغز plugins

هذه يتم ضافتها بسهولة وبامكانك انت ايضا اضافة اجزاء خاصة plugins

طبعا السمارتي يوفر لك ايضا الكاش مما يخفف الضغط عن الموقع كثيرا

وخصوصا المواقع ذات الزيارات الكثيرة

كيف تبدا مع Smarty

حمل الملفات المطلوبة من الموقع الخاص بالنظام

http://smarty.php.net

تحميل النظام مباشرة على هذا الرابط

http://smarty.php.net/do_download.php?down...y-2.6.14.tar.gz

حمل الملفات المطلوبة

بعدها فك الضغط عن الملفات

طبعا الملف المهم من كل هذه المجلدات

المجلد libs

طبعا بامكانك اعادة تسميته لــ

Smarty

لتتم التفرقة بينه وبين المجدلدات الاخرى

من ثم

قم بانشاء مجلد وسمه

compile

,

ومجلد اسمه html

طبعا لاحقا نتكلم عن هذا المجلدان

ملاحظة لاتخلط بين المف والمجلد

بعدها قم بفتح محرر php اللذي تعمل عليه

واضف النص التالي فيه

<?php

// Filename: libs.inc.php


$fixpath = dirname(__FILE__);


define ("SMARTY_DIR","Smarty/");

require_once (SMARTY_DIR."Smarty.class.php");

$smarty = new Smarty;

$smarty->compile_dir= "$fixpath/compile";

$smarty->template_dir= "$fixpath/html";

?>

لتعريف الملفات الخاصة بالنضام

طبعا يتم حفظ الملف حسب الاسم اللي تختاره ولنسمه على سبيل المثال

libs.inc.php

كيف تبدا مع سمارتي

بعد ان اتممنا تعريف سمارتي Smarty

بنبدا الان بالعمل عليه

فرضنا لو اردنا القيام بصفحة نعرض فيها متغيرات

كل ما علينا ان نصمم الصفحة الخاصة بنا على سبيل المثال بفرونت بيج

ونضيف النص التالي

{$alert}

ونقوم بحفظ الصفحة بامتداد مثلا tpl

بعد ذلك نفتح محرر php الخاص بنا

ونضيف فيه النص التالي

<?php
require_once("libs.inc.php");


$smarty->assign('alert','بسم الله الرحمن الرحيم');
$smarty->display('test.tpl');


?>

قم بحفظ المف وبعدها حاول استعراضه ستجد النتج

بسم الله الرحمن الرحيم

طبعا السطر الاول المقصود به ضم الملف الخاص بتعريف سمارتي

اما السطر التاني

فهو اسناد المتغير الموجود بالملف واستبداله بالقيمة الجديد

اما السطر الثالث فهو لعرض الناتج كاملا

وبهذا نكون فهمنا مبا Smarty

وللدرس بقية

تم تعديل هذه المشاركة بواسطة php0 في 19 يونيو 2006 في 18:47

اللهم لا علم لنا الا ما علمتنـــــــــــــــــــــــا

http://dwal.biz

#2

جزاك الله خيرًا أخي ...

تابع الشرح وفقك الله ...

#3

حياك الله اخي لكن ما شفت اي تفاعل مع الموضوع

فلم لم اكمل الشرح لكن باذن الله تعالى سازيد عليه قريبا وشكرا

اللهم لا علم لنا الا ما علمتنـــــــــــــــــــــــا

http://dwal.biz

#4

لا أخي الكريم نحن معاك فتابع ما بدأت عنه .

ونحن في انتضار المزيز.

#5

II. Smarty For Template Designers

3. Basic Syntax

Comments

Variables

Functions

Attributes

Embedding Vars in Double Quotes

Math

Escaping Smarty Parsing

4. Variables

Variables assigned from PHP

Variables loaded from config files

{$smarty} reserved variable

5. Variable Modifiers

capitalize

cat

count_characters

count_paragraphs

count_sentences

count_words

date_format

default

escape

indent

lower

nl2br

regex_replace

replace

spacify

string_format

strip

strip_tags

truncate

upper

wordwrap

6. Combining Modifiers

7. Built-in Functions

{capture}

{config_load}

{foreach},{foreachelse}

{if},{elseif},{else}

{include}

{include_php}

{insert}

{ldelim},{rdelim}

{literal}

{php}

{section},{sectionelse}

{strip}

8. Custom Functions

{assign}

{counter}

{cycle}

{debug}

{eval}

{fetch}

{html_checkboxes}

{html_image}

{html_options}

{html_radios}

{html_select_date}

{html_select_time}

{html_table}

{mailto}

{math}

{popup}

{popup_init}

{textformat}

9. Config Files

10. Debugging Console

III. Smarty For Programmers

11. Constants

SMARTY_DIR

SMARTY_CORE_DIR

12. Smarty Class Variables

$template_dir

$compile_dir

$config_dir

$plugins_dir

$debugging

$debug_tpl

$debugging_ctrl

$autoload_filters

$compile_check

$force_compile

$caching

$cache_dir

$cache_lifetime

$cache_handler_func

$cache_modified_check

$config_overwrite

$config_booleanize

$config_read_hidden

$config_fix_newlines

$default_template_handler_func

$php_handling

$security

$secure_dir

$security_settings

$trusted_dir

$left_delimiter

$right_delimiter

$compiler_class

$request_vars_order

$request_use_auto_globals

$error_reporting

$compile_id

$use_sub_dirs

$default_modifiers

$default_resource_type

13. Smarty Class Methods()

append() -- append an element to an assigned array

append_by_ref() -- append values by reference

assign() -- assign values to the templates

assign_by_ref() -- assign values by reference

clear_all_assign() -- clears the values of all assigned variables

clear_all_cache() -- clears the entire template cache

clear_assign() -- clears the value of an assigned variable

clear_cache() -- clears the cache for a specific template

clear_compiled_tpl() -- clears the compiled version of the specified template resource

clear_config() -- clears assigned config variables

config_load() -- loads config file data and assigns it to the template

display() -- displays the template

fetch() -- returns the template output

get_config_vars() -- returns the given loaded config variable value

get_registered_object() -- returns a reference to a registered object

get_template_vars() -- returns assigned variable value(s)

is_cached() -- returns true if there is a valid cache for this template

load_filter() -- load a filter plugin

register_block() -- dynamically register block functions plugins

register_compiler_function() -- dynamically register a compiler function plugin

register_function() -- dynamically register template function plugins

register_modifier() -- dynamically register modifier plugin

register_object() -- register an object for use in the templates

register_outputfilter() -- dynamically register outputfilters

register_postfilter() -- dynamically register postfilters

register_prefilter() -- dynamically register prefilters

register_resource() -- dynamically register resources

trigger_error() -- output an error message

template_exists() -- checks whether the specified template exists

unregister_block() -- dynamically unregister block function plugins

unregister_compiler_function() -- dynamically unregister a compiler function

unregister_function -- dynamically unregister template function plugin

unregister_modifier() -- dynamically unregister modifier plugin

unregister_object() -- dynamically unregister an object

unregister_outputfilter() -- dynamically unregister an output filter

unregister_postfilter() -- dynamically unregister a postfilter

unregister_prefilter() -- dynamically unregister a prefilter

unregister_resource() -- dynamically unregister a resource plugin

14. Caching

Setting Up Caching

Multiple Caches Per Page

Cache Groups

Controlling Cacheability of Plugins' Output

15. Advanced Features

Objects

Prefilters

Postfilters

Output Filters

Cache Handler Function

Resources

16. Extending Smarty With Plugins

How Plugins Work

Naming Conventions

Writing Plugins

Template Functions

Modifiers

Block Functions

Compiler Functions

Prefilters/Postfilters

Output Filters

Resources

Inserts

IV. Appendixes

17. Troubleshooting

Smarty/PHP errors

18. Tips & Tricks

Blank Variable Handling

Default Variable Handling

Passing variable title to header template

Dates

WAP/WML

Componentized Templates

Obfuscating E-mail Addresses

19. Resources

20. BUGS

طبعا ستجد في الاعلى مجموعة الدوال الخاصة بـ Smarty

رح نحاول نشرح كل واحدة منها على حدا مع مثال لتسيهبل الفهم للاخوة

واي سوال باذن الله نحلو كلنا مع بعض

تم تعديل هذه المشاركة بواسطة php0 في 3 يوليو 2006 في 17:44

اللهم لا علم لنا الا ما علمتنـــــــــــــــــــــــا

http://dwal.biz

#6

طريقة تعريف استخدام الدوال في Smarty

تكون طريقة موحدة في العمل

مثال على احد الدوال في سمارتي

كيف تعمل

طبعا اين تضاف الدالة

تضافة الدالة في سمارتي بنفس القالب

لو تذكر في الاعلى ان قمنا بحفظ صفحة باسم

test.tpl

طبعا هذه الصفحة تكون هي القالب اي المصمم بفرونت بيج على سبيل المثال

لنقم باستخدام احدى الدوال

لنفهم كيفية عمل هذه الدالة ولتكن على سبيل المثال

معرفة عدد الكلمات المكتوبة

مثلا

في القالب

test.tpl

نضيف ما يلي

{$alert|count_words}

ستجد ان الناتج

هو 4

هذا يعطيك عدد الكلمات

ستلاحظ ان الفاصل بين هذه المتغير والدالة هو استخدام هذه العلامة |

هي تخبر سمارتي انه يجب استخدام هذه الدالة لعملية ما

وطبعا هنك طرق تفاصيل اكثر

وللدرس بقية باذن الله تعالى

مراجعة كافة الدوال مع شرحها على موقع Smarty

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

تم تعديل هذه المشاركة بواسطة php0 في 3 يوليو 2006 في 18:03

اللهم لا علم لنا الا ما علمتنـــــــــــــــــــــــا

http://dwal.biz

#7

مشكور جداً على هذا الموضوع الرائع وفقك الله

تقســــم الناس دنياهم و فتنتها وقد تفرد من يـهوى بدنياهُ

ما فارق الري قلباً أنت جذوتهُ و لا النعيم محباً أنت سلواهُ

#8

لا شكر على واجب بس ان شاء الله الاعضاء يستفيدون وكمان يفيدون من تجاربهم وشكرا

اللهم لا علم لنا الا ما علمتنـــــــــــــــــــــــا

http://dwal.biz

#9

اخي الكريم :

مشكور على الجهد الذي تقوم به .

لدي استفسار بسيط .

ألا تعتقد ان القوالب تقوم بتبطيئ ما للتصفح . لأنه هناك عمليات تقام من اجل انسيق الـ html مع php البعض منها تستحدم Regular-Expressions في عمليات فصل الكود .

انا ليست لدي خبرة في عمل القوالب templates لكن اريد ان اعرف عنها في جدا مهمة في التصميم .

لدي ملاحضة :

ما رأيك أن نقوم نحن ببناء قالب من عندنا بدل ان نستحدم قالب جاهز .

حتى نفهم الفكرة من القوالب وكيفية التعامل معها .

---

منتضرين المزيد.

#10

السلام عليكم ورحمة الله وبركاته

تعقيبا على كلا م الاخ فواز الشمري

اقتباس
ألا تعتقد ان القوالب تقوم بتبطيئ ما للتصفح . لأنه هناك عمليات تقام من اجل انسيق الـ html مع php البعض منها تستحدم Regular-Expressions في عمليات فصل الكود .

اخي العزيز انا معك انا بتاخذ وقت عند المعالجة طبعا ولكن لا تنسى الكاش

cach

طبعا رح افسر لك ايش الكاش

انتبه انت مثلا لو كان عندك برنامج وفتحت البرنامج بعد ان شغلت الجهاز اول مرة

رح تلاقى ان البرنامج ياخذ وقت علشان يحمل

لكن قفلو وارجع افتحه ثاني مرة

رح تلاقى البرنامج فك بسرعة رهيبة ثاني مرة

فان سمارتي يحمل هذه الميزة طبعا انت حر باستخدامها بعدة اساليب

وعلى فكرة افضل شرح للكاش هو

تخيل انت صاحب مكتبة كبيرة :D

وجاء احد الزبائن واستعار الكتاب منك

وبعد يومين رجع لك الكتاب طبعا بعد ما اخذت الفلوس اهم شي هاي

حطيت الكتاب على الطاولة طبعا من الكسل وقلت بعدين ارجعه لمكان

ودخل احد الزبائن وطلب منك نفس الكتاب كم السرعة اللي رح تجيب الكتاب لو

ثواني وتقول اف الحمد لله ان فكني من ترجيع الكتاب ولاتنسى ان انت بنفس الوقت كم ربحت

اول شي الفلوس ;)

ثاني شي الوقت اللي كنت رح تضيعو تارترجع الكتاب الى مكانو بين مولفات الكاتب نفسه

المهم

طولنا الكلام

ولاتنسى تاني شي

ترتيب الكود البرمجي لما ترجع بعد شهر مثلا او شهرين تحس المكان نضيف ومرتب مو غرفة عزاب :D

لكن بدون التمبلت رح تحس انو غرفة عزاب وكلهم كسالى ومدخنين

وتخيل المنضر

اقتباس
ما رأيك أن نقوم نحن ببناء قالب من عندنا بدل ان نستحدم قالب جاهز .

حتى نفهم الفكرة من القوالب وكيفية التعامل معها

طبعا لا ما نع من ذلك ولكن انا تعجبني مقولة جدا رائعة

ابدأ من حيث انتهى الاخرون

وطبعا لو تقرا المميزات اللي موجودة ب Smarty

رح تعرف انه شغل اخذ وقت طويل مو يوم ويمين

والحمد لله احنا عندنا روح الجماعة توفت من زمان

والله الموفق

اللهم لا علم لنا الا ما علمتنـــــــــــــــــــــــا

http://dwal.biz

#11

شيئ عضيم .

أنا معاك في كل الي قلت عليه . ومنتضرين منك المزيد .

انا الفكرة التي استخدمها في فصل كود html عن php قريبة من فكرة الـ template : وهي كما يلي :

أقوم بعمل ملف بأسم index.php هذا الملف اقوم بداخلة بتعريف متغير Calss قاعدة البيانات الذي قمت انا بعملة . ومن ثم اقوم بتقسيم الملف index.php إى عدد من الكتل . فمثلا لو كان لدي اخبار في الصفة الرئيسية وكذلك مقالات و استفتاء وغيره من هذه التفاصيل , وجميع هذه البيانات تحتاج الإتصال وجلب البيانات من قاعدة البيانات كل الي اقوم بعملة هوا ان اقوم في الصفحة index.php g بعمل معالجة لكل قسم من هذه اللأقسم مثلا الأخبار اقوم بعمل الكود الخاص بمعالجة اخذ الأخبار واضع النماتج في متغير . وهكذا . حتى أنتهي من جميع العمليات التي لا تحتاج فيها إلى html

بعد ذلك اقوم في نهاية الصفحة باستدعاء الصفحة index.htm والتي عادة ما اضعها في مجلد templates

فيها اقوم بفقط بعمل echo لكل متغير يحمل قيمة .

وهذا العمل يفصل تماما كود php عن html وعندما اريد ان اعدل اول اغير في الكود فقط اتوجة لملف index.php .

------

منتضرين منك بقية الدروس .

#12

اخي العزيز انا اوافقك الراي

وطبعا لكل شخص طريقته

ولكن بعد التجربة مع Smarty

رح تلاقي الفرق الكبير

ملاحظة

انا محتار هل ابداء بشرح كافة الدوال ام ابدا بشرح الاهم وهي كيف تبدا بتصميم موقع كامل

اتمنى ان تعطوني رايكم

والله الكريم

اللهم لا علم لنا الا ما علمتنـــــــــــــــــــــــا

http://dwal.biz

#13

أبدأ بالأهم وتوكل الله بارك الله فيك

ولو وافيت ربك دون ذنب *** وناقشك الحساب إذاً هلكتا

ولم يظلمك في عملٍ ولكن *** عسير أن تقوم بما حملتا

#14

ان شاء الله

اللهم لا علم لنا الا ما علمتنـــــــــــــــــــــــا

http://dwal.biz

#15

أولا أشكرك على المجهود المبذول

ثانبا أتمنى أن تبدأ من تصميم موقع كامل

وأتمنى أن توضح إستخدام السمارتي مع قواعد البيانات

-waf

#16

ما عليش ان شاء الله رح ابدا بس شوي اخي العزيز مشغول

ان شاء الله اليومين

اللهم لا علم لنا الا ما علمتنـــــــــــــــــــــــا

http://dwal.biz

هذا الموضوع مغلق.

مواضيع مشابهة