فهرست مطالب سند

1. تابع config_load

نحو:
(config_load فایل = file_name")

این تابع برای بارگذاری در متغیرهای قالب از فایل های پیکربندی. علاوه بر نام فایل در حال بارگذاری، این تابع ممکن است چندین مورد دیگر نیز داشته باشد گزینه های اضافی. به عنوان مثال، پارامتر بخش، که نام بخش مورد نظر را مشخص می کند. بیشتر اطلاعات دقیقاین گزینه ها و گزینه های دیگر را می توان در مستندات Smarty یافت.

مثال:
(config_load file="task.conf")

2. تابع ضبط

نحو:

(capture name = "block_name"
assign="variable_name") ...
(/گرفتن)

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

هر چیزی بین (capture name="varname") و (/capture) در متغیری به نام varname نوشته می شود. محتوای ثبت شده به این روش را می توان در قالب با استفاده از متغیر ویژه $smarty.capture.varname استفاده کرد، که در آن varname مقدار ارسال شده به ویژگی نام تابع capture است. اگر نام متغیری داده نشود، پیش فرض استفاده خواهد شد.

تخصیص پارامتر دوم نام متغیری را مشخص می کند که مقدار خروجی گرفته شده به آن اختصاص داده می شود. این پارامتر، مانند نام، اختیاری است.

3. عملکرد بخش

نحو:

(نام بخش = "نام_بخش"
loop="variable_to_calculate_the_number_of_iterations"
[,start="start_position_index"]
[, step="step"] [,max="max_iterations"]
[,show="show_section"] )...
(/ بخش)

Section یک حلقه برای پیمایش عناصر یک آرایه است. پارامترهای مورد نیاز عبارتند از name که نام بخش را مشخص می کند و حلقه که متغیری است که تعداد تکرارهای حلقه را تعیین می کند.

به طور معمول، حلقه یک متغیر آرایه است و تعداد تکرارهای یک بخش برابر با تعداد عناصر آن آرایه است. برای نمایش یک متغیر در داخل یک حلقه، باید نام بخش را در پرانتز بعد از نام متغیر مشخص کنید.

(نام بخش=حلقه هنر=$title)

عنوان: ($title)

(/ بخش)

مثال 15.8. برای تکرار روی عناصر آرایه حلقه بزنید

4. تابع foreach

نحو:

(foreach from="array_name"
مورد = "نام_ مورد_ فعلی")
... (/برای هر)

علاوه بر این، می توانید از کلید ویژگی های اضافی - نام کلید برای عنصر فعلی آرایه و نام - نام چرخه استفاده کنید که با آن می توانید به ویژگی های آن دسترسی پیدا کنید. ویژگی های from و item مورد نیاز است.

حلقه های foreach جایگزینی برای حلقه های مقطع هستند. تابع foreach بسیار شبیه به حلقه foreach در PHP است.
(foreach from=$articles item=art)
عنوان: ($art)

(/برای هر)

مثال 15.9. حلقه foreach

حلقه های foreach ویژگی های خاص خود را دارند. می توان به آنها دسترسی پیدا کرد: ($smarty.foreach.foreachname.varname)، که در آن foreachname نام حلقه ای است که با پارامتر نام آن داده می شود و varname نام ویژگی است.

5. عبارت If, elseif, else

نحو:

(اگر عبارت) action_block
(elseif express1) action_block1
(دیگر) action_block2
(/اگر)

عمل عملگر تقریباً شبیه عملگر if...elseif...else زبان PHP است.

عملگرهای مقایسه زیر را می توان در عبارات استفاده کرد: eq، ne، neq، gt، lt، lte، le، gte، ge، زوج است، فرد است، زوج نیست، فرد نیست، نه، mod، div توسط، زوج است. توسط، فرد بر اساس، ==، !=، >،<, <=, >=. هر یک از آنها باید با فاصله از مقادیر اطراف جدا شوند. می توان از پرانتز در عبارات استفاده کرد و توابع PHP را فراخوانی کرد.

(اگر $name معادل "واسیا" باشد)
خوش اومدی واسیا
(elseif $name eq "Petya")
خوش اومدی پتیا
(دیگر)
خوش آمدی. و تو کی هستی؟
(/اگر)

مثال 15.10. اظهارات if، elseif، else

(* این مثال کار نخواهد کرد زیرا هیچ فاصله ای در اطراف عملگرهای مقایسه وجود ندارد *)
(اگر $name=="واسیا" || $name=="پیتر")
...
(/اگر)
مثال 15.11. نمونه شکسته

هنگام ایجاد سایت‌ها به صورت خودنویس (بدون استفاده از چارچوب‌ها، CMS و سایر موارد مد روز که زندگی را برای توسعه‌دهندگان وب آسان‌تر می‌کند)، با مشکل ایجاد تغییرات در سایت در زمانی که تعداد صفحات زیاد است، مواجه می‌شویم.

برای اینکه مجبور نباشیم قسمت‌های یکسان سایت را در هر یک از فایل‌های صفحه تغییر دهیم، می‌توانیم از دستورالعمل‌های راحت PHP استفاده کنیم که به ما امکان می‌دهد فایل‌هایی را با کد لازم در همه صفحات تنها با یک خط کد قرار دهیم. سپس با تغییر محتوای فایل درج شده، کد تمامی صفحات سایت را تغییر می دهیم. راحت است مهم نیست چگونه به آن نگاه کنید.

حالا بیایید روش های اتصال فایل ها را با جزئیات بیشتر بررسی کنیم:

استفاده از شامل و نیازمند

شما نمی توانید با تمام تمایل خود تفاوت اساسی بین این دو دستورالعمل پیدا کنید، اما تفاوت های ظریف وجود دارد:

اگر خطایی در حین اجرای دستور require رخ دهد، تجزیه کننده یک پاسخ خطای مرگبار دریافت می کند و اجرای کد صفحه متوقف می شود، در حالی که include فقط یک اخطار صادر می کند و فایل به کار خود ادامه می دهد (فایل به سادگی انجام نمی شود. گنجانده شود).

برای درک بهتر موضوع یک مثال ساده می زنیم.

ما سایت کوچکی داریم که در آن سرصفحه و پاورقی در همه صفحات یکسان است، اما بدنه سند تغییر می کند.

فایل های header.php و footer.php را ایجاد می کنیم که در آن کدهایی را قرار می دهیم که در تمام صفحات یکسان خواهد بود و در فایل های index.php و newpage.php قسمت های ثابت را به هم وصل می کنیم. در نتیجه، دریافت می کنیم:

محتوای header.php

< header> < nav> < a href= "newpage1.php" title= "آیتم منو" >آیتم منو < a href= "newpage2.php" title= "آیتم منو" >آیتم منو < a href= "newpage3.php" title= "آیتم منو" >آیتم منو

محتوای footer.php

< footer> < p>ساخته شده توسط ما

محتوای سایر صفحات سایت

مینی سایت

اطلاعات مفید زیادی

در نتیجه بارگذاری صفحه ما، تصویر زیر را دریافت می کنیم:

همانطور که می بینیم، همه چیز عالی کار می کند.

لطفاً توجه داشته باشید که ما مثال را روی آن اجرا کردیم سرور محلیدنور، چون برای PHP کار می کندشما نیاز به یک سرور با پشتیبانی آن دارید. اگر یک سایت را در یک پوشه ساده در رایانه شخصی ایجاد کنید، هیچ چیز کار نخواهد کرد.

در مثال در نظر گرفته شده، ما از هدر require برای اتصال و از footer include استفاده کردیم. اینکه چه چیزی در سایت های خود استفاده کنید به شما بستگی دارد. همانطور که قبلا ذکر شد، تفاوت زیادی بین آنها وجود ندارد. مگر اینکه نیاز به عنوان یک دستورالعمل تا حدودی سختگیرانه در نظر گرفته شود.

در واقع خط به سادگی کل محتویات فایل را کپی می کند، مسیری که ما تعیین می کنیم، در داخل سندی که در آن قرار دارد.

استفاده از include _one و require _one

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

فرض کنید این اتفاق به دلیل این واقعیت است که چندین نفر در سایت کار می کردند و وقتی کدها با هم ترکیب شدند ، چنین اتفاقی رخ داد ...

برای از بین بردن احتمال چنین مشکلاتی، توسعه دهندگان اغلب از عبارت include _one و نیازمند _one استفاده می کنند. اصل عملکرد آنها دقیقاً مشابه موارد شامل با نیاز است، اما اگر فایل موجود در چنین دستورالعملی قبلاً به ما متصل شده باشد، پس دوباره وصل شویداتفاق نخواهد افتاد.

به معایب این روشمی توان آن را به این واقعیت نسبت داد که کندتر و از نظر محاسباتی گرانتر از نسخه های قبلی خود با نیاز است، زیرا لازم است همه فایل های موجود را به خاطر بسپارید و آنها را با هم مقایسه کنید تا از تکرار کد جلوگیری شود.

در یک یادداشت

  • برای راحت‌تر کردن تمایز بین فایل‌های صفحه سایت و فایل‌های تکه‌های آن‌ها که در آن‌ها قرار می‌دهیم، معمولاً فایل‌های موجود یک قسمت inc به نام اضافه می‌کنند. با توجه به این رویکرددر مثال ما، فایل header.inc.php را از فایل header.php و غیره دریافت می کنیم. این رویکرد می تواند درک ساختار سایت را در آینده بسیار ساده کند.
  • کد از فایلی که ما اضافه می کنیم محدوده خطی را که در آن گنجانده شده است به ارث می برد. Tobish فقط در داخل صفحه دارای یک دامنه جهانی و در داخل تابع دارای یک محدوده محلی خواهد بود.
  • ما می توانیم از include with require در هر جایی که بخواهیم استفاده کنیم. حتی داخل اسکریپت ها.

). هر تگ (بخش)باید یک زوج داشته باشد (/ بخش). پارامترهای مورد نیاز هستند نامو حلقه. نام چرخه (بخش) می تواند هر چیزی باشد، متشکل از حروف، اعداد و زیرخط. چرخه ها (بخش)نام‌های می‌توانند تودرتو باشند و نام‌های تودرتو (بخش) باید بین خودشان منحصربه‌فرد باشند. متغیر حلقه(معمولاً آرایه ای از مقادیر) تعداد تکرارهای حلقه را مشخص می کند. هنگام چاپ متغیرها در داخل یک بخش، نام بخش باید در کنار نام متغیر در داخل پرانتز ظاهر شود. (بخش دیگر)اگر پارامتر اجرا شود حلقهحاوی هیچ ارزشی نیست

