Съдържание на документа

1. функция config_load

Синтаксис:
(config_load file="име_на_файл")

Тази функция се използва за зареждане в шаблона на променливи от конфигурационни файлове. В допълнение към името на файла, който се зарежда, тази функция може да има още няколко допълнителни опции. Например параметърът section, който указва името на секцията, която да се зареди. | Повече ▼ подробна информациятези и други опции могат да бъдат намерени в документацията на Smarty.

Пример:
(config_load file="task.conf")

2. Функция за заснемане

Синтаксис:

(capture name="block_name"
присвояване="име_на_променлива") ...
(/улавяне)

Тази функция е предназначена да събира изхода на шаблона в променлива, вместо да го показва на екрана.

Всичко между (capture name="име на променлива") и (/capture) ще бъде записано в променлива с име на променлива. Съдържанието, заснето по този начин, може да се използва в шаблон с помощта на специалната променлива $smarty.capture.varname, където varname е стойността, предадена на атрибута name на функцията за улавяне. Ако не е дадено име на променлива, ще се използва по подразбиране.

Вторият параметър assign указва името на променливата, към която ще бъде присвоена уловената изходна стойност. Този параметър, подобно на името, не е задължителен.

3. раздел функция

Синтаксис:

(име на раздел = "име_на_раздел"
цикъл = "променлива_за_изчисляване_на_броя_итерации"
[,start="начална_позиция_индекс"]
[, step="стъпка"] [,max="max_iterations"]
[,show="show_section"] )...
(/ раздел)

Секцията е цикъл за преминаване през елементите на масив. Необходимите параметри са име, което указва името на секцията, и цикъл, който е променлива, която определя броя на повторенията на цикъла.

Обикновено цикълът е променлива от масив и броят на итерациите на дадена секция е равен на броя на елементите в този масив. За да покажете променлива в цикъл, трябва да посочите името на секцията в квадратни скоби след името на променливата.

(име на раздел=художествен цикъл=$заглавие)

Заглавие: ($title)

(/ раздел)

Пример 15.8. Цикъл за итериране на елементи от масив

4. функция foreach

Синтаксис:

(foreach from="име_на_масив"
елемент="текущо_име_на_артикул")
... (/за всеки)

Освен това можете да използвате допълнителни атрибути key - името на ключа за текущия елемент от масива и name - името на цикъла, с които можете да получите достъп до неговите свойства. Атрибутите from и item са задължителни.

циклите foreach са алтернатива на циклите секции. Функцията foreach е много подобна на цикъла foreach в PHP.
(foreach from=$articles item=art)
Заглавие: ($art)

(/за всеки)

Пример 15.9. foreach цикъл

foreach циклите имат свои собствени свойства. Те могат да бъдат достъпни по следния начин: ($smarty.foreach.foreachname.varname), където foreachname е името на цикъла, дадено от неговия параметър name, а varname е името на свойството.

5. If, elseif, else оператор

Синтаксис:

(if израз) action_block
(друго ако израз1) блок_действие1
(друго) action_block2
(/ако)

Действието на оператора е почти подобно на оператора if...elseif...else на езика PHP.

Следните оператори за сравнение могат да се използват в изрази: eq, ne, neq, gt, lt, lte, le, gte, ge, is even, is odd, is not even, is not odd, not, mod, div by, even по, нечетно по, ==, !=, >,<, <=, >=. Всеки от тях трябва да бъде отделен от околните стойности с интервали. Скобите могат да се използват в изрази и могат да се извикват PHP функции.

(ако $name eq "Вася")
Добре дошъл Вася.
(elseif $name eq "Петя")
Добре дошла, Петя.
(друго)
Добре дошли. А ти кой си?
(/ако)

Пример 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>Произведено от нас

Съдържание на други страници от сайта

Минисайт

Много полезна информация

В резултат на зареждането на нашата страница получаваме следната картина:

Както виждаме, всичко работи чудесно.

Моля, обърнете внимание, че стартирахме примера локален сървър Denwer, защото за PHP работаимате нужда от сървър с неговата поддръжка. Ако създадете сайт в проста папка на компютър, нищо няма да работи.

