Sveiki. Vēlos prezentēt vēl vienu velosipēdu, kas rakstīts PHP, izmantojot dokumenta objekts Modelis. Kāda ir tā atšķirība no citiem tās pašas sugas trīsriteņu pārstāvjiem? Patiesībā atšķirību nav tik daudz, tas apvieno labāko no daudziem. Piemēram:
1. Pilnīga html un php atdalīšana.
2. Nav papildu etiķetes tipa veidnēs
3. Iespēja iegult izkārtojumā citu šablonu failu saturu gan no php, gan izmantojot speciālu tagu izkārtojumā.
4. Spēja izveidot jebkuru html tagu lidojumā.
5. Iespēja ietaupīt uz html failu viss, kas tika radīts un savākts.
6. Pirms veidnes ģenerēšanas pārbaudiet pieprasītās lapas html faila esamību.
Lai visiem uzreiz būtu skaidrs, cik ērti un ērti to lietot, pastāstīšu un parādīšu, kā es to izmantoju, veidojot vienu no saviem projektiem (man ir aizdomas, ka pārrakstīšu visus savus projektus par to).
Pirmā lieta, ko parasti daru, ir iegūt visu informāciju no datu bāzes par lapu ( atslēgvārdi, lapas apraksts, veidnes nosaukums un css un js failu adreses). Es to visu saglabāju masīvā $head. Pēc tam es iegūstu saturu no datu bāzes un saglabāju to $page masīvā. Un es iešu strādāt ar klasi.
Tātad, vispirms es izsaucu klases konstruktoru un nododu tam visus nepieciešamos parametrus:
$tpl = jauna veidne; $tpl -> ext = TPL_EXTENSION; # faila paplašinājums veidņu direktorijā $tpl -> htm = CACHE_EXTENSION; # paplašinājums jau ģenerētajām lapām $tpl -> skin_dir = DIR_TEMPLATES; # direktorijs, kurā ir visas vietņu veidnes (piemēram, veidnes) $tpl -> js_dir = DIR_JS; # direktorijs, kur meklēt JS failus $tpl -> css_dir = DIR_CSS; # direktorijs, kurā atrodas CSS $tpl -> img_dir = DIR_IMG; # direktorijs, kurā attēli ir $tpl -> skin = $_SESSION["āda"]; # veidnes nosaukums, kuru vēlos izmantot $tpl -> cache = DIR_CACHE; # kur saglabāt gatavo html $tpl -> log = FILE_T_LOGS; # kur rakstīt žurnālus $tpl -> tag_start = SYMBOL_START_TAG; # Simbols, ar kuru sākas mainīgie veidnē $tpl -> tag_end = SYMBOL_END_TAG; # Rakstzīme, kas beidz mainīgos lielumus veidnē $tpl -> dir_delimeter = DIRECTORY_SEPARATOR; $tpl -> atstarpe = SYMBOL_SPACE; # rakstzīme, kas aizstāj atstarpi.
Fuf, šķiet, ka visi mainīgie ir pārnesti, ejam tālāk.
Lai nepiespiestu klasi veikt papildu darbus, vispirms pārbaudām, vai mums jau ir gatavs pieprasītās lapas Html fails.
if($tpl -> TestPageStatus() === TRUE) (pieprasa $tpl -> cacheFileName; ) else ( $tpl -> page("index"); # nododiet veidnes faila nosaukumu, starp citu, jūs var nodot vairākus no tiem, atdalot ar komatiem $tpl -> assign("HEAD",$head); $tpl -> assign("CONTENT",$page); $tpl -> build(); # komanda, lai izveidotu veidni $tpl -> ShowPage(); # izvade.)
Tās faktiski ir visas metodes, kas jums jāizmanto, lai parādītu lapu.
Tagad apskatīsim vēl dažas noderīgas šīs klases metodes. Pieņemsim, ka visu nepieciešamo esam jau nodevuši klasei, bet vēl neesam devuši tai komandu izvadīšanai, jo pēkšņi atcerējāmies, ka veidnē jāizveido vairāki Html tagi. Tas ir arī ļoti viegli izdarāms. Vispirms mums jāatrod bloks, kurā vēlamies kaut ko pievienot. To var atrast divos veidos:
$tpl -> findById("atrastMe"); $tpl -> findByTagName("div");
FindById metode loģiski nozīmē, ka visi ID tagi veidnē ir unikāli. Un metode findByTagName atgriezīs pirmo atbilstošo.
Meklēšanas rezultātā iegūtais rezultāts ir jānodod metodei $tpl -> createChild(), lai atrastajā elementā varētu izveidot bērnu tagus. Metode createChild, starp citu, pēc jauna elementa izveidošanas atgriež to mums, lai mēs varētu izmantot jaunizveidoto elementu kaut kur citur.
Bakstoties un eksperimentējot, atradu 3 veidus, kā veidnē izveidot tagus, tāpēc parādīšu uzreiz 3 piemērus. 1. piemērs:
Mums ir jārada
iekšā$parent = $tpl -> findById("vecāks"); $tpl -> izveidotBērns($parent,"div", "id=bērns, klase=tests");
Mēs iegūstam:
2. piemērs:
Mums ir jārada
$parent = $tpl -> findById("vecāks"); $tpl -> createChild($parent,"div", "id=bērns,klase=tests", "Daži teksts");
Mēs iegūstam:
3. piemērs:
Mums ir jārada
$parent = $tpl -> findByTagName("span"); # (1) $tpl -> createChild($parent, "div", "Jauns elements"); # (2)
(1) Meklējot vecākus nevis pēc ID, bet pēc atzīmes, tiks atrasts pirmais atbilstošais
(2) Ja mums nav nepieciešami atribūti, bet tikai jaunā elementa vērtība, tad tos nevar nodot
Mēs iegūstam:
Un pēc šīm manipulācijām es jau saucu ShowPage. Un šeit mēs gludi pietuvojāmies vēl 2 interesantiem punktiem.
Iedomāsimies situāciju, ka mums ir veidne, pieņemsim, ka šī ir list.tpl veidne ar, piemēram, mobilo tālruņu sarakstu:
(SATURA zīmols)
(SATURS.Modelis)
(SATURS.Informācija)Ja mēs pārsūtījām informāciju tikai pa 1 tālruni, tad mainīgie vienkārši tiks aizstāti ar to vērtībām, un, ja mēs pārraidījām informāciju pa vairākiem tālruņiem vienlaikus, tad klase šo sadaļu kopēs tik reižu, cik ir saņēmusi vērtību opcijas. Un viņš to darīs pats, atšķirībā no, piemēram, klases xTemplate, kurai bija jāizsauc assign un parsēšana katrai vērtībai
Tiesa, ir viens ne pārāk ērts brīdis, ja pēc šī bloka ir vēl daži, piemēram:
(SATURA zīmols)
(SATURS.Modelis)
(SATURS.Informācija)Tad šādā situācijā nāksies pielietot nelielu viltību, iepakojot mobilo telefonu
(SATURA zīmols)
(SATURS.Modelis)
(SATURS.Informācija)Šajā gadījumā visi mobilie tālruņi parādīsies viens pēc otra iekšpusē , un "Cits bloks" paliks apakšā.
Un, ja neko neesmu aizmirsis, tad pēdējais brīdis ir citu veidņu satura pievienošana esošajai veidnei.
Es vēlreiz vēršos pie jūsu iztēles.
Iedomājieties, ka izkārtojuma izstrādātājs vēlas, lai faila page.html saturs tiktu pievienots faila list.html blokam, tāpēc viņš to pievieno pareizajā faila list.html vietā.
Šādu ieliktņu skaits nav ierobežots un to atrašanās vieta absolūti nav kritiska, tāpēc varat tos ievietot pēc saviem ieskatiem un jebkurā daudzumā.
Tas laikam arī viss, ja kaut ko atcerēšos, došu ziņu. Paldies, ka izlasījāt līdz beigām.
Tagi: php, klase, veidne, veidņu dzinējs, parsētājs
Pēc radīšanas info-fails, principā tēma jau ir definēta. Tas nozīmē, ka varat doties uz tēmu pārvaldības sadaļu http://mysite.ru/admin/build/themes un iekļaujiet tajā savu tēmu. Dabiski, ka pēc ieslēgšanas jūs neredzēsiet nekādu dizainu - lapa iegūs stilu "melns uz balta" - melns teksts uz balta fona.
Tomēr es vēlos atzīmēt, ka, neskatoties uz to, ka mūsu tēmā nav citu failu, izņemot mytheme.info nemelo, vietne darbosies tāpat kā iepriekš - parādiet visu saturu, pievienojiet blokus reģioniem ( http://mysite.ru/admin/build/block) Un tā tālāk. Tas ir saistīts ar faktu, ka Drupal kodols ietver nepieciešamie moduļi, kas pat tad, ja jūsu motīvā nav neviena faila (izņemot informācijas failu), varat turpināt darbu ar Drupal.
Principā visa veidnes izveide ir saistīta ar veidņu failu pārklāšanos (tiem ir paplašinājums .tpl.php) mūsu standarta moduļi CMS.
Vissvarīgākais tpl fails (tpl ir saīsinājums veidne, modelis) ir page.tpl.php. Viņš ir atbildīgs par katras vietnes lapas izveidi. Apskatīsim, no kā sastāv veidnes fails:
- html kods
- php kods
- javascript kods(nav nepieciešams)
Drupal nodod vietnes datus katram veidnes failam standarta mainīgo veidā. Katram veidnes failam ir 2 veidu mainīgie:
- mainīgie, kas tiek nodoti tikai šim failam
- mainīgie, kas tiek nodoti visiem failiem
Šeit ir visu mainīgo saraksts page.tpl.php:
Vispārīgi mainīgie (visiem failiem):
- $bāzes_ceļš- bāzes ceļš, kur tika instalēts Drupal
- $css- css failu masīvs, kas savienots ar pašreizējo veidnes failu
- $direktorijs- ceļš uz mapi, kurā ir instalēta tēma
- $is_front- atgriež TRUE, ja atrodaties galvenajā lapā
- $logged_in- atgriež TRUE, ja esat pieteicies
- $is_admin- atgriež TRUE, ja jums ir administratora piekļuve
Lapas metadati
- $valoda- (priekšmets) Pašreizējā valoda kas tiek parādīts vietnē
- $valoda->valoda- satur tā teksta attēlojumu
- $valoda->rež- satur valodas virzienu. Tas būs "ltr" (no kreisās uz labo) vai "rtl" (no labās uz kreiso)
- $head_title- modificēta lapas nosaukuma versija izmantošanai starp tagiem
- $galva- ievietots starp tagiem . Satur meta tagus, atslēgvārdus utt.
- $styles- kalpo visu lejupielādei css- faili uz pašreizējo lapu
- $scripts- kalpo visu lejupielādei javascript" s uz pašreizējo lapu
- $body_classes- nodarbību komplekts css par atzīmi . Satur informāciju par kolonnu pašreizējo atrašanās vietu vietnē, to skaitu, pašreizējo URL "e" utt.
Informācija par vietni
- $front_page- vietnes galvenās lapas adrese. Lai atsauktos, labāk ir izmantot šo mainīgo mājas lapa, jo tajā ir iekļauta domēna valoda un prefikss
- $logotips- ceļš uz vietnes logotipu, ja tas ir iekļauts vietnē
- $site_name- vietnes nosaukums. Var būt tukšs, ja tas ir atspējots informācijas faila funkcijās. Konfigurēts vietnē mysite.ru/admin/settings/site-information
- $site_slogan- vietnes sauklis. Var būt tukšs, ja tas ir atspējots informācijas faila funkcijās. Konfigurēts vietnē mysite.ru/admin/settings/site-information
- $misija- vietnes misija. Var būt tukšs, ja tas ir atspējots informācijas faila funkcijās. Konfigurēts vietnē mysite.ru/admin/settings/site-information
Navigācija
- $search_box- satur html kodu, kas parāda meklēšanas joslu. Var būt tukšs, ja to izslēdzat informācijas failā
- $primary_links
- $sekundārās_saites- masīvs, kurā ir vietnes navigācijas saites, ja tās ir atļautas informācijas faila funkcijās
Noklusējuma lapas saturs
- $ pa kreisi- novads. Satur html kodu kreisajai kolonnai. Ja informācijas failā iestatāt kādus reģionus, tas pazūd
- $maizes drupata - "maizes drupačas" priekš Pašreizējā lapa
- $title- lapas nosaukums
- $palīdzība- dinamiski padomi, kas galvenokārt tiek rādīti administrēšanas panelī
- $ziņojumi- Vietnē parāda kļūdu un brīdinājuma ziņojumus
- $tabs- saites (cilnes), kas savieno pašreizējo lapu ar tās apakšlapām (piemēram, rakstam - ar tā rediģēšanas lapu)
- $saturs- pašreizējās lapas saturs
- $pa labi- novads. Satur labās kolonnas html kodu. Ja informācijas failā iestatāt kādus reģionus, tas pazūd
Apakšējā zona/aizvēršanas dati
- $feed_icon- līnija ar visām ikonām atsauksmes pašreizējai lapai
- $footer_message- ziņojums lapas apakšā. Konfigurēts vietnē mysite.ru/admin/settings/site-information
- $kājene- novads. Satur html kodu lapas apakšai. Ja informācijas failā iestatāt kādus reģionus, tas pazūd
- $slēgšana- noslēguma etiķete visiem moduļiem, kas mainīja lapu. Šis mainīgais ir jāparāda pēc visa dinamiskā satura. Labākais pirms BODY taga aizvēršanas
Visi šeit ir uzskaitīti standarta mainīgie. Taču savus mainīgos šeit varat pievienot vai nu kā reģionus, izmantojot info-failu vai jebkurā citā lomā, izmantojot failu template.php(par viņu nedaudz vēlāk).
Tagad es parādīšu, kādam kodam jābūt page.tpl.php un kādu kodu to pēc tam interpretē pārlūkprogrammas. Šeit ir koda fragments no page.tpl.php:
Pirmajā rindā tiek pārbaudīts, vai pašreizējai lapai vispār ir nosaukums. Ja tā nav, atkļūdotājs vienkārši izlaidīs šo kodu un neiekļūs tajā. Ja nosaukums pastāv, tad tags tiks pievienots lapas html kodam
, pēc tā tiks nodrukāts lapas nosaukums, un visa lieta tiks aizvērta ar tagu
. Ja pārlūkprogrammā aplūkojat šīs lapas kodu, tas izskatītos šādi:
4. nodarbība Nepieciešamie faili, lai izveidotu veidni. Lapa.tpl.php
Gandrīz visi vietnes mainīgie ir iesaiņoti šādā veidā. Tas tiek darīts, lai mēs varētu noteikt satura stilus, iepriekš nezinot, kāds tas būs.
Tas izskatās šādi standarta fails page.tpl.php kas nāk ar Drupal. Mainiet klašu nosaukumus, pārkārtojiet mainīgos - un skatieties, kas notiek. Tas ir nepieciešams, lai "sajustu", kā tas darbojas un kas tiek izvadīts rezultātā.
"-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> "http://www.w3.org/1999/xhtml" xml:lang= "valoda?>" lang= "valoda?>" rež. = "rež ?>">
"title="(!LANG:"rel="mājas">drukāt $vietnes_nosaukums ; ?>
Datu iegūšanas loģikas atdalīšana no loģikas to parādīšanai ir ļoti svarīga tīmekļa izstrādes sastāvdaļa.
Jebkurš programmētājs, kurš ir pacēlies nedaudz virs "Sveika pasaule" līmeņa, sāk izjust nepieciešamību pēc šādas atdalīšanas. Bet ne visi nonāk pie pareiziem secinājumiem un lēmumiem.
Tāpēc es šeit sniegšu vissvarīgākos noteikumus:
1. Saņemšanas kods un datu displeja kods ir jāatdala.
2. Jebkāda izņemšana jāsāk tikai pēc tam, kad ir sagatavoti visi dati.
3. Līdz ar to jebkuram skriptam būtu jāattiecas tikai uz datu apstrādi. Pēc tam tas var vai nu nosūtīt kādu HTTP galveni, vai izsaukt veidni, nododot tai sagatavotos datus, vai abus.
4. Kādu veidņu dzinēju izmantot, ir desmitā lieta. Vienkāršākais un pieejamākais ir pats PHP, tāpēc par to tiks sniegti piemēri.
Maldi
Droši vien tīmekļa programmēšanā nav nevienas tēmas, kas būtu tik acīmredzama, cik nesaprotama kā veidnes. Ikviens agrāk vai vēlāk nonāk pie secinājuma par nepieciešamību izmantot veidnes. Bet tas nez kāpēc nāk caur kaut kādiem mežonīgākajiem maldiem un fantāzijām.
Vienkāršākais un acīmredzamākais nepareizs uzskats ir tāds, ka iesācēji atsevišķā failā ievietotu veidni sauc par "dizainu" - kopīgu html visām vietnes lapām. Un uz to viņi nomierinās. Dinamiska informācija, bez vilcināšanās, izvadot veco labo atbalsi :-)
Faktiski veidņu dzinējs galvenokārt nodarbojas ar vietnes lapu mainīgā satura attēlošanu. Un "dizaina" noslēgums ir sekundārs uzdevums.
Ir divas galvenās fantāzijas:
1. Veidnes ir vajadzīgas "dizaineram", lai viņš tās varētu rediģēt, nesaprotot PHP.
2. Tāpēc veidnes kalpo PHP atdalīšanai no HTML.
Mēģināsim padomāt par pirmo apgalvojumu. Kas ir dizainers? Šī ir persona, kas strādā programmā Photoshop. Viņš visbiežāk nezina HTML vispār. Un vai nu pie veidnes strādā speciāls maketētājs vai - visbiežāk... pats programmētājs! Smieklīgi, vai ne?
Tagad sekas, par PHP atdalīšanu no HTML. Labi. Mūsu priekšā ir svētais atdalīšanās mērķis. Tāpēc mēs izgudrojam Smarty un rakstām:
(foreach key=cid item=con from=$contacts)
($con.name) - ($con.nick)
(/katram)
Vēl jocīgāk.
"Dizaineris", kuram viss tika iesākts, no laimes noģībst.
Teorija
Izrādās, ka mūsu iemesli, kāpēc nolēmām izmantot veidnes, nav ne santīma vērti. Un ko tagad - nav vajadzīgas, izrādās, veidnes vispār? Vajadzēja. Bet vispirms jums ir jāatbild sev uz jautājumu - "kāpēc?" Par ko ir nepieciešamas veidnes. Un pārbaudiet atbildi ar praksi. Šo jautājumu esmu cilvēkiem uzdevis daudzas reizes. Bet gandrīz neviens nevar atbildēt uz to. Kāpēc viņam vajadzīgas veidnes. Izrādās, ka cilvēki kaut ko dara, nezinot, kāpēc.
Tas ir pats smieklīgākais.
Savas tīmekļa programmētāja karjeras laikā esmu sev formulējis trīs iemeslus, kāpēc man personīgi ir vajadzīgas veidnes. Patiesībā tās ir divas. Bet galu galā viņi nonāk pie viena:
Viens kods — vairāki skati.
Bieži gadās, ka vienas informācijas vietā ir jāuzrāda cita. Piemēram, kods darbam ar datu bāzi ziņu teksta vietā saņem kļūdas ziņojumu. Šajā gadījumā ziņu lapas vietā jārāda pavisam cita - ar atvainošanos un lūgumu atgriezties vēlāk. Veidnes to atvieglo.
Bieži vien viena un tā pati informācija ir jāparāda vairākos veidos. Piemēram - parasta lapa un lapa drukāšanai. Informācija ir tāda pati, tās saņemšanas kods ir vienāds, bet izejas kods ir atšķirīgs. Saskaroties ar šādu situāciju, jūs ļoti ātri sadalīsit savu kodu divās daļās, no kurām viena ir atbildīga par izvadi, bet otrā nav atbildīga. Vēl viens piemērs: pieņemsim, ka mēs vēlējāmies parādīt informāciju nevis tieši HTML, bet gan ar AJAX pieprasījumu JSON formātā. Ja mēs izmantojām veidnes programmu, mēs mainām tieši vienu rindiņu savā kodā - izsaucot veidnes programmu, izsaucot json_encode() . Un, ja mums izvade būtu sajaukta ar datu iegūšanas kodu, tad viss kods būtu jāpārraksta!
Situācija ir nedaudz līdzīga: pieņemsim, ka mūsu skripts ir divās vietnēs. Plus kopija mājās. Un šeit mājās mēs atradām lielu kļūdu. Viņi viņu pieķēra. Tagad mums ir jāatjaunina kods vietnēs. Un šeit tas ir - patiesības brīdis: ja veidnes tika izmantotas pareizi, tad mēs vienkārši augšupielādējam kodu abās vietnēs, un viss turpina darboties, it kā nekas nebūtu noticis! Šāda situācija, manuprāt, ir ideāls tests izvēlētajai pieejai šablonēšanai.
Vēl viens svarīgs punkts, ko daudzi palaiž garām (savā teorētiskajā spriešanā, vienlaikus pastāvīgi saskaroties ar to praksē!) - skripta izpildes secība ne vienmēr atbilst izvades secībai veidnē. Mācību grāmatas piemērs - raksta nosaukuma parādīšana tagā
Jāatceras arī, ka papildus PHP tekstam skripti parāda arī HTTP galvenes. Kas ir jāparāda pirms jebkura teksta vai pat teksta vietā kopumā (ja, piemēram, vēlamies novirzīt lietotāju uz citu lapu). Ja vispirms ieviesīsim aplikācijas loģiku, vienlaikus neko nerādot, tad vēlamās HTTP galvenes iedošana mums nesagādās problēmas.
Jums var būt savi iemesli veidņu izmantošanai. Bet tikai ar vienu nosacījumu - šiem iemesliem ir jābūt patiesai, vitālai nepieciešamībai, nevis "augstākiem apsvērumiem" un bažām par dažiem jums nezināmiem cilvēkiem.
Prakse
Tagad pāriesim no teorijas uz praksi.
Vienkāršākajā gadījumā jebkuras lapas attēlošanā vienmēr piedalīsies divas veidnes: vispārīga vietnes veidne un satura veidne konkrētai lapai.
Pieņemsim, ka vēlamies izveidot lapu ar saitēm uz draugu vietnēm.
Šajā gadījumā vienkāršotais kods izskatītos šādi:
Pats fails links.php. Izvada NEKO. Tikai sagatavo datus un pēc tam izsauc veidni.
// iespējot iestatījumus.
iekļaut "settings.php" ;
// iegūt datus no datu bāzes, definēt mainīgos
$pagetitle = "(!LANG:Saites"
;!}
$DATA = $db -> getAll("SELECT * FROM saites" );
//iestatiet lapas veidni un izsauciet vispārējo vietnes veidni
$tpl = "tpl_links.php" ;
iekļaut "tpl_main.php" ;
Vispārīga veidne (tpl_main.php):
include $tpl ?>
Īstajā vietā tajā ir iekļauta mūsu lapas veidne (tpl_links.php):
=$pagetitle?>
- "target="_blank">=$row [ "name" ] ?>
foreach($DATA as $row ): ?>
endforeach ?>
Vienkāršākais veids ir izveidot veidnes, pamatojoties uz statiskām lapām, kas jau ir izkārtotas HTML. Apsveriet iespēju izveidot un savienot veidni, izmantojot piemēru. Pieņemsim, ka jums jau ir HTML fails ar šādu saturu:
<html > <galva> <metaname= "apraksts"saturs= /> <metaname= "atslēgvārdi"saturs= /> <virsraksts >virsraksts > <saite href= stils.css rel= "stila lapa" tips= "text/css" /> galva> <ķermenis>// izvēlnes sākums<tabulas robeža= "1" > <tr > <td ><href= "/" > <b> mājasb>a >td > tr > <tr > <td ><href= "/par/"> Par mania >td > tr > <tr > <td ><href= "/me_and_me/"> Es un pasaules kundzībaa >td > tr > <tr > <td ><href= "/kontakti/"> Kontaktia >td > tr > tabula >// izvēlnes beigas<h1 > Galvenā lapah1 > <p > p > <p > Teksts par mani: Teksts par mani: Teksts par mani: Teksts par mani:p > <p > Teksts par mani: Teksts par mani: Teksts par mani: Teksts par mani:p > <p > Teksts par mani: Teksts par mani: Teksts par mani: Teksts par mani:p > ķermenis> html >Lai CMS pievienotu veidni, direktorijā tpls/content ir jāizveido fails, piemēram, test.tpl , un tajā jāielīmē savs HTML kods. CSS fails jāievieto mapē css/cms un jānosauc style.css . Attēlus vēlams ievietot attēlu mapē. Neaizmirstiet mainīt ceļu uz visiem attēliem un CSS failiem.
komentēt
Veidnes faila nosaukumā neizmantojiet krievu burtus!
Lai sistēma “redzētu” jauno veidni un sāktu to lietot lapu attēlošanai, veidne ir jāpievieno sistēmai. Lai to izdarītu, dodieties uz moduļa " Struktūra" iestatījumiem, cilni " Veidnes" ( http://yourdomain.ru/admin/content/config/ ). Jūs redzēsiet sarakstu ar jau instalētajām veidnēm katrā domēnā, kas pastāv atlasītās valodas versijā.
Lai pievienotu jaunu veidnes failu, aizpildiet laukus " Veidnes nosaukums” (piešķiriet tam kādu jēgpilnu nosaukumu, piemēram, Mans testa modelis"") un Faila nosaukums (mūsu gadījumā test.tpl) un noklikšķiniet uz "Saglabāt".
Ja vēlaties, lai šī veidne tiktu izmantota kā noklusējuma veidne, atzīmējiet tai blakus lodziņu "Pamata". Šī veidne tagad tiks atlasīta pēc noklusējuma veidņu atlases nolaižamajā izvēlnē. Tas tiks izmantots arī, lai parādītu sistēmas lapas, kurās tiek izmantota noklusējuma veidne (reģistrācija, paroles atkopšana, vietnes karte).
Veidnes būs redzamas nolaižamajā sarakstā, rediģējot katru lapu:
Tādējādi vienā vietnē vienlaikus var izmantot daudzas veidnes, izvēloties atbilstošu veidni gan vienai lapai, gan lapu grupai.
Mēģiniet izveidot jaunu lapu (pārliecinieties, ka noformējuma veidnē ir atlasīta jaunā veidne) un skatiet, kas notiek vietnē.
Jūsu HTML veidnei vajadzētu parādīties vietnē. Bet tagad tas ir statisks. Tagad jums tas jāpadara dinamisks.
Pirmkārt, jums ir jānosaka, kuras HTML koda daļas mainīsies. Mūsu gadījumā mainīsies:
loga virsraksts
atslēgvārdi un apraksta metatagi;
teksta virsraksts
;
faktiskais teksts;
vietnes izvēlne.
Tas nozīmē, ka mums ir nedaudz jāpastrādā ar HTML veidni un jāievieto atbilstošie makro, nevis jāmaina sadaļas.
Piemēram, HTML faila sākumā ir iestatīti metatagi un nosaukums:
<metaname= "apraksts"saturs= "Vasilija Pupkina vietnes apraksts" /> <metaname= "atslēgvārdi"saturs= "Vasja Vasilija Pupkina oficiālā vietne" /> <virsraksts > Vasja Pupkina vietne: Galvenā lapavirsraksts >Mēs tos aizstājam ar atbilstošajiem makro (makro saraksts ir sniegts pielikumā):
<metaname= "apraksts"content="%description%" /> <metaname= "atslēgvārdi" saturs= "%keywords%" /> <virsraksts >%title%virsraksts >Tagad, ģenerējot lapas, sistēma ņems metatagus un nosaukumus, kas ir norādīti katrai lapai atsevišķi, un aizvietos tos, nevis atbilstošos makro. Makro nosaukumus ir viegli atcerēties.
Mēs darīsim to pašu ar teksta nosaukumu. Tas bija šādi:
<h1 > Galvenā lapah1 >Un tā arī kļūs. Teksta virsraksts tiek parādīts ar makro %header%:
<h1 >%header%h1 >Mainās arī lapas pamatteksts:
<p > Teksts par mani: Teksts par mani: Teksts par mani: Teksts par mani:p > <p > Teksts par mani: Teksts par mani: Teksts par mani: Teksts par mani:p > <p > Teksts par mani: Teksts par mani: Teksts par mani: Teksts par mani:p > <p > Teksts par mani: Teksts par mani: Teksts par mani: Teksts par mani:p >Ir makro, lai parādītu lapas pamattekstu. %content% :
%content%Līdz faila sākumam starp tagiem
un ievietot makro:Šī līnija nodrošina ātrās rediģēšanas funkciju un citas noderīgas funkcijas. Ar to jūs varat noklikšķināt Shift +D, ātri pārejiet uz vietnes pašreizējās lapas vai jebkura tās fragmenta rediģēšanu.
Rezultātam jābūt šādam:
<html > <galva> <metaname= "apraksts"content="%description%" /> <metaname= "atslēgvārdi" saturs= "%keywords%" /> <virsraksts >%title%virsraksts > <saite href= stils.css rel= "stila lapa" tips= "text/css" /> % system includeQuickEditJs()%galva> <ķermenis>// izvēlnes sākums<tabulas robeža= "1" > <tr > <td ><href= "/" > <b> mājasb>a >td > tr > <tr > <td ><href= "/par/"> Par uzņēmumua >td > tr > <tr > <td ><href= "/projekti/"> Projektia >td > tr > <tr > <td ><href= "/kontakti/"> Kontaktia >td > tr > tabula >// izvēlnes beigas<h1 >%header%h1 >%content%ķermenis> html >Tātad, mēs saglabājam veidnes failu un skatāmies uz rezultātu. Tagad lapa ir gandrīz pilnībā dinamiska, izņemot izvēlni. Ir nepieciešams "atdzīvināt" vietnes izvēlni. Apskatīsim, kā tiek izkārtota izvēlne:
// izvēlnes sākums<tabulas robeža= "1" > <tr > <td ><href= "/" > <b> mājasb>a >td > tr > <tr > <td ><href= "/par/"> Par mania >td > tr > <tr > <td ><href= "/me_and_me/"> Es un pasaules kundzībaa >td > tr > <tr > <td ><href= "/kontakti/"> Kontaktia >td > tr > tabula >// izvēlnes beigasIzvēlne sastāv no vienumiem. Pati ēdienkarte ir kaut kā veidota, un arī vienumiem ir dizains. Piemēram, visai izvēlnei var būt rāmis vai fons, pašreizējais izvēlnes vienums var būt treknrakstā utt. Arī vienā izvēlnē var būt dažādi līmeņi.
Izvēlieties izvēlnes rāmi:
// izvēlnes sākums<tabulas robeža= "1" > tabula >// izvēlnes beigasIzvēlnes vienums izskatās šādi:
<tr > <td ><href= "/kontakti/"> Kontaktia >td > tr >Pašreizējais izvēlnes vienums ir formatēts citādi:
<tr > <td ><href= "/" > <b> mājasb>a >td > tr >Sākotnējā izvēlnes veidne atrodas /tpls/content/menu/default.tpl failā un izskatās šādi:
%text%