نام مشخصه نوعی از اجباری پیش فرض شرح
نام رشته آره n/a نام بخش
حلقه مختلط آره n/a مقداری که تعداد تکرارهای حلقه را مشخص می کند.
شروع کنید عدد صحیح نه 0 شاخص موقعیتی که حلقه از آن شروع می شود. اگر مقدار منفی باشد، موقعیت شروع از انتهای آرایه محاسبه می شود. به عنوان مثال، اگر متغیر حلقه دارای 7 عنصر باشد و مقدار مشخصه start -2 باشد، شاخص شروع 5 خواهد بود. مقادیر نامعتبر (مقادیر خارج از آرایه) به طور خودکار به نزدیکترین مقدار معتبر کوتاه می شوند.
گام عدد صحیح نه 1 مقدار مرحله ای که برای تکرار در آرایه استفاده می شود. به عنوان مثال step=2 مشخص می کند که آرایه را با عناصر 0،2،4 پیمایش کنیم... اگر گام منفی باشد، آرایه در جهت مخالف پیمایش می شود.
حداکثر عدد صحیح نه 1 حداکثر تعداد تکرارهای حلقه.
نشان می دهد بولی نه درست است، واقعی مشخص می کند که آیا این بخش نمایش داده شود یا خیر

توجه داشته باشید