В разглеждания пример използвахме заглавието изискване за свързване и долния колонтитул за включване. Какво да използвате на вашите сайтове зависи от вас. Както вече споменахме, няма голяма разлика между тях. Освен ако изискването се счита за малко по-строга инструкция.

Всъщност линията просто копира цялото съдържание на файла, пътя до който посочваме, вътре в документа, в който се намира.

Използване на include _once и require _once

При работа на сайта може да възникнат проблеми поради факта, че един и същ код е включен в един файл повече от веднъж.

Да предположим, че това се е случило поради факта, че няколко души са работили на сайта и когато кодовете са комбинирани, тогава се появи такъв инцидент ...

За да премахнат възможността за подобни проблеми, разработчиците често използват операторите include _once и require _once. Техният принцип на работа е абсолютно същият като този на включване с изискване, но ако файлът в такава инструкция вече е свързан с нашата, тогава свържете се отновоняма да стане.

Към недостатъците този методможе да се отдаде на факта, че е по-бавен и по-скъп откъм изчисления, отколкото неговите предшественици включват с изискване, тъй като става необходимо да се запомнят всички включени файлове и да се сравнят, за да се избегне дублиране на код.

На бележка

  • За по-удобно разграничаване между файловете на страницата на сайта и файловете на техните фрагменти, които включваме в тях, обикновено включените файлове добавят част inc към името. Имайки в предвид този подходв нашия пример ще получим файла header.inc.php от файла header.php и т.н. Този подход може значително да опрости разбирането на структурата на сайта в бъдеще.
  • Кодът от файла, който включваме, наследява обхвата на реда, в който е включен. Tobish само вътре в страницата ще има глобален обхват, а вътре във функцията ще има локален обхват.
  • Можем да използваме включване с изискване навсякъде, където пожелаем. Дори вътре в скриптове.

). Всеки етикет (раздел)трябва да има двойка (/ раздел). Необходимите параметри са имеи цикъл. Името на цикъла (раздел) може да бъде каквото и да е, състоящо се от букви, цифри и долна черта. Цикли (раздел)могат да бъдат вложени и имената на вложените (секции) трябва да са уникални помежду си. Променлива цикъл(обикновено масив от стойности) определя броя на повторенията на цикъла. Когато отпечатвате променливи в раздел, името на раздела трябва да се появи до името на променливата в квадратни скоби. (друга секция)се изпълнява, ако параметърът цикълне съдържа стойности.

Име на атрибут Тип Задължителен По подразбиране Описание
име низ да няма Име на раздел
цикъл смесен да няма Стойност, която определя броя повторения на цикъла.
започнете цяло число Не 0 Индекс на позицията, от която ще започне цикълът. Ако стойността е отрицателна, тогава началната позиция се изчислява от края на масива. Например, ако променливата на цикъла има 7 елемента и стойността на началния атрибут е -2, тогава началният индекс ще бъде 5. Невалидните стойности (стойности извън масива) автоматично се съкращават до най-близката валидна стойност.
стъпка цяло число Не 1 Стойността на стъпката, която се използва за итерация през масива. Например стъпка=2 указва да се премине през масива по елементи 0,2,4... Ако стъпката е отрицателна, тогава масивът ще бъде обходен в обратна посока.
макс цяло число Не 1 Максималният брой повторения на цикъла.
шоу булево Не вярно Указва дали този раздел да се показва или не

Забележка

След Smarty 1.5.0 синтаксисът на променливата на свойството на сесията е променен от (%sectionname.varname%) на ($smarty.section.sectionname.varname). Старият синтаксис все още се поддържа, но ще видите само примери за новия синтаксис.

index се използва за показване на текущия индекс на масива, като се започне от нула (или началния атрибут, ако е зададен такъв) и се увеличава с единица (или стойността на атрибута стъпка, ако е зададен такъв).

Техническа бележка

Ако атрибутите стъпка и начало не са посочени, тогава индексът е същият като атрибута на секцията за итерация, с изключение на това, че започва от 0 вместо от 1.

iteration се използва за показване на текущия номер на итерация на цикъла.

Забележка

Тази стойност не зависи от свойствата start, step и max, за разлика от свойството index. Също така итерациите започват от единица, а не от нула, както правят индексите. rownum е синоним на свойството итерация, те работят по същия начин.

Пример 7.38. итерация на свойство (секция).

