Մանրամասները * .TPL ֆայլերի DLE ձեւանմուշը նրանց նպատակը: Օգտագործելով TPL ֆայլերը TPL PHP- ի ձեւանմուշները, թե ինչպես օգտագործել

Անմիջապես կասեմ, որ այս թեմայի մասին արդեն գրել եմ այստեղ. Այնուամենայնիվ, ոչ բոլորն էին հասկանում այս նյութը, եւ ես որոշեցի վերադառնալ նրա մոտ եւ ամեն ինչ այլ կերպ գրել: Գաղտնիք չէ, որ ցանկացած լուրջ շարժիչ երբեք չի խառնվի ձեր կոդում: HTML մի քանազոր PHP., Բայց HTML մի քանազոր PHP. Կոդերը շատ սերտորեն փոխկապակցված են, այնպես որ, որպեսզի չխախտվեն «լավ տոնայնության» կանոնները, հորինվել են tPL ֆայլեր, Այս ֆայլերը պահվում են HTML կոդ, կաղապարի տարրերովովքեր փոխարինվում են PHP կոդ, Եկեք ավելի մանրամասն նայենք Օգտագործելով TPL ֆայլերը Օրինակով:

Մենք ձեզ հետ վերցնում ենք առավել տարրական օրինակը `օգտագործողի վահանակը, որտեղ կա նրա ավատարը եւ անունով ողջույնը: Առաջին հերթին ստեղծեք tPL ֆայլ:եւ թող զանգի userpanel.tpl, Ես հիշեցնում եմ, որ սա ընդամենը մի կտոր է HTML կոդ, կաղապարի տարրերով:

Բարեւ,% Անուն%!




Ոչինչ բարդ չէ, դա պարզապես սովորական է HTML կոդ, Միայն որոշակի արժեքների փոխարեն արժե Element_sablon%.

Հիմա մենք դա պարզելու ենք PHP վերամշակում, Ամեն ինչ ավելին կլինի, քան վերբեռնեք, բայց, ցավոք, ցանկացած ձեւով: Հիմնական բանը `հասկանալ աշխատանքի սկզբունքը: Այսպես PHP կոդ Մշակման համար ստեղծվել է tPL ֆայլ::

/ * Այս հատկությունը, չնայած օգտագործում է բուֆերներ, բայց տարրական է էությունը. Վերադարձեք ֆայլի բովանդակությունը * /
Գործառույթ GetTemplate ($ name) (
Ob_start (); // Սկսեք ելքը խնայել բուֆերին
Ներառել ($ name. "TPL"); // ֆայլի պարունակությունը ուղարկեք բուֆերային
$ Տեքստ \u003d ob_get_clean (); // մաքրել բուֆերը եւ վերադարձնել բովանդակությունը
Վերադարձնել $ տեքստը. // տեքստի վերադարձը ֆայլից
}
$ Name \u003d "nikolai"; // հեռացված հիմքից
$ avatar \u003d "Անձնանշաններ / user_15.jpg"; // հեռացված հիմքից
/ * Սկսում է փոխարինել իրական տվյալների ձեւանմուշի տարրերը * /
$ Userpanel \u003d str_replace (
Զանգված (
"% Անուն%",
"% avatar%"
),
Զանգված (
$ Name
$ avatar
),
Gettemplate ("userpanel")
);
Echo $ userpanel; // Display ուցադրել վերջնական արդյունքը
?>

Սա ամենապարզ տարբերակն է: Ամեն ինչ մեկնաբանել է, այնպես որ այս օրինակի համար հարցեր չպետք է լինեն: Եվ, փաստորեն, ցանկացած էջ բաղկացած է նման բլոկներից: Ձեր խնդիրն է ճիշտ բլոկներ (գործառույթ) gettemplate ()) Փոխարինեք անհրաժեշտ տվյալները (STR_PEPLACE () գործառույթը եւ ստացված տվյալները, օրինակ, բազայից), ապա պարզապես բոլոր բլոկները միացրեք որպես կանոնավոր գծեր եւ ելք բոլոր էջը:

Իհարկե առանց Աքլոր Այստեղ շատ խնդրահարույց կլինի: Դուք խթանում եք նման մի շարք պայմաններ (շատ էջեր), որոնք արագ շփոթում են: Բայց օգտագործման սկզբունքը tPL ֆայլերՀուսով եմ, հասկացաք: Հետագայում մտածեք, թե ինչպես փաթաթել ԱքլորՈրպեսզի ամեն ինչ հնարավորինս պարզ լինի ծածկագիրը եւ ապագայում դրա պահպանման առումով:

Ստեղծելուց հետո Տեղեկատվություն- Ֆիլ, սկզբունքորեն, թեման արդեն սահմանված է: Սա նշանակում է, որ կարող եք գնալ դաշտային կառավարման բաժին: http://mysite.ru/admin/build/themes. Եւ ներառեք ձեր թեման այնտեղ: Բնականաբար, այն միացնելուց հետո ոչ մի ձեւավորում չես տեսնի. Էջը ձեռք կբերի «Սեւը սպիտակ» ոճը `սպիտակ ֆոնի վրա սեւ տեքստի վրա:

