Dünaamilised leheküljed PHP-s. PHP. Dünaamiline lehe loomine Looge tavaline lehe renderduskomponent

Viimases tunnis mõtlesime välja, millistest plokkidest reisimall koosneb, et saaksime tööle asuda. Esiteks loome kaks kausta:

pildid – see kaust sisaldab kõiki malli kujundamiseks kasutatud graafilisi faile. Sest Meil pole veel disainiarendusi, siis kukutage üks graafiline fail sellesse kausta, muidu Joomla ei installi malli ja annab veateate, kui kaust on tühi.

TÄHELEPANU: Mallipiltide kaust ei sisalda sisugraafikat!

css – see kaust sisaldab kaskaadlaaditabeli failid. Esmalt paneme sellesse tühja template.css faili, mida kasutatakse saidielementidele erinevate kujundusstiilide määramiseks.

Järgmisena võite hakata looma põhifaili index.php, mis määrab saidi elementide visuaalse paigutuse ja ütleb Joomla CMS-ile, millisesse plokki erinevad komponendid ja moodulid paigutada. Fail on PHP ja HTML kombinatsioon.

Kasutan koodi kirjutamisel alati ainult Macromedia Dreamweaverit. Suurepärane programm, soovitan seda kindlasti algajatele, sest... Kui tegite koodiga töötades vea, tõstab programm teie vea kindlasti esile.

Saidilt leiate Macromedia Dreamweaveri õpetuse. Kui kavatsete veebisaite arendada, peaksite selle programmi vähemalt algtasemel valdama, et mallikoode vigadeta redigeerida.

Lehe elementide (plokkide) positsioneerimine toimub spetsiaalselt HTML koodi abil, kasutame DIV silte. Aga kuidas meie sait Joomla mootoril tööle hakkab, st. see on dünaamiline, siis peate kasutama ka PHP keelt. Tema abiga teeme kindlaks, millistes plokkides asuvad väljundmoodulite asukohad ja kuidas neid positsioone nimetatakse, kas plokid alandatakse või mitte. Ühendame välistest failidest laadilehed, sisukeele, määrame, kuidas muutub saidi suurus jne.

index.php

Faili päis

Faili päis koosneb mitmest osast. PHP päise koodi esimene osa on tagada, et failile ei pääsetaks turvakaalutlustel otse juurde.

< ?php
määratletud ("_JEXEC") või sureb ;
JHtml::_("behavior.framework" , true ) ;
$rakendus = JFactory::getApplication() ;
?>
< ?php echo "< ?" ; ?> xml version="1.0" kodeering=" < ?php echo $see-> _charset ?> "?>

DOCTYPE on väga oluline parameeter, mille põhjal brauser otsustab, kuidas seda lehte renderdada ja kuidas CSS-i tõlgendada.

< ! DOCTYPE html PUBLIC "- / / W3C/ / DTD XHTML 1.0 Strict/ / EN""http: // www.w3.org/ TR/ xhtml1/ DTD/ xhtml1- range.dtd">

Järgmine koodilõik hangib globaalsest konfiguratsioonist installitud keele.

< html xmlns= "http:// www.w3.org/ 1999/ xhtml" xml:lang= " < ?php echo $see-> keel; ?>" lang= " < ?php echo $see-> keel; ?>" dir = " < ?php echo $see-> suund; ?>" >

Järgmine on koodiosa, mis sisaldab täiendavat päise teavet, mis on määratud globaalses konfiguratsioonis. Seda teavet näete mis tahes veebilehe lähtekoodi vaadates. Eelkõige on need metasildid, millest te juba teate.

< head>
< jdoc:include type= "head" / >

Järgmised päiseread sisaldavad linke peamiste Joomla CSS-stiilide juurde.

< link rel= "stylesheet" href= "< ?php echo $see-> baseurl ?> / templates/ system / css/ system .css" type="tekst /css" / >
< link rel= "stylesheet" href= "< ?php echo $see-> baseurl ?> / templates/ system / css/ general.css" type="tekst /css" / >

Mallide kujundusstiilide kasutamiseks lingime kaskaadlaadilehti template.css sisaldava failiga, mis asub CSS-i kaustas. Vahet pole, et see fail praegu tühi on, peaasi on see ühendada, kujundusega tegeleme hiljem, kui malli Joomlasse installime. Nii on tulemust lihtsam jälgida.

< link rel= "stylesheet" href= "< ?php echo $see-> baseurl ?> /mallid/< ?php echo $see-> mall ?> /css/template.css" type="tekst /css" / >

Järgmine koodilõik võimaldab meil vasak- või parempoolsed veerud ahendada, kui vasak- ja parempoolses positsioonis pole ühtegi moodulit. Kui mõlemad veerud on ahendatud, võtab sisu enda alla 100% lehe laiusest. Kui kaasatakse ainult üks veerg, võtab sisu 80%. Kui kaks veergu on lubatud, moodustab sisu 60% lehe laiusest.

< ?php
kui ($ see-> countModules("vasak ja parem" ) = = 0) $contentwidth = "100" ;
kui ($ see-> countModules("vasak või parem" ) = = 1) $contentwidth = "80" ;
kui ($ see-> countModules("vasak ja parem" ) = = 1) $contentwidth = "60" ;
?>

Päis sulgub

< / head>

< body>

Plokk "Lehekülg" sisaldab ainult saidi lehe kujundust, mille laius on 950 pikslit.

< div id= "page" >

"Ülemine" plokk asub lehe ülaosas ja sisaldab kahte plokki "logo" ja "kasutaja1".

< div id= "top" >

"Logo" bokeh'is asetame logo graafilise faili, mis täpsustatakse stiililehtedel. Kuid me kirjutame saidi nime automaatse kuvamise faili index.php ja paneme nime H1 sildi sisse, mis on otsingumootori optimeerimise jaoks väga oluline.

< div id= "logo" >
< h1> < ?php echo $app - >getCfg("saidinimi" ); ?>< / h1>
< / div>

Määratleme saidiotsingu mooduli kuvamiseks samanimelises plokis positsiooni "kasutaja1".

< div id= "user1" >
< jdoc:include type= "modules" name= "user1" style= "xhtml" / >
< / div>
< / div> < ! - - конец блока top - - >

Horisontaalse menüümooduli väljund "kasutaja2" plokis asendis "kasutaja2". Plokk kukub kokku, kui selles kohas pole moodulit.

< ?php if ($see-> loendusmoodulid("kasutaja2" ) ) : ?>
< div id= "user2 " >
< jdoc:include type= "modules" name= "user2" style= "xhtml" / >
< / div>
< ?php endif ; ?>

Järgmisena tuleb saidi päiseplokk. Selles määratleme moodulite kuvamise "päise" positsiooni. Plokk kukub kokku, kui selles kohas pole moodulit. Laiendasin tahtlikult selle ploki võimalusi, et saaksin sinna paigutada mitte ainult päisepildi, vaid ka pildirotaatoreid.

< ?php if ($see-> countModules(" päis") ) : ?>
< div id= "päis">
< jdoc:include type= "modules" name= "päis" style="xhtml" / >
< / div>
< ?php endif ; ?>