присвояване ("custid", $id); ?> (име на раздел=cu loop=$custid start=5 стъпка=2) iteration=($smarty.section.cu.iteration) index=($smarty.section.cu.index) id=($custid)
(/ раздел)

Резултатът от изпълнението на този пример:

Итерация=1 индекс=5 id=3005
итерация=2 индекс=7 id=3007
итерация=3 индекс=9 id=3009
итерация=4 индекс=11 id=3011
итерация=5 индекс=13 id=3013
итерация=6 индекс=15 id=3015

Този пример използва свойството итерация за показване на заглавката на таблицата на всеки пет реда (използва (if) с mod оператор - modulo).

(име на раздел=co loop=$contacts) (ако $smarty.section.co.iteration % 5 == 1) (/ако) (/ раздел)
Име>У домаклеткаелектронна поща
изглед ($contacts.name) ($contacts.home) ($contacts.cell) ($contacts.email)


Статия, която разглежда HTML елемента раздел от категорията разделяне.

Предназначение на елемента на сечението

Елементът section се използва за създаване на раздел в документ, който групира заедно някакво тематично съдържание. За всеки раздел в документа трябва да се посочи неговото заглавие (тема). Това обикновено се прави със заглавия (h1 - h6 елементи).

Заглавие на раздела

Съдържание на раздела...

елементите на секциите обикновено се използват в следните случаи:

  • за маркиране на секции в рамките на секция. Например, за да маркирате глави в статия, раздели в диалогов прозорец, раздели в дисертация и т.н.
  • групиране на няколко раздела в една тематична група. Например да групирате последни новинив сайта, коментари към статията и др.

По този начин елементът section трябва да се използва само за някакво съдържание, ако има заглавие и е част от нещо друго.

Прилагане на елемента раздел

Например, помислете за кодов фрагмент на страница, съдържащ статия с коментари. Всеки от коментарите, оставени от потребителя на страницата, съдържа някакво завършено съдържание и следователно може да се счита за елемент на статия. Но в същото време всички коментари представляват някаква тематична група и следователно могат да бъдат поставени в елемента раздел, т.е. този елемент ще групира всички тези коментари на страницата заедно.

Заглавие на статията

Коментари

Заглавие на коментара

Текст на коментара...

Заглавие на коментара

Текст на коментара...

Заглавие на статията Коментари Заглавие на коментара Заглавие на коментара

Например, обмислете използването на елементи на секции за създаване на секции в елемент на статия:

Име на книгата

Първа глава

Втора глава

Трета глава

Приложение А

Приложение Б

Горният пример ще има следната структура (очертание):

Заглавие на книгата Първа глава Втора глава Трета глава Приложение A Приложение B

Ограничения при използване на елемента section

Елементът section в HTML 5 не е общ елемент за групиране на съдържание; не трябва да се използва за обвиване на съдържание, което харесвате. Основната му цел е да добави семантика към документа и да създаде неговата структура (контур).

Когато автор трябва да групира съдържание само за да го стилизира или да работи с него в JavaScript, най-доброто нещо, което трябва да направите, е да използвате елемента div. Елементът div, за разлика от елемента section, не добавя семантика към документа и не участва в създаването на неговата структура (контур).

Разлика между елементите на секция и статия

Елементите раздел и статия, въпреки че изглеждат много сходни, имат различни семантични значения. Елементът article е за групиране на съдържание, което е пълно, самостоятелно и може да се счита за отделно от останалото съдържание на страницата. А елементът раздел има различно семантично значение, той е предназначен за групиране на съдържание, което е интегрална частнещо друго.

Но как един автор знае какво е съдържанието на дадена страница? Нека разгледаме това, използвайки примерен фрагмент от статия. Фрагментът е част от статия и следователно елементът section трябва да се използва за групиране на съдържанието му. Но същият фрагмент, вече оставен като коментар, ще бъде нещо цяло, завършено. Следователно в този контекст елементът article може да се използва за групирането му. Но, разбира се, може да се твърди и обратното. Следователно какъв елемент да използвате за групиране на съдържание в повечето случаи зависи от вашето субективно мнение като автор. Но най-важното в този подход е да запазите избраната позиция. Следователно, колкото по-последователен е авторът в създаването на структурата, толкова повече смисъл ще може да вложи в нея.