დეტალები * .tpl ფაილი Dle თარგის მათი მიზანი. გამოყენება TPL ფაილები TPL PHP თარგები როგორ გამოვიყენოთ

მე მაშინვე ვიტყვი, რომ აქ უკვე დაწერე ამ თემაზე :. თუმცა, ყველას არ ესმოდა ეს მასალა და მე გადავწყვიტე დავუბრუნდე მას და დავწერე ყველაფერი ცოტა განსხვავებულად. ეს არ არის საიდუმლო, რომ ნებისმიერი სერიოზული ძრავა არასოდეს არ იქნება შერეული თქვენს კოდში. Html და Php.. მაგრამ, Html და Php. კოდები ძალიან მჭიდროდ არის ურთიერთდაკავშირებული, ამიტომ, რათა არ დაარღვიოს "კარგი ტონის" წესები, გამოიგონა tPL ფაილები. ეს ფაილი ინახება HTML კოდი თარგის ელემენტებითვინ შეცვლილია PHP კოდი. მოდი უფრო დეტალურად გამოიყურებოდეს გამოყენებით TPL ფაილი მაგალითისთვის.

ჩვენ ვიღებთ თქვენთან ერთად ყველაზე ელემენტარული მაგალითია მომხმარებლის პანელი, სადაც მისი avatar და მისასალმებელი სახელით. უპირველეს ყოვლისა, შექმნა tPL ფაილი.და მოვუწოდებთ მას userpanel.tpl. შეგახსენებთ, რომ ეს მხოლოდ ცალია HTML კოდი თარგის ელემენტებით:

გამარჯობა,%%!




არაფერი რთულია, ეს მხოლოდ ჩვეულებრივია HTML კოდი. მხოლოდ გარკვეული ღირებულებების ნაცვლად ღირს Elements_sablon%.

ახლა ჩვენ გაერკვევა ის PHP დამუშავება. ყველაფერი უფრო მეტია, ვიდრე აბსტრაქტული, მაგრამ, სამწუხაროდ, არანაირად. მთავარია, რომ გავიგოთ სამუშაო პრინციპი. Ისე PHP კოდი დამუშავებისათვის tPL ფაილი.:

/ * ეს ფუნქცია, თუმცა იყენებს ბუფერებს, მაგრამ ელემენტარული არსი: დაბრუნების შინაარსი ფაილი * /
ფუნქცია GetTemplate ($ სახელი) (
Ob_start (); / / დაიწყეთ გამომავალი ბუფერისთვის
მოიცავს ($ სახელი. "TPL"); // გააგზავნეთ ფაილის შინაარსი ბუფერით
$ Text \u003d ob_get_clean (); / / გაწმენდა ბუფერული და დაბრუნების შინაარსი
დაბრუნება $ ტექსტი; // ტექსტის დაბრუნება ფაილიდან
}
$ სახელი \u003d "ნიკოლაი"; / / ამოღებულ ბაზადან
$ avatar \u003d "avatars / user_15.jpg"; / / ამოღებულ ბაზადან
/ * იწყება შეცვალოს თარგის ელემენტები რეალური მონაცემებისათვის * /
$ Userpanel \u003d str_replace (
მასივი (
"%%",
"% avatar%"
),
მასივი (
$
$ ავატარა
),
GetTemplate ("UserPanel")
);
Echo $ userpanel; / / საბოლოო შედეგის ჩვენება
?>

ეს არის მარტივი ვარიანტი. ყველაფერი გააკეთა, ასე რომ არ უნდა იყოს შეკითხვები ამ მაგალითში. სინამდვილეში, ნებისმიერი გვერდი შედგება ასეთი ბლოკებისგან. შენი ამოცანა მიიღოს მარჯვენა ბლოკები (ფუნქცია getTemplate ()), შეცვალოს საჭირო მონაცემები (str_replace () ფუნქცია და მიღებული მონაცემები, მაგალითად, ბაზიდან), შემდეგ კი უბრალოდ დააკავშირებს ყველა ბლოკს, როგორც რეგულარული ხაზები და გამომავალი ყველაფერი გვერდზე.