Plokis “user3” määratleme moodulite väljastamiseks positsiooni “user3”.

Plokk kukub kokku, kui sellel positsioonil "kasutaja3" pole mooduli väljundit.

< ?php if ($see-> loendusmoodulid("kasutaja3") : ?>
< div id= "user3" >
< jdoc:include type= "modules" name= "user3" style= "xhtml" / >
< / div>
< ?php endif ; ?>

Avaneb vasakpoolse veeru plokk, mis kukub kokku, kui vasakpoolses asendis pole ühtegi moodulit.

< ?php if ($see-> countModules("left" ) ) : ?>
< div id= "left" >
< jdoc:include type= "modules" name= "left" style= "xhtml" / >
< / div>
< ?php endif ; ?>

Avaneb kõige olulisem sisuplokk, mis võib sõltuvalt kaasatud veergude arvust hõivata 100% lehe laiusest, 80% ja 60%.

< div id= "content< ?php echo $contentwidth ; ?> " >

Sõnumite kuvamine komponentides

< jdoc:include type= "message" / >

Sisu sisu väljastamine.

< jdoc:include type= "component" style= "xhtml" / >
< / div> < ! - - конец блока контента- - >

Avaneb parempoolse veeru plokk, mis kukub kokku, kui paremas asendis pole ühtegi moodulit.

< ?php if ($see-> countModules("paremal") : ?>
< div id= "rigth" >
< jdoc:include type= "modules" name= "right" style= "xhtml" / >
< / div>
< ?php endif ; ?>

Jaluse ploki väljund, mis on ette nähtud HTML-koodi mooduli kuvamiseks koos autoriõiguse teabega. Siin saate paigutada ka alumise horisontaalse menüü või sisu esitluse mooduli. Plokk aheneb, kui selles "jaluse" positsioonis kuvatakse rohkem kui üks moodul

< ?php if ($see-> loendusmoodulid("jalus") ) : ?>
< div id= "footer" >
< jdoc:include type= "modules" name= "footer" style= "xhtml" / >
< / div>
< ?php endif ; ?>

Saidi leheplokk "leht", keha ja kogu kood on suletud.

< / div> < ! - - конец блока page- - >
< / body> < ! - - конец блока body - - >
< / html> < ! - - конец кода- - >

Oleme loonud täieliku index.php faili. Nüüd teate, milliseid käske kasutatakse ja millises järjestuses malliplokke kuvatakse.

TÄHELEPANU: Malli koodi lugemiseks joomla administraatoripaneelilt tuleb fail index.php avada AkelPadi redaktoris ja salvestada UTF-8 kodeeringus, samal ajal tühjendades BOM-i märkeruudu. Kui kasutasite failiga töötamiseks programmi Macromedia Dreamweaver, peate valima ülemisest menüüst "Redigeerimine"> "Lehe atribuudid" ja valima dokumendi kodeeringu Unicode'i (utf-8) ja tühjendama märkeruut "Enable Unicode signatures (BOM). )”. Küll aga soovitan tungivalt mitte redigeerida Joomla administraatori paneeli koodi, kui midagi sassi ajab - tagasiteed pole erinevalt Macromedia Dreamweaveri programmist, kus saab tehtud muudatused alati tagasi võtta.

Plokkide kujundust kirjeldatakse saidil template.css. Kuid me konfigureerime stiililehed pärast malli installimist Joomla 3-le (joomla 2.5) ja selleks peame looma

Paljud lugejad igas arvutiteemalises raamatus sirvivad üle kõigest, mis kohe huvi ei paku, ja liiguvad edasi selle juurde, mida nad tegelikult vajavad. tahan tea. Mina isiklikult seda teen. Selles pole aga midagi halba – harva leidub tehnilisi raamatuid, mis tuleb kaanest kaaneni läbi lugeda. Või äkki tegite just seda – jätsite esimesed kaheksa peatükki vahele ja valisite selle peatüki, sest sellel oli kõige huvitavam pealkiri? Ja kes tahab raisata aega detailidele, kui tööl põleb järjekordne projekt?

Õnneks ei takista selline kiirustamine teid raamatu teises osas, mis on pühendatud PHP kasutamisele saitide loomiseks ja veebiga suhtlemiseks, materjali korralikult omandamast. Selles peatükis saate teada, kuidas hõlpsasti muuta veebilehtede sisu ja navigeerida veebis linkide ja erinevate standardfunktsioonide abil. Järgmine peatükk täiendab esitatud materjali - see uurib üksikasjalikult kasutajaga suhtlemise vahendeid HTML-vormingutes 11. peatükis kirjeldatakse liidese korraldust andmebaasidega. Teise osa ülejäänud peatükkides käsitletakse PHP-s veebiprogrammeerimise mittetriviaalseid aspekte.

Siiski tuleb meeles pidada, et 1. osa materjal absoluutselt vajalik tavapäraste PHP teadmiste jaoks. Eeldatakse, et olete 1. osa juba lugenud, seega kasutatakse näidetes paljusid varem kirjeldatud mõisteid. Seega, kui sa lehed osa raamatust läbi, pead aeg-ajalt eelmiste peatükkide juurde tagasi pöörduma ja järele jõudma.

Lihtsad lingid

<а href = "date.php">

$link = "kuupäev.php";

printida"<а href = \"$link\">Vaata tänast kuupäeva
\n"

Tõenäoliselt mõtlete, miks on lingikoodis jutumärkide (") ees kaldkriips (\)? Fakt on see, et PHP-s on jutumärgid erimärgid ja neid kasutatakse reaeraldajatena. Seetõttu on jutumärgid stringides literaalid, mida tuleb varjestada .

Kui jutumärkidest põgenemine teid häirib, lubage lihtsalt failis php.ini režiim magic_quotes_gpc. Tulemuseks on kõik apostroofid, jutumärgid, kaldkriipsud ja nullmärgid. tekstis on automaatselt välditud!

Arendame antud näidet edasi. Brauseris linkide loendi kiireks kuvamiseks võite kasutada massiivi:

// Looge jaotiste massiiv

$contents - array("õpetused", "artiklid", "skriptid", "kontakt");

// Itereerige massiivi iga elementi ja kuvage järjestikku

jaoks ($i = 0; $i< sizeof($contents; $i++)

printida" ".$contents[$i]."
\n";

// - spetsiaalne tähistus marker point endfor;

Failikomponendid (mallid)

Oleme jõudnud ühe minu lemmik PHP funktsioonini. Mall (seoses veebiprogrammeerimisega) on veebidokumendi osa, mida kavatsete kasutada mitmel lehel. Mallid, nagu PHP-funktsioonid, säästavad teid lehe sisu ja programmikoodi tarbetu kopeerimise/kleepimise eest. Saidi ulatuse suurenedes suureneb mallide tähtsus, kuna need võimaldavad teil hõlpsalt ja kiiresti kogu saidi tasemel muudatusi teha. Selles jaotises kirjeldatakse mõningaid võimalusi, mis avanevad lihtsate mallide kasutamisel.

Tavaliselt salvestatakse tavalised sisu/koodi osad (st mallid) eraldi failidesse. Veebidokumenti koostades peate need failid lihtsalt lehe sobivatesse kohtadesse "kaasama". PHP-s on selleks kaks funktsiooni: include() ja request().

sisaldama () ja nõudma ()

PHP üks silmapaistvamaid aspekte on võimalus luua malle ja programmeerimisteeke ning seejärel lisada need uutesse skriptidesse. Teekide kasutamine säästab aega ja vaeva erinevatel veebisaitidel ühiste funktsioonide kasutamisel. Lugejad koos

Kogege programmeerimist teistes keeltes (nt C, C++ või Java) ning tunnete funktsiooniteekide kontseptsiooni ja nende kasutamist programmides funktsioonide laiendamiseks.

Ühe või mitme faili kaasamine skripti toimub standardsete PHP funktsioonide nõuda() ja include() abil. Nagu järgmises jaotises näidatakse, kehtivad kõik need funktsioonid konkreetses olukorras.

Funktsioonid

PHP-s on failide lisamiseks PHP-skriptidesse neli funktsiooni:

  • include();
  • include_once();
  • nõudma();
  • Nõuda_ükskord().

Vaatamata nimede sarnasusele lahendavad need funktsioonid erinevaid probleeme.

Funktsioon include() sisaldab faili sisu skripti. Funktsiooni include() süntaks on:

kaasa (failifail]

Funktsioonil include() on üks huvitav omadus – seda saab täita tingimuslikult. Näiteks kui funktsioonikutse on kaasatud käsuplokki if. siis kaasatakse fail programmi ainult tingimusel i f on tõene. Kui tingimuskäsus kasutatakse funktsiooni includeO, siis see peab olema ümbritsetud lokkis traksidega või alternatiivsete eraldusmärkidega. Võrrelge loetelude 9.1 ja 9.2 süntaksi erinevusi.

Loetelu 9.1. Lisa() vale kasutamine

kui (mingi_tingimuslik)

include("text91a.txt"); muidu

include("text91b.txt");

Loetelu 9.2. Lisa() õige kasutamine

kui (mingi_tingimuslik):

include("text91a.txt");

include("text91b.txt");

Kogu kaasamisfailis sisalduv PHP-kood Tingimata peitub PHP siltides. Ärge eeldage, et lihtsalt PHP-käsu faili salvestamine tagab selle õige töötlemise:

Selle asemel peate käsu mähkima sobivatesse siltidesse, nagu näitab järgmine näide:

print "see on kehtetu kaasamisfail";

Funktsioon include_once() teeb sama, mis include(), välja arvatud üks erand: enne faili lisamist programmi kontrollib see, kas see on juba lisatud. Kui fail on juba kaasatud, ignoreeritakse väljakutset include_once() ja kui mitte, siis toimub standardne faili kaasamine. Muus osas ei erine include_once() funktsioonist include(). Funktsiooni include_once() süntaks on:

include_once(failifail)

Üldiselt sarnaneb funktsioon request() funktsiooniga include() – see sisaldab ka malli failis, milles request() kutse asub. Funktsiooni request() süntaks on:

nõua (failifail)

Siiski on funktsioonide request() ja include() vahel üks oluline erinevus. Nõudega () määratud fail kaasatakse skripti sõltumata nõudmise() asukohast skriptis. Näiteks kui kutsute if-plokis requi re() ja kui tingimus on väär, kaasatakse fail ikkagi skripti!

Paljudes olukordades on mugav luua muutujate ja muu teabega fail, mida kasutatakse kogu saidil, ja seejärel lisada see vastavalt vajadusele. Kuigi selle faili nimi on suvaline, kutsun seda tavaliselt init.tpl (lühend sõnadest "initializaion.template"). Nimekiri 9.3 näitab, kuidas näeb välja väga lihtne fail init.tpl. Loendis 9.4 on faili init.tpl sisu kaasatud skripti koos nõudega().

Loetelu 9.3. Initsialiseerimisfaili näide

$site_title = "PHP retseptid";!}

$contact_email = " [e-postiga kaitstud]";

$contact_name = "WJ Gilmore";

Nimekiri 9.4. Kasutades faili init.tpl

<? print $site_title; ?>

\"mai1 aadressile:$contact_email\">$contact_name."; ?>

URL-i edastamine nõudmise() kutsumisel on lubatud ainult siis, kui režiim „URL fopen wrappers” on lubatud (see režiim on vaikimisi lubatud).

Saidi suuruse kasvades võib selguda, et mõni fail on skriptis mitu korda kaasatud. Mõnikord ei põhjusta see probleemi, kuid mõnel juhul põhjustab faili uuesti kaasamine muudetud muutujate väärtuste lähtestamise. Kui kaasamisfail määratleb funktsioonid, võivad tekkida nimetamiskonfliktid. Seda öeldes jõuame järgmise funktsioonini - nõuda_once().

Funktsioon request_once() tagab, et fail kaasatakse skripti ainult üks kord. Kui requi re_once() on kutsutud, ignoreeritakse kõiki edasisi katseid sama faili kaasamiseks. Funktsiooni request_once() süntaks on:

Tõenäoliselt hakkate failide kaasamise funktsioone sagedamini kasutama, kui teie veebirakendused hakkavad kasvama. Need funktsioonid esinevad sageli selle raamatu näidetes, et vähendada koodi liiasust. Esimesi näiteid käsitletakse järgmises põhimallide koostamise põhimõtete osas.

Ehituskomponendid

Tüüpilise veebilehe struktuuri määratlemisel jagan selle tavaliselt kolmeks osaks: päis, keha ja jalus. Reeglina on enamikul korralikult korraldatud veebisaitidel päis, mis jääb praktiliselt muutumatuks; põhiosa kuvab saidi soovitud sisu, nii et see muutub sageli; Lõpuks sisaldab jalus autoriõiguste teavet ja navigeerimislinke. Jalus, nagu ka päis, jääb tavaliselt muutumatuks. Ärge saage minust valesti aru – ma ei ürita teie loomingulisi püüdlusi alla suruda. Olen näinud palju suurepäraseid veebisaite, mis neid põhimõtteid ei järgi. Üritan lihtsalt välja mõelda üldise struktuuri, mis võiks olla edasise töö lähtepunktiks.

Pealkiri

Päisefail (nagu loendis 9.5) kuvatakse peaaegu igal minu PHP-toega veebisaidil. See fail sisaldab

kogu saidi teavet, nagu pealkiri, kontaktteave ja mõned HTML-lehe koodikomponendid.

Nimekiri 9.5. Päisefaili näide

// Fail: header.tpl

// Eesmärk: PhpRecipesi veebisaidi päisefail.

$saidi_nimi = "PHPRetseptid";

$site_email= " [e-postiga kaitstud]";

$site_path = "http://localhost/phprecipes";

<? print $site_name; ?>

// Praeguse kuupäeva ja kellaaja printimine

print date("F d, h:i a");

Üsna sageli on külastajate juurdepääs kaasatud failidele piiratud, eriti kui need failid sisaldavad tundlikku teavet (näiteks paroole). Apache'is saate teatud failide vaatamise takistada, redigeerides faile http.conf või htaccess. Järgmine näide näitab, kuidas takistada kõigi .tpl-laiendiga failide vaatamist.

Telli luba, keela

Luba alates 127.0.0.1

PHP ja veebisaidi turvaprobleeme käsitletakse üksikasjalikult 16. peatükis.

Jooksu tiitel

Jalus on tavaliselt teave, mis asub saidi lehtede allosas – kontaktteave, lingid ja autoriõiguste teave. Selle teabe saab paigutada eraldi faili ja lisada mallina samamoodi nagu päist. Oletame, et uue aasta alguses peate muutma autoriõiguste teavet ja viima selle vormile “Autoriõigus © 2000-2001”. On kaks võimalust: veeta jõululaupäev meeletult sadade staatiliste lehtede redigeerimisega. või kasutage nimekirjas 9.6 näidatud malli. Üks lihtne muudatus ja võite naasta oma puhkuserutiini.

Nimekiri 9.6. Jaluse faili näide (footer.tpl)

kontakti |

teie privaatsus

Pange tähele globaalse muutuja $site_email kasutamist jalusefailis. Selle muutuja väärtus on leheülene ja eeldame, et failid header.tpl ja footer.tpl kaasatakse ühele viimasele lehele. Pange tähele ka $site_path olemasolu lingis Privaatsus. Lisan alati oma mallidesse kõikide linkide täieliku tee – kui lingi URL oleks ainult privacy.php, oleks jaluse fail kindlasse kataloogi kõvakodeeritud.

Põhiosa

Lehe põhiosa sisaldab päise ja jaluse sisu. Sisuliselt on see põhiosa, mis sisaldab saidi külastajaid huvitavat teavet. Päis näeb muljetavaldav välja, jalus sisaldab kasulikku teavet, kuid lehe põhiosa jaoks naasevad kasutajad saidile ikka ja jälle. Kuigi ma ei saa konkreetse lehe struktuuri kohta nõu anda, lihtsustavad loendis 9.7 olevad mallid oluliselt lehe haldamist.

Nimekiri 9.7. Näide lehe põhiosast (index_body.tpl)

/tutorials.php">õpetusi

artiklid

skriptid

kontakt

Tere tulemast PHPRecipesisse. PHP skriptide, õpetuste lähtekoht,

ja infot gurmeekoitude kohta!

Kõik koos: päis, jalus ja keha

Võib-olla võtab minu tuju kõige paremini kokku kolonel “Hannibal” Smithi (George Peppard) rida kuulsast telesarjast “A-Team”: “Mulle meeldib, kui asjad paika loksuvad.” Kogen midagi sarnast, kus erinevad mallid ühinevad terviklikuks veebidokumendiks. Kombineerides kolm dokumendiosa: header.tpl, index_body.tpl ja footer.tpl, saate kiiresti luua lihtsa lehe, nagu on näidatud loendis 9.8.

Nimekiri 9.8. Indeks.php lehe loomine mitme faili kaasamisega

// Fail: index.php

// Sihtkoht: PHPRecipesi koduleht

// Trüki pealkiri

include("header.tpl");

// Põhiosa väljastamine

include("index_body.tpl");

// Kuvab jaluse

include("footer.tpl");

Niisiis, kuidas? Kolm lihtsat käsku ja leht on valmis. Viimase lehekülje tekst on näidatud nimekirjas 9.9.

Nimekiri 9.9. HTML-leht, mis on sisse ehitatud nimekirjas 9.8 (index.php)

PHP retseptid

23. august kell 15.17

õpetused

artiklid

skriptid

kontakti

Tere tulemast PHPRecipesisse, PHP-skriptide, õpetuste,

ja gurmee toiduvalmistamise näpunäiteid ja retsepte!

Autoriõigus 2000 PHPRecipes. Kõik õigused kaitstud.

kontakti |

teie privaatsus

Joonisel fig. Joonis 9.1 näitab, kuidas tulemuseks olev leht brauseris välja näeb. Kuigi ma tavaliselt tabeliääriseid ei kasuta, joonistasin seekord need välja, et lehe kolm osa joonisel selgemalt esile tuleks.

Riis. 9.1. Nimekirja sisse ehitatud lehe välimus 9.8

Malli optimeerimine

Teise (minu arvates eelistatavama) variandi puhul on mallid kujundatud funktsioonidena, mis asuvad eraldi failis. See annab teie mallidele täiendava struktuuri. Nimetan seda faili lähtestamisfailiks ja salvestan sinna muud kasulikku teavet. Kuna oleme juba vaadanud suhteliselt pikki päise ja jaluse näiteid, on loetelusid 9.10 ja 9.11 uue idee illustreerimiseks veidi lühendatud.

Nimekiri 9.10. Optimeeritud saidi mall (site_init.tpl)

// Fail: site_init.tpl

// Eesmärk: PhpRecipes'i lähtestamisfail

$saidi_nimi = "PHPRetseptid";

$site_email = " [e-postiga kaitstud]";

$site_path = "http://localhost/phprecipes/";

funktsioon show_header($saidi_nimi) (

<? print $site_name: ?>

See on päis

funktsioon näita jalus()

See on jalus

Nimekiri 9.11. Initsialiseerimisfaili kasutamine

// Kaasake lähtestamisfail

include("site_init.tpl");

// Trüki pealkiri

näita päist($saidi_nimi);

// Keha sisu See on kehateave

// Jaluse kuvamine Show_footer();

Projekt: lehe generaator

Kuigi enamikul minu loodud veebisaitidel on põhilehe sisu genereeritud andmebaasist loetud teabe põhjal, on alati mõned leheküljed, mis jäävad praktiliselt muutumatuks. Eelkõige saavad nad kuvada teavet arendusmeeskonna kohta, kontaktteavet, reklaame jne. Tavaliselt salvestan selle "staatilise" teabe eraldi kausta ja laadin selle päringu saabudes PHP-skripti. Muidugi on teil küsimus - kui see on staatiline teave, siis mille jaoks PHP skript on mõeldud? Miks mitte laadida tavalisi HTML-lehti? PHP eeliseks on see, et saate kasutada malle ja vajadusel lisada staatilisi juppe.

<а href = "/static.php?content=$content">Staatiline lehe nimi

Alustame staatiliste lehtede loomisega. Lihtsuse huvides piirdun kolme leheküljega, mis sisaldavad saidi teavet (loetelu 9.12), reklaami (loetelu 9.13) ja kontaktteavet (loetelu 9.14).

Nimekiri 9.12. Teave saidi kohta (about.html)

PHPRecipesi kohta

Milline programmeerija ei segaks kogu öö programmeerimist gurmeeküpsistega parim sellest, mida me kõige rohkem armastame: PHP ja toit!

Just, lugejad, õpetused, skriptid, sufleed ja palju muud. 0nly PHPRecipesis.

Reklaamiteave

Sõltumata sellest, kas nad tulevad õppima uusimaid PHP-tehnikaid või õppima, kuidas seda teha

kana küpsetamiseks võite kihla vedada, et meie lugejad on otsustajad. Nad on Tööstus

spetsialistid, kes teevad otsuseid selle kohta, mida nende ettevõte ostab.

Reklaamiinfo saamiseks võtke ühendust

">[e-postiga kaitstud].

Nimekiri 9.14. Kontaktandmed (contact.html)

Võta meiega ühendust

Kas teil on kodeerimisnõuanne?

Kas teate täiuslikku suhkrustatud jamsi katet?

Anna meile teada! Võtke meeskonnaga ühendust aadressil [e-postiga kaitstud].

Liigume edasi static.php lehe loomise juurde, mis kuvab nõutud staatilist teavet. See fail (vt loetelu 9.15) sisaldab meie saidi lehe komponente ja lähtestamisfaili site_init.tpl.

Nimekiri 9.15. Staatiliste lehtede üldine väljund (static.php)

// Fail: static.php

// Eesmärk: soovitud staatiliste lehtede kuvamine.

// HOIATUS: see eeldab, et fail on "site_init.tpl" ja kõik

// staatilised failid asuvad samas kataloogis.

// Funktsioonide ja muutujate laadimine include("site_init.tpl"):

// Päise kuvamine show_header($saidi_nimi);

// Väljutage nõutud sisu include("$content.html"):

// Jaluse kuvamine show footer();

Nüüd on kõik põhistsenaariumi koostamiseks valmis. Lihtsalt lisage see lehele

<а href = "static.php?content=about">Staatiline lehe nimi

Reklaamiteave

Võta meiega ühendust

Kui klõpsate mõnel neist linkidest, laadib teie brauser vastava staatilise lehe, mis on manustatud faili static.php!

Tulemused

Selles peatükis tutvusite esmase ülesandega, mille jaoks PHP loodi – veebilehtede dünaamiline koostamine. Arutati järgmisi küsimusi:

  • URL-i töötlemine;
  • dünaamilise sisu loomine;
  • põhimallide kaasamine ja ehitamine.

Peatükk lõpeb lehegeneraatoriga – programmiga, mis laadib staatilised leheküljed malli ja muudab suure hulga staatilisi HTML-lehti toetamise lihtsaks.

Järgmine peatükk keskendub PHP kasutamisele koos HTML-vormidega, et teie saidi interaktiivsust oluliselt suurendada. Ja siis - suhtlemine andmebaasidega! Sul on palju huvitavat õppida.

Eelnevatest õppetundidest saime teada, et GET-meetodi abil saame osa parameetreid otse URL-ile edastada. Kuid miski ei takista meil seda tegemast ilma vormideta, lihtsalt loetledes need URL-is.

Saame parameetreid edastada URL-i kaudu. Ja me saame need parameetrid otse skriptis. Mis siis takistab meil URL-i parameetritest olenevalt kasutajale erinevaid lehti näitamast?

Dünaamilise lehe loomine

Erinevate lehtede kasutajale näitamiseks tuleb sisu ette valmistada. Las see asub mitmemõõtmelises massiivis:

"Dünaamiliste lehtede loomine", "sisu" => "Dünaamiliste lehtede artiklite tekst." ], [ "title" => "Kuidas kassipoega püüda", "sisu" => "Kassipoegade artikli tekst." ] ]; ?>

URL-is sisalduvat dünaamilist parameetrit nimetatakse id ja me püüame selle kinni $_GET["id"] . Võiksime lisada igale massiivi elemendile id-välja, kuid siis peaksime kõik elemendid läbi tegema ja otsima soovitud ID-ga alamriba. Seetõttu on palju lihtsam kasutada põhimassiivi võtmeid ID-dena.

Lihtsamalt öeldes võtame ID ja proovime selle võtmega artiklit leida massiivist $articles. See näeb välja selline:

Jääb vaid visandada menüü väljund ja kontrollida ID õigsust. Selgub, et see on tõeline PHP-ruuter!

"Koduleht", "sisu" => "Meie saidi artikli tekst" ], [ "title" => "Dünaamiliste lehtede loomine", "sisu" => "Dünaamiliste lehtede artiklite tekst." ], [ "title" => "Kuidas kassipoega püüda", "sisu" => "Kassipoegade artikli tekst." ] ]; # Kui ID on läbitud, kirjutage artikkel $artiklile või nullile, kui selle ID-ga artiklit pole if(isset($_GET["id"])) $current_article = $artiklid[$_GET["id"]] ?? null; # Kui id-d ei edastata, siis see on põhileht, saame näidata lehte id = 0 muidu $praegune_artikkel = $artiklid; ?> $artikkel): ?> ">