Այնուամենայնիվ, ես ուզում եմ նշել, որ չնայած այն հանգամանքին, որ մեր թեմայի մեջ ֆայլեր չկան mytheme.info. Չի ստում, կայքը կաշխատի այնպես, ինչպես նախկինում `բոլոր բովանդակությունը հանելու համար, ավելացնել արգելափակումներ ( http://mysite.ru/admin/build/block) եւ այլն Դա բացատրվում է այն փաստով, որ ներառված էր Drupal- ի միջուկը Պարտադիր մոդուլներՈրը նույնիսկ ձեր թեմայի ցանկացած ֆայլի ամբողջական բացակայությամբ (բացառությամբ տեղեկատվական ֆայլի) թույլ է տալիս շարունակել աշխատել Drupal- ի հետ:

Սկզբունքորեն, ձեւանմուշի բոլոր ստեղծումը իջնում \u200b\u200bէ կաղապարի ֆայլերը համընկնելու համար (դրանք ընդլայնում ունեն .tpl.php.) մեր ստանդարտ մոդուլները CMS..

TPL- ի ամենակարեւոր ֆայլը (TPL- ը նվազում է Կաղապարել:, Կաղապար) page.tpl.php., Նա պատասխանատու է յուրաքանչյուր կայքի էջի կառուցման համար: Եկեք գործ ունենանք, թե ինչ է ձեւանմուշային ֆայլը.

  • hTML կոդ
  • pHP կոդ
  • javaScript կոդ (ոչ անհրաժեշտ)

Յուրաքանչյուր ձեւանմուշ ֆայլում Drupal- ը կայքի տվյալները փոխանցում է ստանդարտ փոփոխականների տեսքով: Յուրաքանչյուր ձեւանմուշ ֆայլի համար կա 2 տեսակի փոփոխականներ.

  • Փոփոխականներ, որոնք փոխանցվում են միայն այս ֆայլին:
  • Փոփոխականներ, որոնք փոխանցվում են բոլոր ֆայլերին

Ահա բոլոր փոփոխականների ցուցակը page.tpl.php.:

Ընդհանուր փոփոխականներ (բոլոր ֆայլերի համար).

  • $ Base_path - Հիմնական ուղին, որտեղ տեղադրվել է Drupal
  • $ CSS: - CSS ֆայլերի զանգված, որոնք կապված են ընթացիկ ձեւանմուշային ֆայլին
  • Գրացուցակ. - Ուղի դեպի այն թղթապանակը, որտեղ տեղադրված է թեման
  • $ is_front - Վերադարձնում է ճշմարտության արժեքը, եթե հիմնական էջում եք
  • $ Logged_in. - Վերադարձնում է ճշմարտության արժեքը, եթե մուտք եք գործել
  • $ is_admin: - Վերադարձնում է ճշմարտության արժեքը, եթե մուտք ունեք ադմինիստրատոր

MetAtata էջեր

  • $ Լեզու. - (օբյեկտ) Ներկայիս լեզունորը ցուցադրվում է կայքում
  • $ Լեզու -\u003e լեզու - պարունակում է իր տեքստի ներկայացուցչությունը
  • $ Language-\u003e Dir - Պարունակում է լեզվի ուղղությունը: Սա կամ կլինի «LTR» (ձախից աջ) կամ «RTL» (աջից ձախ)
  • $ Head_title. - Էջի վերնագրի փոփոխված տարբերակը `պիտակների օգտագործման համար
  • $ Գլուխ: - տեղադրված է պիտակների միջեւ , Պարունակում է Meta Tags, Հիմնաբառեր Եվ այլն
  • $ ոճեր: - Օգտագործվում է բոլորը ներբեռնելու համար cSS.- Ներկայիս էջը
  • $ գրություններ: - Օգտագործվում է բոլորը ներբեռնելու համար javaScript "OV ընթացիկ էջին
  • $ Body_Classes - դասերի հավաքածու cSS. Թագայի համար , Պարունակում է տեղեկատվություն կայքում սյուների ընթացիկ դասավորության, դրանց քանակի, ներկայիս URL "E- ի եւ այլն:

Տեղեկատվություն կայքի մասին

  • $ Front_page. - կայքի հիմնական էջի հասցեն: Ավելի լավ է օգտագործել այս փոփոխականը `հղման համար Հիմնական էջորովհետեւ Այն ներառում է դոմենի լեզու եւ նախածանց
  • $ logo - Ուղի դեպի կայքի պատկերանշանը, եթե կայքում ներառված է
  • $ Site_name. - Կայքի անվանումը: Այն կարող է դատարկ լինել, եթե այն անջատեք տեղեկատվական ֆայլի առանձնահատկություններում: Կազմաձեւված MySite.Ru/admin/Settings/site-information
  • $ site_slogan. - կարգախոս կայք: Այն կարող է դատարկ լինել, եթե այն անջատեք տեղեկատվական ֆայլի առանձնահատկություններում: Կազմաձեւված MySite.Ru/admin/Settings/site-information
  • $ Առաքելություն - Առաքելության կայք: Այն կարող է դատարկ լինել, եթե անջատեք այն տեղեկատվական ֆայլի առանձնահատկություններում: Կազմաձեւված MySite.Ru/admin/Settings/site-information

Նավարկություն

  • $ search_box - Պարունակում է HTML կոդ, որը ցուցադրում է որոնման լարը: Կարող է դատարկ լինել, եթե այն անջատեք տեղեկատվական ֆայլում
  • $ fryan_links.
  • $ Smallary_links. - կայքի համար նավիգացիոն հղումներ պարունակող զանգված, եթե դրանք թույլատրվում են տեղեկատվական ֆայլի առանձնահատկություններում

Լռելյայն էջի բովանդակություն

  • $ Մնացել է: - Տարածաշրջան: Պարունակում է HTML կոդ ձախ սյունակի համար: Եթե \u200b\u200bտեղեկատվական ֆայլում ցանկացած տարածաշրջան սահմանելու դեպքում այն \u200b\u200bանհետանում է
  • $ Breadcrumb. - "Հացաթխում«Որովհետեւ ընթացիկ էջ
  • $ վերնագիրը - Էջի անվանումը
  • $ Օգնություն. - դինամիկ խորհուրդներ, որոնք հիմնականում ցուցադրվում են ադմինիստրատորում
  • $ Հաղորդագրություններ: - Տեղում ցուցադրում է սխալներ եւ նախազգուշացումներ
  • $ Ներդիրներ: - Ներկայիս էջը իր ենթածրագրերով միացնող հղումները (ներդիրները) (օրինակ, հոդվածի համար `դրա խմբագրման էջով)
  • $ Պարունակություն - Բովանդակության ընթացիկ էջ
  • $ ճիշտ - Տարածաշրջան: Պարունակում է HTML կոդ, ճիշտ սյունակի համար: Եթե \u200b\u200bտեղեկատվական ֆայլում ցանկացած տարածաշրջան սահմանելու դեպքում այն \u200b\u200bանհետանում է

Ստորին տարածք / փակման տվյալներ

  • $ Feed_icon: - լարային բոլոր սրբապատկերներով հետադարձ կապ Ընթացիկ էջի համար
  • $ Footer_message. - հաղորդագրություն էջի ներքեւում: Կազմաձեւված MySite.Ru/admin/Settings/site-information
  • $ Ներքնակ: - Տարածաշրջան: Պարունակում է HTML կոդ էջի ներքեւի մասում: Եթե \u200b\u200bտեղեկատվական ֆայլում ցանկացած տարածաշրջան սահմանելու դեպքում այն \u200b\u200bանհետանում է
  • $ փակումը: - Փակիչ պիտակը էջը փոխող բոլոր մոդուլների համար: Այս փոփոխականը պետք է ցուցադրվի բոլոր դինամիկ բովանդակությունից հետո: Լավագույնը պիտակի մարմինը փակելուց առաջ

Բոլորը նշված են այստեղ Ստանդարտ փոփոխականներ, Բայց դուք կարող եք այստեղ ավելացնել ձեր փոփոխականները կամ որպես մարզեր Տեղեկատվություն- Ֆայլի միջոցով որեւէ այլ դերում tHEPPLATE.PHP: (նրա մասին մի փոքր ավելի ուշ):

Հիմա ես ցույց կտամ, թե որ ծածկագիրը պետք է լինի page.tpl.php. Եվ ինչ կոդով է այն մեկնաբանվում զննարկիչների կողմից: Նախքան մի կտոր կոդ page.tpl.php.:

Առաջին տողում կա ստուգում, ներկայիս էջում կա վերնագիր: Եթե \u200b\u200bդա այդպես չէ, ապա կարգաբերումը պարզապես կարոտելու է այս ծածկագիրը եւ չի հասնի նրա վերջը: Եթե \u200b\u200bվերնագիր կա, էջի ծածկագիրը ավելացվում է HTML- ին

, Դրանից հետո տպագրվելու է էջի վերնագիրը, եւ այս ամենը կփակվի ըստ պիտակի

, Եթե \u200b\u200bզննարկիչում նայեք այս էջի կոդին, ապա դա նման կլինի.

Դաս 4. Պահանջվող ֆայլեր `ձեւանմուշ ստեղծելու համար: Page.tpl.php.

Այսպիսով, տեղանքի գրեթե բոլոր փոփոխականներն են շրջվում: Դա արվում է այնպես, որ մենք կարողանանք ոճեր նշանակել բովանդակության համար, չգիտենք, թե ինչ է պատահում:

Այս կերպ նման է Ստանդարտ ֆայլ: page.tpl.php.Ով է գնում Drupal- ի հետ միասին: Փոխեք դասերի անվանումը, որոշ տեղերում վերադասավորեք փոփոխականները եւ տեսեք, թե ինչ է ստացվում: Անհրաժեշտ է «այտուցվել», թե ինչպես է այն աշխատում եւ ինչը բխում է որպես արդյունք:

"- // W3C // DTD XHTML 1.0 խիստ // en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-strict.dtd"> «http://www.w3.org/1999/xhtml» Xml: lang \u003d "Լեզուն?\u003e " lang \u003d. "Լեզուն?\u003e " Dir \u003d. "dIR?\u003e "> <?php print $head_title ; ?> "" >

Սիրելի բարեկամներ,

Մենք շարունակում ենք մի շարք օգտակար խորհուրդների հրապարակումը, որոնք հեշտացնում են սցենարի որոշ գործողությունների եւ առանձնահատկությունների պատկերացում: Վերջերս հարցերը հաճախ մեզ են գալիս `սցենարի փոփոխություն կատարելու խնդրանքով, որպեսզի կարողանաք օգտագործել տարբեր ձեւանմուշներ կայքի տարբեր բաժինների համար: Օրինակ, լուրերի հիմնական էջը պետք է ունենա մեկ դասավորության կառուցվածք, եւ, օրինակ, հետադարձ կապի էջը բոլորովին այլ է: Միեւնույն ժամանակ, մեզ դրդելով, որ հնարավոր է փոխել օրինախախտի նախշերը միայն կայքի լրատվական կարգերի համար: Բայց իրականում այս ամենը կարող է իրականացվել ստանդարտ միջոցներով, ինչը կընթանա այս փոքր հոդվածը:

Այսպիսով, առաջին բանը, որ մենք պետք է դիմենք սցենարի փաստաթղթերին, որը կարդում է, որ ձեւանմուշը main.tpl Աջակցում է հետեւյալ պիտակները.

Տեքստը, որը ցուցադրում է պիտակներով կցված տեքստը, եթե որոնվում է կայքի նշված հատվածը:


Նաեւ այս պիտակը հակառակն ունի

Տեքստը, որը ցուցադրում է պիտակներով կցված տեքստը, եթե դիտվում են ցանկացած բաժանում, բացի նշվածից


Հիմք ընդունեք առաջադրանքի օրինակը. Համոզվեք, որ կայքը օգտագործում է ձեւանմուշի մեկ ձեւավորում, եւ կայքի հետադարձ կապը օգտագործեց մյուսը: Դրա հիման վրա մենք պետք է ձեւանմուշ բացենք: main.tpl եւ նշեք հետեւյալը.

Այստեղ ձեւանմուշի ամբողջ տեքստը, որը կցուցադրվի հետադարձ կապ դիտելիս
Այստեղ ձեւանմուշի ամբողջ տեքստը, որը ցուցադրվելու է ամենուր, բացի հետադարձից


Բայց այն ունի մեկ մեծ մինուս, ձեր հիմնական ձեւանմուշային ֆայլը main.tpl Դա շատ մեծ կլինի, քանի որ Ըստ էության, կլինեն երկու տարբեր ձեւավորում, եւ այստեղ մենք կրկին դիմում ենք փաստաթղթերին եւ սցենարին եւ կսովորենք գեղեցիկ պիտակի գոյության մասին. (Ներառեք ֆայլ \u003d "my_block.tpl")որը կապում է նշված My_Block.tpl ֆայլը ձեւանմուշի մեջ:

Ելնելով վերը նշված բոլորի վրա, վերջնական իրականացումը հետեւյալն է.


Կաղապարի ֆայլում feedback_main.tpl Մենք պատրաստում ենք հետադարձ կապի ձեւավորում, եւ All_Main.tpl ֆայլում մենք պատրաստում ենք կայքի մնացած մասի դիզայնը: Դա իրականում ամեն ինչ հեշտ է եւ հեշտ է իրականացնել, պետք չէ սցենարի ցանկացած փոփոխություն արտադրել: Կարող եք տեղադրել նաեւ ցանկացած բաժնի ձեւավորում, կարող եք համատեղել մի քանի բաժիններ եւ այլն: Կարդացեք ավելին եւ ավելի ուշադիր, կարդացեք փաստաթղթերը սցենարի համար, ինքներդ ձեզ համար շեշտադրելու համար շատ օգտակար են:

Հարգանքներով Ձեր,