از زمان Smarty 1.5.0، نحو متغیر ویژگی session از (%sectionname.varname%) به ($smarty.section.sectionname.varname) تغییر کرده است. نحو قدیمی هنوز پشتیبانی می شود، اما شما فقط نمونه هایی از نحو جدید را خواهید دید.

index برای نمایش شاخص فعلی آرایه استفاده می‌شود که از صفر شروع می‌شود (یا مشخصه start اگر یکی مشخص شده بود) و یک افزایش می‌یابد (یا مقدار مشخصه step اگر مشخص شده بود).

تبصره فنی

اگر ویژگی های step و start مشخص نشده باشند، ایندکس همان ویژگی بخش تکرار است، با این تفاوت که به جای 1 از 0 شروع می شود.

تکرار برای نمایش تعداد تکرار فعلی حلقه استفاده می شود.

توجه داشته باشید

این مقدار بر خلاف ویژگی index مستقل از ویژگی های start، step و max است. همچنین، تکرارها از یک شروع می‌شوند، نه مانند شاخص‌ها از صفر. rownum مترادف خاصیت iteration است، آنها به همین ترتیب کار می کنند.

مثال 7.38. تکرار ویژگی (بخش).

assign("custid",$id); ?> (نام بخش=cu loop=$custid start=5 step=2) iteration=($smarty.section.cu.iteration) index=($smarty.section.cu.index) id=($custid)
(/ بخش)

نتیجه اجرای این مثال:

Iteration=1 index=5 id=3005
iteration=2 index=7 id=3007
iteration=3 index=9 id=3009
iteration=4 index=11 id=3011
iteration=5 index=13 id=3013
iteration=6 index=15 id=3015