Viga 404: lehte ei leitud

Nüüd saate luua dünaamilisi saite, kus lehtede arv sõltub massiivi elementide arvust, mitte PHP-failidest. :) Kui saidil peaks olema erinevat tüüpi lehti, näiteks artikkel ja toode, võid teise parameetrina edastada lehe tüübi: site.ru?type=article&id=5 .

Muidugi pole see süsteem täiuslik. Mõne aja pärast õpid tegema tavalist CNC-d (mugavamad URL-id, näiteks site.ru/articles/5/) ja salvestama artikleid faili või andmebaasi.

Mis tahes keerukusega paljutõotava, laiendatava ja tõhusa veebisaidi loomiseks peaksite alustama millestki lihtsast. See protsess pole lihtne, see nõuab teatud põhiteadmisi PHP-st ja MySQL-ist, kuid kui seda punkt-punkti järgi mõelda, saate luua omamoodi "tööplaani", mis on kasulik uute saitide loomisel. Valmistame ette projekti “tuumiku” ja aluse. Algul on see tavaline visiitkaartide veebisait, kuid siis saab selle funktsionaalsust lisades muuta ükskõik milleks. Nii et alustame.

1. Andmebaasi ettevalmistamine. Looge MySQL-i andmebaasis esimene tabel

Looge uus andmebaas, näiteks "minu veebisait". Isiklikult olen harjunud töötama UTF-8 kodeeringuga, seega teen kohe broneeringu: veenduge, et kõik saidil olevad tekstifailid, andmebaas ise, tabelid ja tabeliväljad oleksid samas kodeeringus.
Loome uues andmebaasis tabeli. Nimetagem seda "lehtedeks". See tabel salvestab tulevase saidi staatilised lehed ja teave nende kohta. Tabel peab sisaldama järgmisi välju:

  • page_id - lehe identifikaator (VÄIKE, primaarvõti, auto_increment);
  • page_alias – CNC-aadressirea lehekülje alias (VARCHAR, 255);
  • page_title - lehe pealkiri brauseriaknas (VARCHAR, 255);
  • page_meta_d – lehe metakirjeldus metakirjelduse sildi jaoks (VARCHAR, 255);
  • page_meta_k - meta märksõnad meta märksõnade sildi jaoks (VARCHAR, 255);
  • page_h1 - lehekülje pealkiri (VARCHAR, 255);
  • page_s_desc - materjali lühikirjeldus, näiteks kui saidi materjalid on ajaveebi kujul (TEKST);
  • page_content - lehe põhitekst, mis kuvatakse saidi keskmises veerus (TEKST);
  • page_publish - sisaldab "Y" - kui leht on avaldatud, või "N" - kui see on peidetud (CHAR, vaikimisi "Y").