Տվյալների տրամաբանության տարանջատումը դրանց ցուցադրման տրամաբանությունից շատ կարեւոր բաղադրիչ է վեբ զարգացման համար:
Progroner անկացած ծրագրավորող, ով բարձրացավ մի փոքր ավելի բարձր, քան «Բարեւ աշխարհի» մակարդակից, սկսում է զգալ նման բաժնի անհրաժեշտությունը: Բայց ոչ բոլորն են գալիս ճիշտ եզրակացությունների եւ լուծումների:
Հետեւաբար, ես այստեղ կտամ ամենակարեւոր կանոնները.
1. Պետք է բաժանվի ծածկագիր եւ տվյալների ցուցադրման ծածկագիր:
2. Եզրակացություն պետք է սկսվի միայն այն բանից հետո, երբ բոլոր տվյալները պատրաստ լինեն դրան:
3. Արդյունքում, ցանկացած սցենար պետք է զբաղվի միայն տվյալների մշակմամբ: Դրանից հետո նա կարող է կամ ինչ-որ nttr- ի վերնագիր ուղարկել կամ ձեւանմուշ զանգահարել, այն տեղափոխվել է պատրաստված տվյալներ, կամ երկուսն էլ միասին:
4. Ինչ է, որ տեւում է տասներորդը: Ամենահեշտ եւ մատչելի `RNR ինքնին, այնպես որ օրինակները կբերվեն դրա վրա:

Սխալ պատկերացում
Ոչ, հավանաբար, համացանցում ծրագրավորմամբ թեման նույնքան ակնհայտ է, որքան անհասկանալի է, որքան կաղապարը: Յուրաքանչյուրը, վաղ թե ուշ, գալիս է կաղապարներ օգտագործելու անհրաժեշտության ավարտին: Բայց դա ինչ-ինչ պատճառներով է, որոշ պատճառներով, վայրի որոշ պատկերացումների եւ ֆանտազիայի միջոցով:

Ամենապարզ եւ ակնհայտ սխալ ընկալումն այն է, որ նորեկները կոչվում են առանձին «դիզայն» ֆայլում պատրաստված ձեւանմուշ, համօգտագործված HTML կայքի բոլոր էջերի համար: Եւ հանգստացնում է դրա վրա: Դինամիկ տեղեկատվություն, ոչ կոպիտ, հին լավը հետ կանչելու համար .-)
Փաստորեն, ձեւանմուշիչը հիմնականում զբաղվում է էջի էջերի փոփոխվող բովանդակության արդյունքով: Եվ «դիզայնի» եզրակացությունը փոքր խնդիր է:

Ֆանտազիաները հիմնական երկուսն են.
1. Կաղապարները անհրաժեշտ են «դիզայներ», որպեսզի նա կարողանա խմբագրել դրանք, առանց Հասկանալու PHP:
2. Հետեւաբար, ձեւանմուշները ծառայում են HTML- ից PHP- ն առանձնացնելու համար:

Փորձենք մտածել առաջին հայտարարության մասին: Ով է դիզայներ: Սա անձն է, ով աշխատում է Photoshop- ում: HTML նա ամենից հաճախ ընդհանրապես չգիտի: Եվ ձեւանմուշից վերեւ կա հատուկ շերտ կամ `առավել հաճախ ... ծրագրավորող ինքն է: Զվարճալի չէ, չէ:
Այժմ հետեւանք, HTML- ից PHP բաժանման մասին: Գերազանց Մեր առջեւ սուրբ նպատակը առանձնացնելն է: Հետեւաբար մենք գալիս ենք խելացի եւ գրում.
(Foreach Key \u003d CID կետ \u003d Con \u003d $ Կոնտակտներ)
($ Con. Անուն) - ($ con .nick)

(/ foreach)

Ավելի զվարճալի:
«Դիզայներ», որի համար ամեն ինչ կանգնած էր, երջանկությունից զերծ մնաց:

Տեսություն
Ստացվում է, որ մեր պատճառները, որոնց համար որոշեցինք օգտագործել ձեւանմուշներ, չարժի կոպեկ: Եվ հիմա ինչն է պետք, պարզվում է, որ ամենեւին, շաբոններ: Կարիքը: Բայց նախ պետք է պատասխանել հարցին. «Ինչու»: Ինչի համար Մեզ անհրաժեշտ են նախշեր: Եւ ստուգեք պատասխան պրակտիկան: Ես բազմիցս հարցրեցի այս հարցը: Բայց գրեթե ոչ ոք չի կարող պատասխանել դրան: Ինչու է պետք կաղապարներ: Ստացվում է, որ մարդիկ ինչ-որ բան են անում, չգիտեն ինչու:
Սա զվարճալի բան է:

Իրենց գործունեության ընթացքում, որպես վեբ ծրագրավորող, ես կազմեցի իմ երեք պատճառ, որոնց համար ձեւանմուշները անձամբ պետք է: Ըստ էության, դրանցից երկուսը կան: Եվ իջեք, ի վերջո, մեկից մեկը.

Մեկ ծածկագիր `մի քանի դիտում.

Հաճախ պատահում է, որ մեկ տեղեկատվության փոխարեն անհրաժեշտ է ցույց տալ մեկ այլ: Օրինակ, տվյալների բազայի հետ աշխատանքային ծածկագիրը տեքստի փոխարեն ստանում է սխալի հաղորդագրություն: Այս դեպքում, լրատվական էջի փոխարեն, դուք պետք է բոլորովին այլ կերպ դրսեւորեք `ներողություն խնդրելու եւ խնդրելու ավելի ուշ: Օգտագործելով կաղապարներ, դա արվում է տարրական:

Հաճախ մեկը եւ նույն տեղեկատվությունը պետք է ցուցադրվեն մի քանի տեսակների մեջ: Օրինակ, կանոնավոր էջ եւ տպագիր էջ: Տեղեկատվությունը նույնն է, դրա պատրաստման ծածկագիրը նույնն է, եւ ելքային ծածկագիրը տարբեր է: Դեպի այս իրավիճակի հետ, շատ արագորեն բաժանեք ձեր ծածկագիրը երկու մասի, որոնցից մեկը պատասխանատու է արդյունքի համար, իսկ երկրորդը չի պատասխանում: Մեկ այլ օրինակ. Ասենք, որ ուզում էինք տեղեկատվություն տրամադրել ոչ թե HTML- ի, այլ Ajax խնդրանքով, JSON ձեւաչափով: Եթե \u200b\u200bմենք օգտագործվել ենք ձեւանմուշ, ապա մենք մեր կոդով փոխվում ենք հենց մեկ տող - Զանգահարեք կաղապարի վրա `JSON_Encode () զանգահարելու համար: Եվ եթե մեր եզրակացությունը խառնվեց տվյալների ձեռքբերման կոդով, ապա Կոդը պետք է վերաշարադրեր ամբողջը:

Նմանատիպ իրավիճակում. Ասենք, մեր սցենարը երկու կայքում է: Գումարած մեզանից մի օրինակ տանը: Եվ տանը մենք գտանք մի մեծ սխալ: Extruded դա: Այժմ հարկավոր է թարմացնել կոդը կայքերում: Եվ այսպես, նա ճշմարտության պահն է. Եթե կաղապարներն օգտագործվել են ճիշտ, ապա մենք պարզապես լցնում ենք կոդը երկու կայքերում, եւ ամեն ինչ շարունակվում է, կարծես ոչինչ չի պատահել: Նման իրավիճակը, որքան կարծում եմ, ձեւանմուշին ընտրված մոտեցման կատարյալ ստուգում է:

Մեկ այլ կարեւոր կետ, որը շատերը պակասում են (իրենց տեսական պատճառաբանությամբ, մինչդեռ անընդհատ բախվում են նրան գործնականում) - Սցենարի իրականացման կարգը միշտ չէ, որ համընկնում է ձեւանմուշում ելքի կարգի հետ, Դասագրքի օրինակն է հոդվածի վերնագրի արդյունքը պիտակում , Եթե \u200b\u200bմենք հասնում ենք տեղեկատվություն, մենք պարզապես չենք կարող դա անել `գլխարկը <i>արդեն</i> Ազատ է արձակվել, այն ժամանակ, երբ մենք սկսեցինք ստանալ տեքստի նորությունները:</p><p>Պետք է հիշել նաեւ, որ RNR- ի տեքստից բացի, սցենարները նույնպես ելքային HTTP վերնագրեր են: Որոնք պահանջվում են ցուցադրել ցանկացած տեքստի առաջ, կամ նույնիսկ ընդհանուր առմամբ տեքստի փոխարեն (եթե մենք, օրինակ, մենք ցանկանում ենք օգտագործողին ուղղել մեկ այլ էջ): Եթե \u200b\u200bմենք նախ իրականացնենք դիմումի տրամաբանությունը, առանց որեւէ բան ցուցադրելու, ապա մեզ համար անհրաժեշտ NTTR- ն չի տա մեզ համար:</p><p>Կարող եք ունենալ ձեւանմուշներ օգտագործելու իրենց պատճառները: Բայց միայն մեկ պայմանով `այս պատճառները պետք է առաջանան իրական, կենսական անհրաժեշտության, եւ ոչ թե« բարձր նկատառումներով »եւ ոչ մի անհայտ մարդկանց խնամքի միջոցով:</p><p><b><a name="example">Պրակտիկա</a> </b><br> Այժմ տեսությունից, մենք դիմում ենք պրակտիկային: <br> Ամենապարզ դեպքում, ցանկացած էջի ցուցադրության մեջ, մենք միշտ կմասնակցենք երկու ձեւանմուշ, ընդհանուր կայքի ձեւանմուշ եւ բետոնե էջի բովանդակության ձեւանմուշ: <br> Ենթադրենք, որ մենք ուզում ենք էջ ստեղծել ընկերների կայքերի հղումներով: <br> Այս դեպքում կոդը պարզեցված ծածկագիրը նման կլինի.</p><p>Links.php ֆայլ ինքնին: Ոչինչ չի ցուցադրվում: Պարզապես պատրաստում է տվյալները, այնուհետեւ առաջացնում է ձեւանմուշ: <br><span><?<br><span>// ներառական պարամետրեր: <br></span>Ներառեք «Settings.php»;</p><p>// Ստացեք տվյալների բազայից, որոշեք փոփոխականները <br></span>$ Pagetitle \u003d "(! Lang: Հղումներ)" ;!} <br>$ Data \u003d $ db -\u003e getall («Ընտրեք * հղումներից»);</p><p>// Սահմանեք էջի ձեւանմուշը եւ զանգահարեք կայքի ընդհանուր ձեւանմուշ: <br></span>$ Tpl \u003d "tpl_links.php"; <br>Ներառեք «TPL_MAIN.PHP»; <br> </p><p>Ընդհանուր ձեւանմուշ (tpl_main.php):</p><p><html xmlns="http://www.w3.org/1999/xhtml"><br> <head><br> <title>Իմ կայքը:<?=$pagetitle?>






Հենց ճիշտ տեղում այն \u200b\u200bմիանում է Pan_links.php (TPL_LINKS.PHP):





  • «Թիրախ \u003d" _ դատարկ "\u003e


    • Ողջույն բոլորին. Ես ուզում եմ ներկայացնել PHP- ում գրված մեկ այլ հեծանիվ, օգտագործելով փաստաթղթային օբյեկտի մոդելը: Որն է նրա տարբերությունը նույն տեսակների մյուս եռաստիճան ներկայացուցիչներից: Իրականում, տարբերությունները այնքան էլ շատ չեն, այն համատեղում է շատերի լավագույնը: Օրինակ:

      1. Ամբողջ միջնորմ HTML եւ PHP:
      2. Տեսակի օրինակների լրացուցիչ պիտակներ


      3. Կաղապարից այլ ֆայլերի բովանդակությունը տեղադրելու ունակություն, ինչպես PHP- ից, այնպես էլ ձեւավորման համար հատուկ պիտակ օգտագործելով:
      4. Թռչում ցանկացած HTML-պիտակ ստեղծելու ունակություն:
      5. HTML ֆայլում պահելու ունակություն այն ամենը, ինչ ստեղծվել եւ հավաքվել է:
      6. Ստուգեք պահանջվող էջի HTML ֆայլի առկայությունը նախքան ձեւանմուշ ստեղծելը:

      Այսպիսով, բոլորը պարզ դարձան, թե որքան հարմարավետ է հարմարավետ եւ հեշտությամբ բողոքարկելու համար, ես կասեմ եւ ցույց կտամ, թե ինչպես ես այն օգտագործեցի իմ նախագծերից մեկը ստեղծելու համար:

      Առաջին բանը, որ ես սովորաբար անում եմ, այն է, որ տվյալների բազայից ստացա բոլոր տեղեկությունները էջի մասին (Հիմնաբառեր, էջի նկարագրություն, ձեւանմուշ, CSS եւ JS ֆայլեր): Ես այս ամենը պահում եմ $ գլխի մի շարք: Ավելին, ես բովանդակություն եմ ստանում տվյալների բազայից եւ պահում եմ $ էջի հավաքածու: Եւ շարունակեք աշխատել դասի հետ:

      Այսպիսով, նախ զանգում եմ դասի կոնստրուկտորին եւ փոխանցում դրա բոլոր անհրաժեշտ պարամետրերը.

      $ Tpl \u003d նոր ձեւանմուշ; $ TPL -\u003e EXT \u003d TPL_EXTENS; # $ TPL ձեւանմուշների կատալոգում ֆայլերի ընդլայնում -\u003e HTM \u003d cache_extension; # Ընդլայնում արդեն ստեղծված էջերի համար $ TPL -\u003e Skin_dir \u003d Dir_templates; # Գրացուցակ, որում կայքի բոլոր ձեւանմուշները ստում են (օրինակ, ձեւանմուշներ) $ tpl -\u003e JS_DIR \u003d Dir_js; # Գրացուցակ, որտեղ դուք պետք է որոնել JS Files $ tple -\u003e css_dir \u003d Dir_cs; # Գրացուցակ Որտեղ են CSS $ TPL -\u003e IMG_DIR \u003d DIR_IMG; # Գրացուցակ, որտեղ $ tpl նկարներ -\u003e մաշկ \u003d $ _session [«մաշկ»]; # Կաղապարի անվանումը, որը ես ուզում եմ օգտագործել $ tple -\u003e քեշ \u003d Dir_cache; # Որտեղ է պահպանել պատրաստ HTML $ TPL -\u003e Log \u003d File_T_Logs; # Որտեղ գրել տեղեկամատյանները $ TPL -\u003e Tag_Start \u003d Symbol_start_tag; # Նիշը, որից փոփոխականները սկսվում են $ tpl ձեւանմուշում -\u003e Tag_end \u003d Symbol_Entag; # Խորհրդանիշ, որը վերջացնում է փոփոխականներին $ tpl ձեւանմուշում -\u003e Dir_delimeter \u003d Directory_separator; $ TPL -\u003e Space \u003d Symbol_space; # Խորհրդանիշ փոխարինող տարածքը:
      FUF, թվում է, թե բոլոր փոփոխականներն անցան, գնացեք հետագա:
      Որպեսզի դասը չդառնա լրացուցիչ աշխատանք կատարել, նախ մենք ստուգում ենք, հանկարծ մենք արդեն ունենք հայցվող էջի պատրաստի HTML ֆայլ:
      Եթե \u200b\u200b($ tpl -\u003e testpagestatus () \u003d\u003d\u003d ճշմարիտ) (պահանջում է $ tply -\u003e cachefilename;) այլ ($ tpl -\u003e էջ ("INDEX"); # մենք անցնում ենք ձեւանմուշի ֆայլը կարող է անցնել մի քանիսը, ստորակետով $ tpl -\u003e հանձնարարել («գլուխ», $ գլուխ); $ tpl -\u003e Հանձնարարել (); # մենք թիմ ենք տալիս Հավաքեք կաղապարը $ tpl -\u003e showpage (); # Վերցրեք ներքեւ):
      Ահա իրականում այն \u200b\u200bբոլոր մեթոդները, որոնք պետք է օգտագործվեն էջը հանելու համար:

      Այժմ մենք վերլուծելու ենք այս դասի մի քանի օգտակար մեթոդներ: Ենթադրենք, որ մենք արդեն անցել ենք այն դասի այն ամենը, ինչ ձեզ հարկավոր է, բայց նրանք նրան եզրակացության չեն տվել, քանի որ նրանք հանկարծ հիշում են, որ ձեւանմուշում պետք է ստեղծենք մի քանի HTML պիտակներ: Սա արվում է նաեւ շատ պարզ: Նախ պետք է գտնել այն բլոկը, որտեղ մենք ուզում ենք ինչ-որ բան ավելացնել: Կարող եք գտնել 2 եղանակ.

      $ Tpl -\u003e FindByid ("Findme"); $ Tpl -\u003e FindBytagname ("Div");
      FindByid մեթոդը տրամաբանորեն ենթադրում է, որ ձեւանմուշում բոլոր պիտակները եզակի են ձեւանմուշում: Եվ FindByTagname- ի մեթոդը կվերադարձնի առաջին հարմարը:
      Արդյունքը, որը մենք ստացել ենք որոնում, մենք պետք է անցնենք $ TPL մեթոդին -\u003e CreateThemild () կարողանա ստեղծել գտած տարրով, Երեխայի թեգերով: CreateThild մեթոդը, ի դեպ, նոր ապրանք ստեղծելուց հետո այն վերադարձնում է մեզ, որպեսզի մենք կարողանանք օգտագործել միայն մեկ այլ տեղ ստեղծված տարրը:

      Ընտրելով եւ փորձելով ես գտել եմ 3 եղանակ, ձեւանմուշում պիտակներ ստեղծելու 3 եղանակ, ուստի միանգամից կտամ 3 օրինակ: Օրինակ 1:

      Մենք պետք է ստեղծենք

      ներսից

      $ Ծնող \u003d $ TPL -\u003e FindByid («Ծնող»); $ TPL -\u003e CreateThild ($ Ծնող, "Div", "ID \u003d երեխա, դաս \u003d թեստ");
      Մենք ստանում ենք.


      Օրինակ 2.

      Մենք պետք է ստեղծենք

      Որոշ տեքստ
      ներսից

      $ Ծնող \u003d $ TPL -\u003e FindByid («Ծնող»); $ TPL -\u003e CreateTheethild ($ Ծնող, "Div", "ID \u003d երեխա, դաս \u003d թեստ", "որոշ տեքստ");
      Մենք ստանում ենք.

      Որոշ տեքստ

      Օրինակ 3:
      Մենք պետք է ստեղծենք

      Նոր տարր
      Առաջին span տարրում

      $ Ծնող \u003d $ TPL -\u003e FindBytagname ("Span"); # (1) $ tpl -\u003e CreateTeThild ($ Ծնող, "Div", "New Element"); # (2)
      (1) Ծնող գտնելը ID- ով չէ, իսկ պիտակում կգտնի առաջին հարմարը
      (2) Եթե մեզ հարկավոր չէ ատրիբուտներ, բայց միայն նոր իրի արժեքը, դուք չեք կարող դրանք փոխանցել

      Մենք ստանում ենք.

      Նոր տարր

      Եվ այս մանիպուլյացիաներից հետո ես արդեն զանգում եմ ցուցադրություն: Եվ ահա մենք սահուն մոտեցանք եւս 2 հետաքրքիր պահին:
      Պատկերացրեք այն իրավիճակը, որը մենք ունենք ձեւանմուշ, ենթադրենք, որ սա ցուցակի ձեւանմուշ է, օրինակ, բջջային հեռախոսներ.

      (Content.brand)

      (Բովանդակություն.

      (Content.info)

      Եթե \u200b\u200bմենք անցել ենք ընդամենը 1 հեռախոսային տեղեկատվություն, այն պարզապես կփոխարինվի դրանց արժեքների փոփոխականներով, եւ եթե մենք անմիջապես տեղեկությունները փոխանցենք մի քանի հեռախոսների, ապա դասը կներառի այս կայքը, քանի որ եկավ արժեքների տարբերակները , Եվ դա կդարձնի իրեն, ի հակադրությամբ, օրինակ, դաս Xtemplate- ից, որը հաշվառում էր յուրաքանչյուր արժեքի զանգերի հանձնարարում եւ վերլուծում
      True իշտ է, չկա մեկը շատ հարմար պահ, եթե այս բլոկից հետո ավելին է, օրինակ.

      (Content.brand)

      (Բովանդակություն.

      (Content.info)
      Դեռ որոշ բլոկ

      Այնուհետեւ նման իրավիճակում մենք ստիպված կլինենք կիրառել փոքր հնարք, փաթեթավորել մեր բջջային հեռախոսը

      (Content.brand)

      (Բովանդակություն.

      (Content.info)
      Դեռ որոշ բլոկ

      Այս դեպքում բոլոր բջջային հեռախոսները կհայտնվեն միմյանց հետեւից
      եւ «որոշ այլ միավոր» կմնա ներքեւում:

      Եվ եթե ես ոչինչ չմոռանայի, ապա վերջին պահը ավելացնելով այլ ձեւանմուշների բովանդակությունը ընթացիկ ձեւանմուշին:
      Ես կրկին զանգում եմ ձեր ֆանտազիան:

      Պատկերացրեք, որ ջրաչափը ցանկանում է Page.html ֆայլի բովանդակությունը: HHTML ֆայլի բլոկը ավելացնելու համար: Էջ Եվ երբ դասը տեսնում է այս պիտակը, նա այն կփոխարինի Page.html ֆայլի պարունակությամբ

      Նման ներդիրների քանակը սահմանափակ չէ, եւ դրանց գտնվելու վայրը բացարձակապես քննադատական \u200b\u200bչէ, այնպես որ կարող եք դրանք տեղադրել որեւէ այլ եւ ցանկացած քանակի:

      Դա, հավանաբար, ամեն ինչ է, եթե ինչ-որ բան հիշում եմ, լրացուցիչ կհաղորդեմ: Շնորհակալ եմ ավարտին կարդալու համար:

      Թեմաներ, PHP, Class, Կաղապար, Tenderizer, Parser