რა თქმა უნდა, გარეშე თითო აქ ძალიან პრობლემატურია. თქვენ გაზარდოთ ასეთი პირობები (ბევრი გვერდი), რომელიც სწრაფად აღრეული. მაგრამ გამოყენების პრინციპი tPL ფაილებივიმედოვნებ, რომ მიხვდები. შემდგომი ვიფიქროთ, თუ როგორ უნდა გადაიტანოთ თითოისე, რომ ყველაფერი ისეთივე მარტივია, რაც შეიძლება იყოს კოდის გაგების თვალსაზრისით და მომავალში მისი შენარჩუნება.

შექმნის შემდეგ ინფორმაციაპრინციპში, თემა უკვე განსაზღვრულია. ეს იმას ნიშნავს, რომ თქვენ შეგიძლიათ მიდიხართ საველე მართვის განყოფილებაში. http://mysite.ru/admin/build/themes. და მოიცავს თქვენს თემას. ბუნებრივია, მას შემდეგ, რაც მას არ დიზაინი თქვენ ვერ ვხედავ - გვერდზე მიიღებს სტილი "შავი თეთრი" - თეთრი ფონზე შავი ტექსტი.

თუმცა, მინდა აღვნიშნო, რომ მიუხედავად იმისა, რომ ჩვენს თემას არ არსებობს mytheme.info. არ არის ტყუილი, საიტი იმუშავებს, როგორც ადრე - ყველა შინაარსის გასათევად, რეგიონებში ბლოკების დამატება ( http://mysite.ru/admin/build/block) ეს არის განმარტებული ის ფაქტი, რომ დრუკალის ბირთვი შედის სავალდებულო მოდულებირომელიც თქვენს თემში ნებისმიერი ფაილების სრული არარსებობით (ინფორმაციის ფაილის გარდა) საშუალებას გაძლევთ გააგრძელოთ მუშაობა Drupal- თან.

პრინციპში, თარგის ყველა შექმნა ჩამოდის თარგის ფაილების გადაფარვაში (მათ აქვთ გაფართოება .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. - დააბრუნებს სიმართლის ღირებულებას, თუ თქვენ გაქვთ ადმინისტრატორის წვდომა

მეტამონაცემების გვერდები

  • $ ენა. - (საგანი) მიმდინარე ენარომელიც ნაჩვენებია საიტზე
  • $ ენა-\u003e ენა - შეიცავს მისი ტექსტის წარმომადგენლობას
  • $ ენა-\u003e - შეიცავს ენის მიმართულებას. ეს ან იქნება "LTR" (მარცხნივ მარჯვნივ) ან "RTL" (მარჯვნივ- to- მარცხნივ)
  • $ Head_title - მოდიფიცირებული გვერდის სათაური ვერსია გამოყენებისათვის Tags- ს შორის
  • $ ხელმძღვანელი. - ჩასმული შორის tags . შეიცავს მეტა ტეგებს, საკვანძო სიტყვები და ა.შ.
  • $ Styles. - ყველასთვის ყველას ჩამოტვირთვას cSS.- ამჟამინდელი გვერდიდან
  • $ სკრიპტები. - ყველასთვის ყველას ჩამოტვირთვას javaScript "OV მიმდინარე გვერდზე
  • $ body_classes - კლასების კომპლექტი cSS. იყიდება taga . შეიცავს ინფორმაციას საიტზე სვეტების ამჟამინდელი მოწყობის შესახებ, მათი რიცხვი, ამჟამინდელი URL "E და ა.შ.

ინფორმაცია საიტზე

  • $ Front_page. - საიტის მთავარი გვერდის მისამართი. უმჯობესია გამოიყენოთ ეს ცვლადი მინიშნება Მთავარი გვერდიიმიტომ რომ იგი მოიცავს დომენურ ენას და პრეფიქსს
  • $ ლოგო. - გზაზე საიტის ლოგო, თუ შედის საიტზე
  • $ Site_name. - Საიტის სახელი. ეს შეიძლება იყოს ცარიელი, თუ თქვენ აქციოს ეს ფუნქციები info ფაილი. კონფიგურაცია mysite.ru/admin/settings/site-information
  • $ site_slogan. - სლოგანი საიტი. ეს შეიძლება იყოს ცარიელი, თუ თქვენ აქციოს ეს ფუნქციები info ფაილი. კონფიგურაცია mysite.ru/admin/settings/site-information
  • $ მისია - მისია საიტი. ეს შეიძლება იყოს ცარიელი, თუ გამორთვა ეს თვისებები ინფორმაცია ფაილი. კონფიგურაცია mysite.ru/admin/settings/site-information

ნაოსნობა

  • $ search_box - შეიცავს HTML კოდი, რომელიც აჩვენებს ძიების სიმრავლეს. შეიძლება იყოს ცარიელი, თუ თქვენ ჩართოთ ეს off info file
  • $ primary_links.
  • $ Secortary_links. - მასივი, რომელიც შეიცავს ნავიგაციის ბმულებს იმ შემთხვევაში, თუ ისინი ნებადართულია ინფორმაციის ფაილის მახასიათებლებში

ნაგულისხმევი გვერდი კონტენტი

  • $ დარჩა. - რეგიონი. შეიცავს HTML კოდს მარცხენა სვეტისთვის. თუ Info File- ში ნებისმიერი რეგიონის შექმნას, მაშინ გაქრება
  • $ Breadcrumb. - "პური crumbs" ამჟამინდელი გვერდი
  • $ სათაური - Გვერდის სათაური
  • $ დახმარება. - დინამიური რჩევები, ძირითადად, ნაჩვენებია admin
  • $ შეტყობინებები. - აჩვენებს შეცდომებს და გაფრთხილებებს საიტზე
  • $ ჩანართები. - მიმდინარე გვერდის დამაკავშირებელი მითითებები (ჩანართების) მისი სუბტროფებით (მაგალითად, სტატიისთვის - მისი რედაქტირების გვერდზე)
  • $ შინაარსი - შინაარსი აქტუალური გვერდი
  • $ უფლება - რეგიონი. შეიცავს HTML კოდს მარჯვენა სვეტისთვის. თუ Info File- ში ნებისმიერი რეგიონის შექმნას, მაშინ გაქრება

ქვედა ფართობი / დახურვის მონაცემები

  • $ Feed_icon. - სიმებიანი ყველა ხატები კავშირი მიმდინარე გვერდზე
  • $ Footer_message. - გვერდის ბოლოში გაგზავნა. კონფიგურაცია mysite.ru/admin/settings/site-information
  • $ Footer. - რეგიონი. შეიცავს HTML კოდს გვერდის ბოლოში. თუ Info File- ში ნებისმიერი რეგიონის შექმნას, მაშინ გაქრება
  • $ დახურვა. - დახურვის ეტიკეტი ყველა მოდულისთვის, რომელმაც შეცვალა გვერდი. ეს ცვლადი უნდა იყოს ნაჩვენები ყველა დინამიური შინაარსის შემდეგ. საუკეთესო ადრე დახურვის tag სხეულის

ყველა აქ ჩამოთვლილია სტანდარტული ცვლადები. მაგრამ თქვენ შეგიძლიათ დაამატოთ თქვენი ცვლადები აქ როგორც რეგიონებში ინფორმაცია-File ან სხვა როლს ფაილის მეშვეობით template.php. (მის შესახებ ცოტა მოგვიანებით).

ახლა მე ვაჩვენებ რა კოდი უნდა იყოს page.tpl.php. და რა კოდექსში ის ბრაუზერებს განიხილავს. სანამ კოდი კოდიდან page.tpl.php.:

პირველ რიგში არის შემოწმება, არის თუ არა სათაურით მიმდინარე გვერდზე. თუ ეს არ არის - მაშინ Debugger უბრალოდ გამოტოვებთ ამ კოდს და არ დასრულდება მას ბოლომდე. თუ სათაურში არსებობს, გვერდზე კოდი დაემატება HTML- ს

, მას შემდეგ, რაც დაიბეჭდება გვერდზე სათაური, და ყველა ეს დაიხურება მიერ tag

. თუ თქვენ გადავხედავთ ამ გვერდის კოდექსს ბრაუზერში, მაშინ ეს ასე გამოიყურება:

გაკვეთილი 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 ; ?> "" >

Ძვირფასო მეგობრებო,

ჩვენ გავაგრძელებთ სასარგებლო რჩევების სერიის გამოცემას, რომელიც ხელს უწყობს სკრიპტის ზოგიერთი ქმედებისა და თვისებების გაგებას. ცოტა ხნის წინ, კითხვები ხშირად გვყავს მოთხოვნით, რათა შეცვალონ სკრიპტის მოდიფიკაცია ისე, რომ თქვენ შეგიძლიათ გამოიყენოთ სხვადასხვა შაბლონები სხვადასხვა სექციებისათვის. მაგალითად, სიახლეებთან მთავარ გვერდზე უნდა ჰქონდეს ერთი განლაგება სტრუქტურა და მაგალითად, უკუკავშირის გვერდი სრულიად განსხვავებულია. ამავდროულად, ჩვენთვის მოტივირება, რომ შესაძლებელია შეცვალოთ ნიმუშების შეცვლა Admin Panel- ში მხოლოდ საიტის სიახლეების კატეგორიაში. მაგრამ სინამდვილეში ეს ყველაფერი შეიძლება განხორციელდეს სტანდარტული საშუალებით, რომელიც ამ პატარა სტატიას წავა.

ასე რომ, პირველი, რაც ჩვენ უნდა მივმართოთ სკრიპტის დოკუმენტაციას, რომელიც ნათქვამია, რომ თარგი main.tpl მხარს უჭერს შემდეგ tags:

ტექსტი, რომელიც აჩვენებს ტექსტს თანდართულ ტექსტში, თუ საიტის მითითებულ მონაკვეთს ეძებენ.


ასევე ეს tag აქვს საპირისპირო

ტექსტი, რომელიც აჩვენებს ტექსტს თანდართული ტექსტში, თუ თქვენ განიხილება ნებისმიერი დანაყოფი გარდა მითითებული


მიიღოს როგორც საფუძველი ამოცანა: დარწმუნდით, რომ საიტი იყენებს თარგის ერთ დიზაინს და ადგილზე აღმოჩენილია სხვა. ამასთანავე, ჩვენ უნდა გახსნას თარგი. main.tpl და მიუთითეთ შემდეგი:

აქ თარგის მთელი ტექსტი, რომელიც ნაჩვენები იქნება გამოხმაურების ნახვისას
აქ მთელი ტექსტი თარგის, რომელიც იქნება ნაჩვენები ყველგან გარდა კავშირი


მაგრამ მას აქვს ერთი დიდი მინუსი, თქვენი ძირითადი თარგის ფაილი main.tpl ეს იქნება ძალიან დიდი, რადგან არსებითად, იქნება ორი სხვადასხვა დიზაინი, და აქ ჩვენ კვლავ მივმართავთ დოკუმენტაციას და სკრიპტს და გაეცანით ლამაზი ტეგის არსებობას: (ჩართეთ ფაილი \u003d "my_block.tpl")რომელიც აკავშირებს მითითებულ my_block.tpl ფაილის თარგში.

ყოველივე ზემოთქმულიდან გამომდინარე, საბოლოო განხორციელება ასეთია:


თარგის ფაილში feedback_main.tpl ჩვენ ვაკეთებთ კავშირი დიზაინს, და all_main.tpl ფაილში ჩვენ ვაკეთებთ დიზაინის დანარჩენ საიტზე. სინამდვილეში, ყველაფერი არის მარტივი და მარტივი განხორციელება, არ უნდა აწარმოოს სკრიპტის ნებისმიერი ცვლილება. თქვენ ასევე შეგიძლიათ განათავსოთ ნებისმიერი დანაყოფის დიზაინი, შეგიძლიათ დაამატოთ რამდენიმე სექცია და ა.შ. დაწვრილებით და უფრო ფრთხილად, წაიკითხეთ დოკუმენტაცია სკრიპტისთვის, საკმაოდ სასარგებლოა თქვენთვის საინტერესოა.

Გულწრფელად თქვენი,


მათი ეკრანის ლოგიკიდან მონაცემთა ლოგიკის გამოყოფა ვებ-გვერდის ძალიან მნიშვნელოვანი კომპონენტია.
ნებისმიერი პროგრამისტი, რომელიც ცოტა უფრო მაღალია, ვიდრე "Hello World" - ს დონეზე, იწყებს ასეთი განყოფილების აუცილებლობას. მაგრამ ყველას არ მოდის სწორი დასკვნები და გადაწყვეტილებები.
ამიტომ, მე აქ მივცემ ყველაზე მნიშვნელოვან წესებს:
1. კოდის და მონაცემთა ჩვენების კოდექსის მიღება უნდა გაიყოს.
2. ნებისმიერი დასკვნა უნდა დაიწყოს მხოლოდ მას შემდეგ, რაც ყველა მონაცემები მზად არის.
3. შედეგად, ნებისმიერი სკრიპტი უნდა იყოს მხოლოდ მონაცემთა დამუშავება. ამის შემდეგ, მას შეუძლია გააგზავნოს ზოგიერთი NTTR სასაქონლო პოზიცია, ან დარეკეთ თარგი, რომელსაც გადაეცემა მომზადებული მონაცემები, ან ორივე ერთად.
4. რა უნდა გამოიყენოთ მეათეა. მარტივი და ყველაზე ხელმისაწვდომი - RNR თავად, ასე რომ მაგალითები იქნება მასზე.

მცდელობა
არა, ალბათ, ვებ პროგრამირების თემა არის აშკარა, როგორც გაუგებარია, როგორც თარგები. თითოეული, ადრე თუ გვიან, მოდის დასასრულს საჭიროების გამოყენების თარგები. მაგრამ ეს მოდის, რატომღაც, ზოგიერთი wildest misconceptions და ფანტაზიით.

მარტივი და აშკარა misconception ის არის, რომ newcomers ეწოდება თარგი გააკეთა ცალკე "დიზაინი" ფაილი - გაზიარებული HTML ყველა გვერდის ყველა გვერდისთვის. და soothe მასზე. დინამიური ინფორმაცია, არ არის მკაცრი, გაყვანის ძველი კარგი echo :-)
სინამდვილეში, templateizer ძირითადად ჩართული გამომავალი შეცვლის შინაარსი გვერდზე გვერდები. და "დიზაინის" დასკვნა მცირე ამოცანაა.

ფანტაზიები მთავარია:
1. თარგები საჭიროა "დიზაინერზე" ისე, რომ მას შეუძლია შეცვალოს მათ გაგება PHP.
2. შესაბამისად, თარგები HTML- სგან PHP- ს გამოყოფს.

შევეცადოთ ვიფიქროთ პირველი განცხადების შესახებ. ვინ არის დიზაინერი? ეს არის ადამიანი, რომელიც მუშაობს Photoshop- ში. HTML ის ყველაზე ხშირად არ იცის. და თარგის ზემოთ არის სპეციალური ფენა ან ყველაზე ხშირად ... პროგრამისტი თავად! სასაცილო, არ არის ეს?
ახლა შედეგი, HTML- ის PHP გამოყოფის შესახებ. შესანიშნავი. ჩვენს წინაშე არის წმინდა გოლი გამოყოფა. აქედან გამომდინარე, ჩვენ ვიმყოფებით ჭკვიანი და წერენ:
(Foreach გასაღები \u003d cid item \u003d con \u003d $ კონტაქტები)
($ con. სახელი) - ($ con .Nick)

(/ foroach)

გაძლიერებული funnier.
"დიზაინერი", რისთვისაც ყველაფერი იდგა, ბედნიერებისგან გაბრაზდა.

თეორია
აღმოჩნდება, რომ ჩვენი მიზეზები, რომელთათვისაც ჩვენ გადავწყვიტეთ, რომ გამოიყენოთ თარგები, არ ღირს პენი. და ახლა რა არის - არ არის საჭირო, გამოდის, shabons ყველა? საჭიროა. მაგრამ პირველი თქვენ უნდა უპასუხოთ შეკითხვას - "რატომ?" Რისთვის ჩვენ გვჭირდება ნიმუშები. და შეამოწმეთ რეაგირების პრაქტიკა. ამ კითხვაზე ბევრჯერ ვკითხე. მაგრამ თითქმის ვერავინ პასუხობს მას. რატომ სჭირდება თარგები. გამოდის, ხალხი რაღაცას აკეთებს, არ იცის, რატომ.
ეს არის სასაცილო რამ.

მათი საქმიანობის დროს, როგორც ვებ პროგრამისტი, მე ჩამოყალიბებული სამი მიზეზი ჩემთვის, რომლისთვისაც პირადად გვჭირდება თარგები. არსი, არსებობს ორი მათგანი. და წავიდეთ ქვემოთ, საბოლოო ჯამში, ერთი:

ერთი კოდი - რამდენიმე ნახვა.

ეს ხშირად ხდება, რომ ერთი ინფორმაციის ნაცვლად თქვენ უნდა აჩვენოთ სხვა. მაგალითად, მონაცემთა ბაზაში სამუშაო კოდი იღებს ტექსტის ნაცვლად შეცდომის შეტყობინებას. ამ შემთხვევაში, ახალი ამბების ნაცვლად, თქვენ უნდა აჩვენოთ სრულიად განსხვავებული - ბოდიშის მოხდა და მოგვიანებით მოგვიანებით. თარგების გამოყენება, ეს არის ელემენტარული.

ხშირად ერთი და იგივე ინფორმაცია უნდა იყოს ნაჩვენები რამდენიმე სახეობაში. მაგალითად, რეგულარული გვერდი და ბეჭდური გვერდი. ინფორმაცია იგივეა, მისი მომზადების კოდი იგივეა და გამომავალი კოდია განსხვავებულია. წინაშე ამ სიტუაციაში, ძალიან სწრაფად დაიყოს თქვენი კოდი ორ ნაწილად, რომელთაგან ერთი პასუხისმგებელია გამომავალი, ხოლო მეორე არ პასუხობს. კიდევ ერთი მაგალითი: ვთქვათ, ჩვენ გვინდოდა, რომ გამოვიყენოთ ინფორმაცია პირდაპირ HTML- ზე, მაგრამ AJAX- ის მოთხოვნით, JSON ფორმატში. თუ ჩვენ ვიყენებთ templateizer, მაშინ ჩვენ შევცვლით ჩვენს კოდს ზუსტად ერთი ხაზი - მოვუწოდებთ templateizer დარეკეთ JSON_ENCODE (). და თუ ჩვენი დასკვნა შერეული იყო მონაცემთა შეძენის კოდით, მაშინ კოდს უნდა გადაეცეს მთელი!

ანალოგიურ ვითარებაში: ვთქვათ, ჩვენი სკრიპტი ორ ადგილას არის. პლუს ჩვენთვის ასლი სახლში. და სახლში ვნახეთ დიდი შეცდომა. შეაფასა მისი. ახლა თქვენ უნდა განაახლოს კოდი საიტებზე. ასე რომ, ის არის ჭეშმარიტების მომენტი: თუ თარგები სწორად იქნა გამოყენებული, მაშინ ჩვენ უბრალოდ დავასხათ კოდი ორივე საიტებზე, და ყველაფერი განაგრძობს მუშაობას, თითქოს არაფერი მოხდა! ასეთი სიტუაცია, როგორც მე ვფიქრობ, არის სრულყოფილი შემოწმება შერჩეული მიდგომა თარგი.

კიდევ ერთი მნიშვნელოვანი წერტილი, რომ ბევრი არ არის დაკარგული (მათი თეორიული მსჯელობა, ხოლო მუდმივად წინაშე მას პრაქტიკაში!) - სკრიპტის შესრულების პროცედურა ყოველთვის არ ემთხვევა თარგის გამომავალზე. სახელმძღვანელოს მაგალითი არის სტატიის სათაურის გამომავალი . თუ ჩვენ მივიღებთ ინფორმაციას, როგორც ჩვენ ჩამოვა, ჩვენ უბრალოდ არ შეგვიძლია ამის გაკეთება - ქუდი <i>უკვე</i> გაათავისუფლეს, ამ დროისთვის ჩვენ დავიწყეთ ტექსტური სიახლეები.</p><p>ეს ასევე უნდა გაიხსენოს, რომ გარდა RNR, სკრიპტები ასევე გამომავალი HTTP სათაურები. რომლებიც ვალდებულნი არიან აჩვენონ ნებისმიერი ტექსტის წინ, ან ზოგადად ტექსტის ნაცვლად (მაგალითად, მაგალითად, ჩვენ გვინდა, რომ მომხმარებელს კიდევ ერთი გვერდი გადავიტანოთ). თუ ჩვენ პირველად განახორციელებთ განაცხადის ლოგიკას, არაფრის გამოვლენის გარეშე, მაშინ ჩვენ არ მოგვცემთ საჭირო 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?>






სწორ ადგილას გამოდის 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_extension; # ფაილების გაფართოება $ TPL თარგი კატალოგში -\u003e HTM \u003d cache_extension; # გაფართოება უკვე გენერირებული გვერდებზე $ TPL -\u003e Skin_dir \u003d dir_templates; # დირექტორია, რომელშიც ყველა საიტი თარგები იტყუება (მაგალითად, თარგები) $ TPL -\u003e js_dir \u003d dir_js; # დირექტორია, სადაც თქვენ უნდა მოძებნოთ JS ფაილები $ TPL -\u003e CSS_DIR \u003d DIR_CSS; # დირექტორია, სადაც CSS $ TPL -\u003e IMG_DIR \u003d DIR_IMG; # დირექტორია, სადაც $ TPL სურათები -\u003e Skin \u003d $ _session ["Skin"]; # თარგის სახელი, რომელიც მე მინდა გამოვიყენო $ TPL -\u003e Cache \u003d Dir_Cache; # სად გადარჩენა მზა HTML $ TPL -\u003e log \u003d file_t_logs; # სად ჩაწერეთ ჟურნალი $ tpl -\u003e tag_start \u003d simple_start_tag; # ხასიათი, საიდანაც ცვლადები იწყება $ TPL თარგი -\u003e tag_end \u003d simple_end_tag; # სიმბოლო, რომელიც დასრულდება ცვლადები $ TPL თარგი -\u003e Dir_delimeter \u003d დირექტორია _Separator; $ Tpl -\u003e SPACE \u003d smallic_space; # სიმბოლო შეცვალა სივრცეში.
      Fuf, როგორც ჩანს ყველა ცვლადი გავიდა, წავიდეთ შემდგომი.
      იმისათვის, რომ არ აიძულოს კლასი, რათა დამატებითი მუშაობა, პირველი ჩვენ შეამოწმოთ, მოულოდნელად ჩვენ უკვე მზა HTML ფაილი მოთხოვნილი გვერდზე.
      თუ ($ TPL -\u003e TPPAGestatus () \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d შეიძლება გაიაროს რამდენიმე, მეშვეობით Comma $ TPL -\u003e მინიჭება ("ხელმძღვანელი", $ ხელმძღვანელი); $ TPL -\u003e მინიჭება ("შინაარსი", $ გვერდი); $ TPL -\u003e აშენება () # ჩვენ გუნდს შეაგროვეთ თარგი $ tpl -\u003e showpage (); # მიიღეთ ქვემოთ.)
      აქ არის რეალურად ყველა მეთოდი, რომელიც უნდა იქნას გამოყენებული, რათა ამოიღონ გვერდი.

      ახლა ჩვენ გავაანალიზებთ ამ კლასის რამდენიმე სასარგებლო მეთოდს. დავუშვათ, რომ ჩვენ უკვე გავიარეთ კლასში ყველაფერი, მაგრამ მათ არ მისცეს გუნდი დასკვნამდე, რადგან მათ მოულოდნელად გაიხსენეს, რომ ჩვენ უნდა შევქმნათ რამდენიმე HTML ტეგები თარგი. ეს ასევე ძალიან მარტივია. პირველი თქვენ უნდა იპოვოთ ბლოკი, რომელშიც ჩვენ გვინდა დაამატოთ რაღაც. შეგიძლიათ იპოვოთ 2 გზა:

      $ Tpl -\u003e findbyid ("findme"); $ Tpl -\u003e Findbytagname ("div");
      Findbyid მეთოდი ლოგიკურად გულისხმობს, რომ თარგი ყველა tags უნიკალურია თარგის. და Findbytagname მეთოდი დაბრუნდება პირველი შესაფერისი.
      შედეგი ჩვენ მივიღეთ ძებნა ჩვენ უნდა გაიაროს $ TPL მეთოდი -\u003e Createchild () შეძლებს შექმნას ნაპოვნი ელემენტს, ბავშვის tags. Createchild მეთოდი სხვათა შორის, ახალი ნივთის შექმნის შემდეგ, დააბრუნებს ჩვენთვის, ისე, რომ ჩვენ შეგვიძლია მხოლოდ გამოიყენოთ ელემენტი, რომელიც შექმნილია სხვაგან.

      კრეფა და ექსპერიმენტები მე აღმოვაჩინე 3 გზა, რათა შეიქმნას tags in თარგი, ასე რომ მე ვაჩვენებ 3 მაგალითს ერთდროულად. მაგალითი 1:

      ჩვენ უნდა შევქმნათ

      შიგ

      $ მშობელი \u003d $ tpl -\u003e findbyid ("მშობელი"); $ Tpl -\u003e createphild ($ მშობელი, "div", "ID \u003d ბავშვი, კლასი \u003d ტესტი");
      ჩვენ მივიღებთ:


      მაგალითი 2:

      ჩვენ უნდა შევქმნათ

      ზოგიერთი ტექსტი
      შიგ

      $ მშობელი \u003d $ tpl -\u003e findbyid ("მშობელი"); $ Tpl -\u003e createphild ($ მშობელი, "div", "ID \u003d ბავშვი, კლასი \u003d ტესტი", "ზოგიერთი ტექსტი");
      ჩვენ მივიღებთ:

      ზოგიერთი ტექსტი

      მაგალითი 3:
      ჩვენ უნდა შევქმნათ

      ახალი ელემენტი
      პირველ რიგში ელემენტში

      $ მშობელი \u003d $ tpl -\u003e Findbytagname ("span"); # (1) $ tpl -\u003e createphild ($ მშობელი, "div", "ახალი ელემენტი"); # (2)
      (1) მშობლის მოძიება არ არის პირადობის მოწმობით და ტეგში იპოვის პირველი შესაფერისი
      (2) თუ ჩვენ არ გვჭირდება ატრიბუტები, მაგრამ მხოლოდ ახალი ნივთის ღირებულება, თქვენ არ შეგიძლიათ გადასცეს მათ

      ჩვენ მივიღებთ:

      ახალი ელემენტი

      და ამ მანიპულაციების შემდეგ, მე უკვე მოვუწოდებ showpage. და აქ ჩვენ შეუფერხებლად მივუახლოვდით კიდევ 2 საინტერესო მომენტს.
      წარმოიდგინეთ სიტუაცია, რომელიც ჩვენ გვყავს თარგი, ვარაუდობენ, რომ ეს არის სია. TPLATE სიაში, მაგალითად, მობილური ტელეფონები:

      (Content.brand)

      (Content.model)

      (Content.info)

      თუ ჩვენ მხოლოდ 1 ტელეფონის ინფორმაციას მივიღებთ, ის უბრალოდ შეიცვლება ცვლადების მიხედვით, ხოლო თუ რამდენიმე ტელეფონით დაუყოვნებლივ გავიარეთ ინფორმაცია, მაშინ კლასი ამ საიტზე რამდენჯერმე გადაეცემა, როგორც ღირებულებების ვარიანტები . და ეს გახდის თავის თავს, მაგალითად, მაგალითად, კლასის Xtemplate, რომელიც აღირიცხება თითოეული ღირებულების ზარები მინიჭება და parse
      ჭეშმარიტი არ არის ძალიან მოსახერხებელი მომენტი, თუ ამ ბლოკის შემდეგ კიდევ უფრო მეტია, მაგალითად:

      (Content.brand)

      (Content.model)

      (Content.info)
      ჯერ კიდევ რამდენიმე ბლოკი

      შემდეგ ასეთ სიტუაციაში ჩვენ უნდა გამოვიყენოთ პატარა შეასრულა, შეავსოთ ჩვენი მობილური ტელეფონი

      (Content.brand)

      (Content.model)

      (Content.info)
      ჯერ კიდევ რამდენიმე ბლოკი

      ამ შემთხვევაში, ყველა მობილური ტელეფონი ერთმანეთის შემდეგ გამოჩნდება, შიგნით
      , და "ზოგიერთი სხვა ერთეული" დარჩება ქვემოთ.

      და თუ მე არ მახსოვს არაფერი, მაშინ ბოლო მომენტში დასძინა შინაარსი სხვა შაბლონები მიმდინარე თარგი.
      მე კვლავ მოვუწოდებ თქვენს ფანტაზიას.

      წარმოიდგინეთ, რომ Gauge- ს სურს Page- ის შინაარსი. Html ფაილი დაემატოს სიაში გვერდი და როდესაც კლასი ხედავს ამ tag, ის შეცვლის მას შინაარსი გვერდზე. Html ფაილი

      ასეთი ჩანართების რაოდენობა არ არის შეზღუდული და მათი ადგილმდებარეობა აბსოლუტურად არ არის კრიტიკული, ასე რომ თქვენ შეგიძლიათ ჩაწეროთ მათ არაფერი და ნებისმიერ რაოდენობით.

      ეს ალბათ ყველაფერი, თუ მე მახსოვს რაღაც, მე მოვუწოდებ დამატებით. გმადლობთ ბოლომდე კითხვისთვის.

      Tags: PHP, კლასი, თარგი, tenderizer, parser