Vahetult pärast tabeli loomist sisestame sellesse saidi avalehe väärtused. Soovitan sisestada põhilehe väljale „page_alias” väärtuse „home”. Metasildid vastavad kogu saidi teemale. Samamoodi saate luua muid lehti, näiteks "Ettevõtte kohta" pseudonüümiga "about" ja oma metasiltidega või "Kontaktid" aliasega "kontaktid" jne.

2. Looge saidi konfiguratsioonifail

Saidi juurkaustas, mis peaks selles etapis olema tühi, loome kausta "cfg" ja selles sulgeme .htaccessi abil juurdepääsu käskkirjaga "keela kõik". Looge järgmise sisuga core.php fail:

// MYSQL
klass MyDB
{
var $dblogin = "juur"; // TEIE SISSElogimine ANDMEBAASISSE
var $dbpass = ""; // TEIE PAROOL ANDMEBAASISSE
var $db = "minu veebisait"; // SAIDI ANDMEBAASI NIMI
var $dbhost="localhost";

Var $link;
var $päring;
var $err;
var $tulemus;
var $andmed;
var $fetch;

Funktsioon connect() (
$see->link = mysql_connect($see->dbhost, $see->dblogin, $see->dbpass);
mysql_select_db($this->db);
mysql_query("SET NIMED utf8");
}

Funktsioon close() (
mysql_close($see->link);
}

Funktsiooni käivitamine($query) (
$see->päring = $päring;
$see->tulemus = mysql_query($see->päring, $see->link);
$see->err = mysql_error();
}
funktsioon row() (
$see->andmed = mysql_fetch_assoc($see->tulemus);
}
funktsioon tõmba() (
while ($this->data = mysql_fetch_assoc($this->result)) (
$see->tooda = $see->andmed;
tagasta $this->fetch;
}
}
funktsioon stop() (
unset($this->data);
unset($see->tulemus);
unset($this->fetch);
unset($this->err);
unset($this->query);
}
}