این مثال از ویژگی iteration برای نمایش هدر جدول در هر پنج خط استفاده می کند (از (if) با یک عملگر mod - modulo استفاده می کند.

(نام بخش=co loop=$contacts) (اگر $smarty.section.co.iteration % 5 == 1) (/اگر) (/ بخش)
نام>صفحه اصلیسلولپست الکترونیک
چشم انداز ($contacts.name) ($contacts.home) ($contacts.cell) ($contacts.email)


مقاله ای که عنصر بخش HTML را از دسته بندی در نظر می گیرد.

هدف عنصر بخش

عنصر بخش برای ایجاد بخشی در یک سند استفاده می شود که برخی از محتوای موضوعی را با هم گروه بندی می کند. برای هر بخش در سند، عنوان (موضوع) آن باید مشخص شود. این معمولا با سرفصل ها (عناصر h1 - h6) انجام می شود.

عنوان بخش

محتوای بخش ...

عناصر بخش معمولاً در موارد زیر استفاده می شوند:

  • برای علامت گذاری بخش ها در یک بخش. به عنوان مثال، برای علامت گذاری فصول در یک مقاله، برگه ها در کادر محاوره ای، بخش هایی در پایان نامه و غیره.
  • برای گروه بندی چندین بخش در یک گروه موضوعی. مثلا گروه بندی کردن آخرین خبرهادر سایت، نظرات در مورد مقاله و غیره

بنابراین، عنصر بخش فقط در صورتی باید برای برخی از محتواها استفاده شود که عنوان داشته باشد و بخشی از چیز دیگری باشد.

اعمال عنصر بخش

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

عنوان مقاله

نظرات

عنوان نظر

متن نظر...

عنوان نظر

متن نظر...

عنوان مقاله نظرات عنوان نظر عنوان نظر

به عنوان مثال، استفاده از عناصر بخش را برای ایجاد بخش ها در یک عنصر مقاله در نظر بگیرید:

نام کتاب

فصل اول

فصل دوم

فصل سوم

پیوست A

پیوست B

مثال بالا ساختار زیر را دارد (طرح کلی):

عنوان کتاب فصل اول فصل دوم فصل سوم ضمیمه الف پیوست ب

محدودیت ها هنگام استفاده از عنصر بخش

عنصر بخش در HTML 5 یک عنصر عمومی برای گروه بندی محتوا نیست. نباید برای بسته بندی هر محتوایی که دوست دارید استفاده شود. هدف اصلی آن افزودن معناشناسی به سند و ایجاد ساختار آن (طرح کلی) است.

زمانی که نویسنده نیاز دارد محتوا را فقط برای استایل دادن به آن یا کار با آن در جاوا اسکریپت گروه بندی کند، بهترین کار استفاده از عنصر div است. عنصر div بر خلاف عنصر بخش، معنایی را به سند اضافه نمی کند و در ایجاد ساختار آن (طرح کلی) شرکت نمی کند.

تفاوت بین عناصر بخش و مقاله

عناصر بخش و مقاله، در حالی که به ظاهر بسیار شبیه به هم هستند، معانی معنایی متفاوتی دارند. عنصر مقاله برای گروه بندی مطالبی است که کامل، مستقل و جدا از بقیه محتوای صفحه در نظر گرفته شوند. و عنصر بخش معنای معنایی متفاوتی دارد، برای گروه بندی محتوا در نظر گرفته شده است بخشی جدایی ناپذیریک چیز دیگر.

اما چگونه یک نویسنده می داند که برخی از محتوای یک صفحه چیست؟ بیایید با استفاده از یک نمونه مقاله به این موضوع نگاه کنیم. یک قطعه بخشی از یک مقاله است و بنابراین، عنصر بخش باید برای گروه بندی محتوای آن استفاده شود. اما همان قطعه، که قبلاً به عنوان تفسیر باقی مانده است، چیزی کامل و کامل خواهد بود. بنابراین در این زمینه می توان از عنصر مقاله برای گروه بندی آن استفاده کرد. اما البته می توان برعکس آن را نیز استدلال کرد. بنابراین، در بیشتر موارد از کدام عنصر برای گروه بندی محتوا استفاده کنید، به نظر ذهنی شما به عنوان نویسنده بستگی دارد. اما مهمترین چیز در این رویکرد حفظ موقعیت انتخابی است. بنابراین، هر چه نویسنده در ایجاد ساختار سازگارتر باشد، حس بیشتری در آن خواهد داشت.