See fail sisaldab hetkel ainult lihtsat andmebaasiühenduse klassi, kuid edaspidi saate sellele lisada erinevaid kasulikke funktsioone, millele pääseb ligi kõikjalt saidi koodis. Ärge unustage muuta oma andmebaasi sisselogimist ja parooli.

Kui töötate Windowsi keskkonnas, võin soovitada kasutada . Sellel redaktoril on ridade nummerdamine ja see teisendab hõlpsalt teksti ühest kodeeringust teise. TÄHELEPANU! Kui töötate UTF-8 kodeeringus, teisendage failid UTF-8-ks ilma BOM-ita – see aitab tulevikus probleeme vältida.

3. Loo index.php – saidi peamine kontroller

Konfiguratsioonifail on loodud. Nüüd loome saidi juurkaustas index.php - see on saidi põhiskript, omamoodi "peamine kontroller". Faili index.php sisu:

define("INDEKS", ""); // PÕHIKONTROLLERI KONSTAndi SEADISTAMINE

Require_once($_SERVER."/cfg/core.php"); // TUUMA ÜHENDAMINE

// ÜHENDA DB-GA
$db = new MyDB();
$db->ühenda();

// PÕHIKONTROLLER
lüliti ($_GET) (
juhtum "leht":
include($_SERVER."/com/page.php");
murda;
vaikimisi:
include($_SERVER."/com/home.php");
murda;
}

Include($_SERVER."/template.php");
$db->sulge();

Muutuja $_GET annab peakontrollerile teada, millist saidi komponenti nõudmisel laadida. Praegu on meie saidil ainult kaks komponenti: “leht” ja “pealeht” (tavalise lehe kuvamiseks saab põhimõtteliselt hakkama ka ühe komponendiga, kuid sageli erineb saidi avalehe välimus tavaliste menüüpunktide lehtedest) . Põhikontrolleri loogika on järgmine: URL-i stringist ekstraheeritakse vajaliku komponendi nimi (muutuja $option väärtus) ja sõltuvalt selle väärtusest lisatakse komponendi enda fail (sisaldub /com kaust). Komponentfail teeb ära kogu vajaliku töö, võtab andmebaasist välja andmed ja kirjutab need muutujateks, et need kujundusmallile üle kanda. Päris lõpus ühendatakse saidi kujundusfail, kuhu kantakse üle kõik komponentidest eraldatud muutujad ja andmed. See kõlab palju keerulisemalt kui töötab.

4. Looge tavaline lehe väljundkomponent

Looge saidi juurtes kaust "com" - komponentfailid salvestatakse sellesse. Saidikomponent on minu arusaamise järgi fail, milles töödeldakse saidi erinevate osade andmeid. Näiteks otsib tavaline lehe komponent andmebaasist materjali pealkirja, kirjelduse ja teksti ning kirjutab need muutujatesse $title, $meta_d, $meta_k, $content jne. Seejärel kantakse need andmed kujundusmalli ( saate iga komponendi jaoks luua oma kujundusmalli ) ja kuvatakse kasutajale HTML-lehena. Näiteks kataloogikomponent, mida saaks tulevikus luua, teeks peaaegu sama asja, kuid andmetega toodete kohta - ja sellel on oma spetsiifika, muud tabelis olevad väljad jne. Seetõttu tasub saidi iga funktsionaalse osa jaoks luua eraldi komponent. MVC (Model-View-Controller) skeemis toimib komponent mudelina.

Looge kaustas "com" fail "page.php". Faili sisu on järgmine:

/* LEHEKOMPONENT */
$alias = $_GET;
$query = "SELECT * FROM pages WHERE page_alias="".$alias."" AND page_publish="Y" LIMIT 1";
$db->käivita($päring);
$db->rida();
// KOMPONENTMUUTUVAD
$id = $db->andmed;
$alias = $db->andmed;
$pealkiri = $db->andmed;
$h1 = $db->andmed;
$meta_d = $db->andmed;
$meta_k = $db->andmed;
$s_desc = $db->andmed;
$komponent = $db->andmed;
//KUI LEHTE EI OLEMAS
kui (!$id) (
header("HTTP/1.1 404 ei leitud");
$component = "VIGA 404! Seda lehte pole olemas";
}
$db->stopp();

5. Looge põhilehe kuvakomponent

Meie andmebaasi avaleht on salvestatud pseudonüümi "kodu" all ja siiani ei erine selle struktuur tavaliste saidi lehtedest - see on lihtsalt artikkel. Sellest hoolimata loome selle jaoks eraldi komponendi - nii-öelda tuleviku jaoks.


Komponenti "home.php" sisu kaustas "com" on peaaegu identne tavalise lehe komponendi sisuga, välja arvatud andmebaasi päringustring ja komponendi nimi. Päringu string näeb nüüd välja selline:

$query = "SELECT * FROM wx_pages WHERE page_alias="kodu" LIMIT 1";

6. Looge kogu saidi kujundusmall

Saidi juurtes loome faili template.php. Sisuliselt on see tavaline veebidisaini paigutus HTML+CSS formaadis, ainult PHP muutujad õigetes kohtades. Sisestage pealkirja siltide vahele, saidi keskmises veerus on sisestusja nii paigutame kogu mallis vajalikud muutujad, mis on komponentides deklareeritud.

Juurkaustas peaksid olema ka kujunduselementide kaustad "css" ja "images". Failis /css/style.css - saate stiile oma äranägemise järgi kohandada.

7. Puhastage lingid ja .htaccess-fail

Puhaste linkide loomiseks kasutan mod_rewrite'i koos otseste juhistega iga komponendi reeglite jaoks eraldi, kuna pean aadressiriba sõelumist kontrolleri enda abil mittevajalikuks funktsiooniks. Faili .htaccess sisu selles etapis on:


RewriteEngine sees
RewriteBase /

RewriteCond %(REQUEST_FILENAME) !-d
RewriteCond %(REQUEST_FILENAME) !-f

# KEELATUD FAILID
RewriteRule .htaccess – [F]
RewriteRule template.php – [F]

# REEGLID mod_rewrite
RewriteRule page/(+)([\/](0,1))\.htm$ index.php?option=page&alias=$1 [L]

Edaspidi lisame reeglid otsingukomponentide, kataloogi, artikliblogi jms kohta. On ainult üks punkt: teisendage lingid nagu "mysite.com/index.php?option=pages&alias=about" lingiks nagu "mysite.com/pages/about.htm" – see näeb päris kena välja. Püüdke ohutuse huvides vältida massiivi $_GET ja ärge lootke sellele. Sellesse on soovitatav salvestada ainult põhikontrolleri (muutuja $optsioon) ja komponendi (muutuja $alias) parameetrid.

Samuti looge igas saidi kaustas "igaks juhuks" tühi fail index.html - see on vajalik selleks, et aadressiriba kaudu kataloogi pääsemisel ei kuvataks midagi.

Sildid: php, mysql, saidi mootor, kontroller, saidi loomine, mvc

2017-01-10


Looge dünaamiline veebisait php abil

Tere kallis külastaja!

Täna loome avalehelt PHP programmeerimiskeelt kasutades dünaamilise lehe, mis seejärel genereeritakse serveris iga kasutaja päringuga.

Seega, muutes saidi struktuuri ja täites selle sarnaste muutuvate lehtedega, saame dünaamilise saidi, mis tulevikus oluliselt lihtsustab selle tehnilist tuge ja arendust võrreldes staatilise versiooniga.

  • Miks vajate dünaamilist veebisaiti?
  • Kuidas teisendada staatiline sait dünaamiliseks
  • Moodustame dünaamilise saidi plokid
  • Veebilehe teisendamine staatilisest dünaamiliseks
  • Saidi lähtefailid

Miks vajate dünaamilist veebisaiti?

Miks dünaamilist veebisaiti vaja on, sellest räägiti kohe samm-sammult juhiste alguses artiklis Kohaliku Denweri veebiserveri installimine, kus selgitati kohaliku veebiserveri installimise vajadust. Seetõttu võime tagasi pöörduda ja seda küsimust värskendada.

Samuti, kui soovite staatiliste ja dünaamiliste saitide plusse ja miinuseid täiendavalt kaaluda, soovitame teil lugeda veebikataloogi "Puzzleweb.ru" lehti jaotisega Saitide tüübid, kus on üsna lühidalt, kuid samas. aega selgelt antud selgitused erinevate saidivalikute kohta.

ekraanipilt 12

Saame vaid lisada, et tõeliselt täieliku Interneti-ressursi saamiseks on võimatu seda sammu vahele jätta ja jääda staatilise saidi valiku juurde.

Seetõttu ei süvene me enam dünaamilise saidi loomise vajaduse teoreetilistesse aruteludesse, vaid jätkame küsimusega, kuidas me seda teeme.

Kuidas teisendada staatiline sait dünaamiliseks

Teatavasti on põhimõtteline erinevus dünaamilise ja staatilise saidi vahel see, et staatilisel saidil asuvad valmis veebilehed serveris ja ootavad oma järjekorda, kuni need saadetakse kasutaja brauserisse. Veelgi enam, kui lehtedel on isegi väikseid erinevusi, näiteks erinevus on ainult ühes fraasis või isegi ühes sõnas, on need ikkagi eraldi lehed.

Dünaamilises versioonis genereeritakse lehed serveris iga kasutaja päringuga, olenevalt küsitavast teabest.

Lihtsamalt öeldes võib seda võrrelda ehituskomplektiga, kus piiratud arvust elementidest saab teha suure hulga erinevaid kujundeid. Veelgi enam, kui muudate mõnda elementi, kajastub see kogu seda elementi sisaldavas struktuuris.

Selle põhjal teeme oma loodud avalehest midagi konstruktorilaadset, mis koosneb teatud elementidest (meie puhul on need failid), millest edaspidi vastavalt kasutaja soovidele veebilehti kokku pannakse.

Selleks tehtavate toimingute selgitamiseks kasutame põhilehe raami HTML-koodi, mis on saadud artiklis oleva saidi loomise ühes etapis.

  1. "utf-8" >

    <span><b>Lehekülje pealkiri</b> </span>

    "Kirjeldus" sisu = "Lehe sisu lühikirjeldus" >

  2. "ümbris" >

    Kork

    Rotaator

    Peamine sisu

    Külgriba

    Kelder

Nagu näete HTML-koodist, konteiner , mis on loodud veebilehe nähtava osa jaoks, sisaldab järgmisi põhiplokke:

  • Kork;
  • Rotaator;
  • Põhisisu;
  • Külgriba;
  • Kelder.

Siiski peate tähelepanu pöörama asjaolule, et viiest plokist neli on tavalised ja igal lehel on erinev ainult üks "Põhisisu" plokk.

Dünaamilise saidi elementide saamiseks eraldame nendest plokkidest sisu eraldi failidesse, mida hiljem kasutajate soovide alusel erinevate veebilehtede kokkupanemisel kaasame.

Praeguses etapis on neid faile ainult viis. Kuid tulevikus, kui saidile lisatakse lehti või lisafunktsioone, ühendatakse uued failid ja nii edasi vastavalt vajadusele.

Selline saidi struktuuri ülesehitus võimaldab teil tulevikus mitte tegeleda kõigi lehtede HTML-koodi muutmise rutiinse tööga, kui asendate või lisate neile ühise fragmendi. Sellistel juhtudel piisab muudatuste tegemisest ainult konkreetses failis ja kogu asendusprotseduur viiakse lõpule. Nagu näete, on sellel eelis.

Kuid selleks vajame PHP-keelt, millega veebilehed pääsevad neile valitud plokkidele ligi ja edastavad nende sisu endale.

Kui keegi pole kunagi PHP keelega kokku puutunud, siis on soovitatav seda lähemalt tundma õppida, kuna PHP on üks olulisemaid tööriistu kodulehe arendamiseks. Seda saab teha erinevat tüüpi teatmeteoste abil, mida võib suures koguses leida Venemaa Internetist.

Võimalusena juba mainitud teatmeteos “Puzzleweb.ru”, milles üks selle osadest on pühendatud PHP teemale. PHP põhjalikumaks uurimiseks võite kasutada ka spetsiaalset selle keele jaoks kohandatud teatmeteost, mis on postitatud veebisaidile "php.ru". Lingi "https://php.ru/manual/control-structures.intro.html" abil pääsete selle lehele "Sissejuhatus", kust saate hõlpsalt valida mis tahes teid huvitava kataloogi jaotise.

Kuid selleks, et nüüd teha dünaamiline veebisait ja pakkuda võimalust faile HTML-lehtedega ühendada, piisab ainult ühe keelejuhise kasutamisest (PHP-s koosneb iga skript käskude jadast). See võib olla üks neljast võimalikust juhisest failide ühendamiseks.

  • sisaldama;
  • nõuda;
  • kaasa_ükskord;
  • nõua_üks kord.

Nende funktsioone pole siin mõtet kirjeldada, kuna seda on üksikasjalikult selgitatud teatmeteostes, näiteks saate sellest hästi aru, kasutades linki “http://www.puzzleweb.ru/php/26_inc_files.php”.

Veebilehe loomisel kasutame käsku “require_once” Mina kasutan tavaliselt seda võimalust, minu jaoks on see kõige mugavam.

Noh, nüüd, kui oleme välja mõelnud, mida me teeme, jätkame praktiliste tegevustega.

Moodustame dünaamilise saidi plokid

Plokkide moodustamiseks, mis seejärel veebilehtede koostamisel osalevad, peate need esmalt looma. Seda tehakse Notepad++ tekstiredaktoris samamoodi nagu lõime artiklis esimese saidifaili "index.html". Looge veebileht ja hostige see kohalikus veebiserveris. Ainult sel juhul tuleks laiendiks määrata mitte “html”, vaid “php”. Sel juhul tuleb kindlasti tähelepanu pöörata kodeeringule, et edaspidi vältida erinevate arusaamatute märkide ilmumist lehtedele.

Loome failid eraldi, äsja loodud “plokkide” kausta. Kõigile lehtedele ühiste failide jaoks määrame nimed, võttes arvesse vastavate plokkide nimesid. Ja "peamise" ploki jaoks näitame saidi iga lehe jaoks konkreetse nime.

Seega ühendame avalehe jaoks faili nimega "block_glavnaya" "peamise" plokiga. Ülejäänud: "päis", "jaotis", "kõrvale" ja "jalus".

Failide loomisel võib arvestada ka sellega, et selle protseduuri lihtsustamiseks saab neid kopeerida kasutades "Fail" menüüd, määrates "Save As" salvestamisel uue failinime.

Üldiselt on failide loomine tavaline protseduur, nii et raskusi ei tohiks tekkida. Lõpuks peaks see välja nägema selline.


Seejärel kopeerime iga ploki sisu ja edastame selle vastavasse faili. Kasutades näitena "header.php", vaatame seda üksikasjalikumalt.

1. Avage Notepad++ redaktoris fail "index.html", valige "päise" ploki soovitud ala ja klõpsake vaheldumisi hiire paremat ja vasakut nuppu ning kopeerige see lõikepuhvrisse.

Tuleb märkida, et siin kopeerime kogu ploki sisu, välja arvatud menüü. Seda seetõttu, et kajastada märgendi atribuutides aktiivset menüünuppu

  • iga lehe jaoks on vaja klassiklassile määrata väärtus "aktiv". Sama kehtib ka "jaluse" plokis oleva sarnase fragmendi kohta.

    Edaspidi liigutame ka need menüüfragmendid “päise” ja “jaluse” plokkides eraldi failidesse, kuid praegu ei tee me asja keeruliseks ja jätame need samasse kohta.

    "Päise" ploki fragmenti valida ja lõikepuhvrisse kopeerida on näidatud alloleval ekraanipildil.



    3. Ja lõpuks, selleks, et Notepad++-s faili sisu vasakule liigutada, peate mitu korda vajutama “Tab”, hoides samal ajal all “Shift” nuppu. Selle tulemusena saame genereeritud faili “header.php” järgmisel kujul.


    Teeme sama ka teiste failidega. Allolevad ekraanipildid näitavad, kuidas nende sisu pärast kõigi vajalike toimingute sooritamist välja näeb.


    Joon.6 Fail "section.php"


    Joonis 7 Fail "block_glavnaya.php"


    Joon.8 Fail "aside.php"


    Joonis 9 Fail "footer.php"

    Seega oleme saanud kõik failid dünaamilise lehe loomiseks ja saame nüüd minna otse selle HTML-koodi juurde.

    Veebilehe teisendamine staatilisest dünaamiliseks

    Selleks, et meie avaleht saaks laadida eelmises jaotises loodud faile, peame esmalt muutma "indeksi" faili laiendiks "html" asemel "php" ja seejärel avama selle uuesti Notepad++ redaktoris ja tehke järgmised muudatused:

    • Kustutage plokkide sisu, mis on varem vastloodud failidesse üle kantud.
    • Kirjutage vabasse ruumi PHP-s juhised “require_once”, märkides vastavate failide tee.
    • Menüüsiltides
    • , mis näitavad lehtede teed, avalehe puhul asenda laiend “html” asemel “php” ja teiste jaoks märgivad vastloodud lehtede nimed.
    • Pealkirjas märkige "Kodu".

    Pärast nende toimingute tegemist peaks meie avaleht välja nägema selline.


    Ülaltoodud ekraanipildilt näete, et kõik PHP juhised on esile tõstetud avamärgendiga. Seda tähistust kasutatakse PHP-s kirjutatud koodi töötlemise alustamise ja lõpetamise näitamiseks. Seetõttu on edaspidi kõik PHP koodid selle tähistusega esile tõstetud.

    Samuti võite märkida, et uute lehtede nimed on tehtud nende eesmärki arvestades, nii et saidi struktuur ja kood on paremini tajutavad.

    Siin lõppesid kõik meie muutused. Ja nüüd, kui avame brauseris uuesti avalehe, ei tohiks me saidi eelmise versiooniga muudatusi näha, see peaks avanema samamoodi nagu varem. Kuid kui tulemus osutub midagi valesti, peate viga otsima ülaltoodud toimingutes.

    Värskendame nüüd brauserit ja proovime avada avalehte.


    Nagu näete, avanes meie puhul avaleht probleemideta. Kuid erinevalt saidi eelmisest tööst omandas leht selle välimuse päringu töötlemisel serveris moodustamise tulemusena.

    Seega on meie saidil nüüd esimene dünaamiline leht. Ja pärast sellele muude sarnaste lehtede lisamist võib seda saiti õigustatult nimetada dünaamiliseks koos kõigi sellest tulenevate tagajärgedega, st. sellel on kõik dünaamiliste saitide eelised. Ja me saame seda kontrollida, kui täidame selle tulevikus mitmesuguste funktsioonidega.

    Sellega lõpetame selle veebisaidi arendamise olulise etapi ja järgmises artiklis loome selle jaoks uued dünaamilised lehed. Saidi uusima versiooni lähtekoodid saab nagu tavaliselt alla laadida artikli lõpus olevalt lingilt.

    Saidi lähtefailid

    Saidi lähtefailid koos selles artiklis tehtud värskendustega saab alla laadida manustatud lehelt lisamaterjalid.