Dynaamiset sivut PHP:ssä. PHP. Dynaaminen sivun luonti Luo tavallinen sivun renderöintikomponentti

Viimeisellä oppitunnilla selvitimme, mistä lohkoista matkamalli koostuu, jotta pääsemme töihin. Luodaan ensin kaksi kansiota:

kuvat - tämä kansio sisältää kaikki mallin suunnittelussa käytetyt grafiikkatiedostot. Koska Meillä ei ole vielä suunnittelukehitystä, pudota sitten jokin grafiikkatiedosto tähän kansioon, muuten Joomla ei asenna mallia ja antaa virheilmoituksen, jos kansio on tyhjä.

HUOMIO: Mallin kuvat -kansio ei sisällä sisältögrafiikkaa!

css - tämä kansio sisältää CSS-tyylisivutiedostot. Laitetaan siihen ensin tyhjä template.css-tiedosto, jonka avulla sivuston elementeille määritetään erilaisia ​​suunnittelutyylejä.

Seuraavaksi voit aloittaa päätiedoston index.php luomisen, joka määrittää sivuston elementtien visuaalisen järjestelyn ja kertoo Joomla CMS:lle mihin lohkoon eri komponentit ja moduulit tulee sijoittaa. Tiedosto on PHP:n ja HTML:n yhdistelmä.

Käytän aina vain Macromedia Dreamweaveria kirjoittaessani koodia. Erinomainen ohjelma, suosittelen sitä aloittelijoille, koska... Jos teit virheen työstäessäsi koodia, ohjelma korostaa varmasti virhettäsi.

Sivustolta löydät opetusohjelman Macromedia Dreamweaverille. Jos aiot kehittää verkkosivustoja, sinun tulee hallita tämä ohjelma ainakin alkutasolla, jotta voit muokata mallikoodeja ilman virheitä.

Sivuelementtien (lohkojen) sijoittelu tehdään HTML-koodilla, käytämme DIV-tageja. Mutta tapa, jolla sivustomme toimii Joomla-moottorilla, ts. Se on dynaaminen, jolloin sinun on myös käytettävä PHP-kieltä. Sen avulla määritämme, missä lohkoissa lähtömoduulien paikat sijaitsevat ja millä nimellä näitä paikkoja kutsutaan, puretaanko lohkot vai ei. Yhdistämme tyylisivut ulkoisista tiedostoista, sisällön kielen, määritämme kuinka sivuston koko muuttuu jne.

index.php

Tiedoston otsikko

Tiedoston otsikko koostuu useista osista. PHP-otsikkokoodin ensimmäinen osa on varmistaa, ettei tiedostoa käytetä suoraan turvallisuussyistä.

< ?php
määritelty ("_JEXEC") tai kuolee ;
JHtml::_("behavior.framework" , true ) ;
$sovellus = JFactory::getApplication() ;
?>
< ?php echo "< ?" ; ?> xml version="1.0" koodaus=" < ?php echo $Tämä-> _charset ?> "?>

DOCTYPE on erittäin tärkeä parametri, jonka perusteella selain päättää, miten tämä sivu hahmonnetaan ja miten CSS:ää tulkitaan.

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

Seuraava koodinpätkä hakee asennetun kielen yleisestä määrityksestä.

< html xmlns= "http:// www.w3.org/ 1999/ xhtml" xml:lang= " < ?php echo $Tämä-> kieli; ?> " lang= " < ?php echo $Tämä-> kieli; ?> " ohjaaja = " < ?php echo $Tämä-> suunta; ?> " >

Seuraava on koodinpätkä, joka sisältää ylimääräisiä otsikkotietoja, jotka on asetettu yleisessä määrityksessä. Näet nämä tiedot katsomalla minkä tahansa verkkosivun lähdekoodia. Erityisesti nämä ovat sisällönkuvauskenttiä, joista tiedät jo.

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

Seuraavat otsikkorivit sisältävät linkkejä tärkeimpiin Joomlan CSS-tyyleihin.

< link rel= "stylesheet" href= "< ?php echo $Tämä-> baseurl ?> / templates/ system / css/ system .css" type="text /css" / >
< link rel= "stylesheet" href= "< ?php echo $Tämä-> baseurl ?> / templates/ system / css/ general.css" type="text /css" / >

Mallin suunnittelutyylejä varten linkitämme tiedostoon, joka sisältää peräkkäiset tyylisivut template.css, joka sijaitsee CSS-kansiossa. Ei haittaa, että tämä tiedosto on toistaiseksi tyhjä, tärkeintä on yhdistää se, käsittelemme suunnittelua myöhemmin, kun asennamme mallin Joomlaan. Tämä helpottaa tuloksen tarkkailua.

< link rel= "stylesheet" href= "< ?php echo $Tämä-> baseurl ?> /templates/< ?php echo $Tämä-> malli ?> /css/template.css" type="text /css" / >

Seuraavan koodinpätkän avulla voimme tiivistää vasemman tai oikean sarakkeen, jos vasemmalla ja oikealla ei ole moduuleja. Jos molemmat sarakkeet tiivistetään, sisältö vie 100 % sivun leveydestä. Jos mukana on vain yksi sarake, sisältö vie 80%. Kun kaksi saraketta on käytössä, sisällön osuus on 60 % sivun leveydestä.

< ?php
jos ($ Tämä-> countModules("vasen ja oikea" ) = = 0) $contentwidth = "100" ;
jos ($ Tämä-> countModules("vasen tai oikea" ) = = 1) $contentwidth = "80" ;
jos ($ Tämä-> countModules("vasen ja oikea" ) = = 1) $contentwidth = "60" ;
?>

Otsikko sulkeutuu

< / head>

< body>

"Sivu"-lohko sisältää vain sivuston sivun suunnittelun, joka on 950 pikseliä leveä.

< div id= "page" >

"Yläosa" sijaitsee aivan sivun yläosassa ja sisältää kaksi lohkoa "logo" ja "user1".

< div id= "top" >

"Logo" bokehissa asetamme logon graafisen tiedoston, joka määritellään tyylisivuilla. Mutta kirjoitamme sivuston nimen automaattisen näytön index.php-tiedostoon ja asetamme nimen H1-tunnisteeseen, mikä on erittäin tärkeää hakukoneoptimoinnin kannalta.

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

Määritetään sijainti “user1” samannimiseen lohkoon sivustohakumoduulin näyttämiseksi.

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

Vaakasuuntaisen valikkomoduulin lähtö “user2”-lohkossa “user2”-asennossa. Lohko romahtaa, jos siinä paikassa ei ole moduulia.

< ?php if ($Tämä-> countModules("käyttäjä2" ) ) : ?>
< div id= "user2 " >
< jdoc:include type= "modules" name= "user2" style= "xhtml" / >
< / div>
< ?php endif ; ?>

Seuraavaksi tulee sivuston otsikkolohko. Siinä määritämme "otsikon" sijainnin moduulien näyttämistä varten. Lohko romahtaa, jos siinä paikassa ei ole moduulia. Laajensin tarkoituksella tämän lohkon ominaisuuksia niin, että siihen pystyin sijoittamaan otsikkokuvan lisäksi myös kuvankiertäjät.

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

Lohkossa “user3” määritämme “user3”-paikan moduulien tulostamista varten.

Lohko romahtaa, jos moduulin lähtöä ei ole tässä kohdassa "user3".

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

Vasemman sarakkeen lohko avautuu, joka romahtaa, jos "vasemmalla" -asennossa ei ole moduuleja.

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

Avautuu tärkein sisältölohko, joka voi kattaa 100 % sivun leveydestä, 80 % ja 60 % mukana olevien sarakkeiden lukumäärästä riippuen.

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

Viestien näyttäminen komponenteissa

< jdoc:include type= "message" / >

Tulosta sisällön sisältö.

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

Oikean sarakkeen lohko avautuu, joka romahtaa, jos "oikeassa" asennossa ei ole moduuleja.

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

"Alatunniste" -lohkon tulos, joka on suunniteltu näyttämään "HTML-koodi" -moduuli tekijänoikeustiedoilla. Voit myös sijoittaa alimman vaakavalikon tai sisällön esitysmoduulin tähän. Lohko kutistuu, jos useampi kuin yksi moduuli näkyy tässä "alatunnisteen" kohdassa

< ?php if ($Tämä-> countModules("alatunniste")) : ?>
< div id= "footer" >
< jdoc:include type= "modules" name= "footer" style= "xhtml" / >
< / div>
< ?php endif ; ?>

Sivuston sivulohko "sivu", runko ja kaikki koodi on suljettu.

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

Olemme luoneet täydellisen index.php-tiedoston. Nyt tiedät mitä komentoja käytetään ja missä järjestyksessä mallilohkot näytetään.

HUOMIO: Jotta mallikoodi voidaan lukea joomlan admin-paneelista, index.php-tiedosto on avattava AkelPad-editorissa ja tallennettava UTF-8-koodauksella samalla, kun poistetaan BOM-valintaruudun valinta. Jos käytit Macromedia Dreamweaver -ohjelmaa tiedoston käsittelyyn, sinun on valittava ylävalikosta "Muokkaa"> "Sivun ominaisuudet" ja valittava asiakirjan Unicode-koodaus (utf-8) ja poistettava valinta kohdasta "Ota Unicode-allekirjoitukset käyttöön (BOM). )". Suosittelen kuitenkin vahvasti, että et muokkaa koodia Joomlan admin paneelista, jos jokin menee sekaisin - paluuta ei ole, toisin kuin Macromedia Dreamweaver -ohjelmassa, jossa voit aina peruuttaa tehdyt muutokset.

Itse lohkojen suunnittelu kuvataan template.css:ssä. Mutta määritämme tyylisivut sen jälkeen, kun malli on asennettu Joomla 3:een (joomla 2.5), ja tätä varten meidän on luotava

Monet lukijat missä tahansa tietokoneita käsittelevässä kirjassa käyvät läpi kaiken, mikä ei ole välitöntä kiinnostavaa, ja siirtyvät siihen, mitä he todella tarvitsevat. haluta tietää. Henkilökohtaisesti näin teen. Siinä ei kuitenkaan ole mitään väärää - harvoin on teknisiä kirjoja, jotka täytyy lukea kannesta kanteen. Tai ehkä teit sen – ohitit ensimmäiset kahdeksan lukua ja valitsit tämän luvun, koska sillä oli mielenkiintoisin otsikko? Ja kuka haluaa tuhlata aikaa yksityiskohtiin, kun toinen projekti on tulessa työssä?

Onneksi tällainen kiire ei estä sinua hallitsemasta kunnolla kirjan toisen osan materiaalia, joka on omistettu PHP:n käyttämiselle sivustojen rakentamiseen ja vuorovaikutukseen Webin kanssa. Tässä luvussa opit helposti muokkaamaan verkkosivujen sisältöä ja navigoimaan Webissä linkkien ja erilaisten vakiotoimintojen avulla. Seuraava luku täydentää esitettyä materiaalia - siinä tarkastellaan yksityiskohtaisesti vuorovaikutustapoja käyttäjän kanssa HTML-lomakkeissa. Luvussa 11 kuvataan käyttöliittymän organisointia tietokantoihin. Toisen osan loput luvut käsittelevät ei-triviaaleja PHP-ohjelmoinnin puolia.

On kuitenkin muistettava, että osan 1 materiaali ehdottoman välttämätöntä normaalille PHP:n tuntemukselle. Oletuksena on, että olet jo lukenut osan 1, joten esimerkeissä käytetään monia aiemmin kuvattuja käsitteitä. Joten jos luet osan kirjasta, sinun on palattava aika ajoin takaisin edellisiin lukuihin ja kurottava kiinni.

Yksinkertaiset linkit

<а href = "date.php">

$link = "päivämäärä.php";

Tulosta "<а href = \"$link\">Katso tämän päivän päivämäärä
\n"

Ihmettelet todennäköisesti, miksi linkkikoodissa on kenoviiva (\) ennen lainausmerkkejä (")? Tosiasia on, että lainausmerkit ovat PHP:ssä erikoismerkkejä ja niitä käytetään rivinerottimina. Siksi lainausmerkit ovat kirjaimia merkkijonoissa, jotka on suojattava .

Jos lainausmerkkien pakottaminen ärsyttää sinua, ota magic_quotes_gpc-tila käyttöön php.ini-tiedostossasi. Tuloksena on kaikki heittomerkit, lainausmerkit, kenoviivat ja nollamerkit. tekstissä on automaattisesti pakotettu!

Kehitetään annettua esimerkkiä. Voit näyttää linkkiluettelon nopeasti selaimessa käyttämällä taulukkoa:

// Luo joukko osia

$contents - array("opetusohjelmat", "artikkelit", "skriptit", "yhteystiedot");

// Toista ja näytä taulukon jokainen elementti peräkkäin

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

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

// - erikoismerkintä marker point endfor;

Tiedoston osat (mallit)

Olemme tulleet yhteen PHP:n suosikkiominaisuuksistani. Malli (verkko-ohjelmointiin liittyen) on osa web-asiakirjaa, jota aiot käyttää useilla sivuilla. Mallit, kuten PHP-funktiot, säästävät sinua tarpeettomalta sivun sisällön ja ohjelmakoodin kopioimiselta/liittämiseltä. Sivuston laajuuden kasvaessa mallien merkitys kasvaa, koska ne mahdollistavat helpon ja nopean muokkauksen koko sivuston tasolla. Tässä osiossa kuvataan joitain mahdollisuuksia, jotka avautuvat käytettäessä yksinkertaisia ​​malleja.

Yleensä yleiset sisällön/koodin osat (eli mallit) tallennetaan erillisiin tiedostoihin. Kun rakennat verkkodokumenttia, yksinkertaisesti "sisällytät" nämä tiedostot asianmukaisiin paikkoihin sivulla. PHP:ssä tätä varten on kaksi funktiota: include() ja request().

sisällyttää() ja vaatia()

Yksi PHP:n merkittävimmistä ominaisuuksista on kyky rakentaa malleja ja ohjelmointikirjastoja ja lisätä ne sitten uusiin skripteihin. Kirjastojen käyttö säästää aikaa ja vaivaa yhteisten toimintojen käytössä eri verkkosivustoilla. Lukijat kanssa

kokemusta ohjelmoinnista muilla kielillä (kuten C, C++ tai Java) ja tunnet funktiokirjastojen käsitteen ja niiden käytön toiminnallisuutta laajentavissa ohjelmissa.

Yhden tai useamman tiedoston sisällyttäminen komentosarjaan tehdään PHP:n vakiofunktioilla request() ja include(). Kuten seuraavassa osiossa osoitetaan, jokainen näistä toiminnoista on voimassa tietyssä tilanteessa.

Toiminnot

PHP:ssä on neljä toimintoa tiedostojen sisällyttämiseksi PHP-skripteihin:

  • sisältää();
  • include_once();
  • vaatia();
  • vaatia_once().

Nimien samankaltaisuudesta huolimatta nämä toiminnot ratkaisevat erilaisia ​​ongelmia.

include()-funktio sisällyttää tiedoston sisällön komentosarjaan. include()-funktion syntaksi on:

sisällyttää (tiedostotiedosto]

Funktiolla include() on yksi mielenkiintoinen ominaisuus - se voidaan suorittaa ehdollisesti. Esimerkiksi jos funktiokutsu sisältyy if-komentolohkoon. silloin tiedosto sisällytetään ohjelmaan vain, jos ehto i f on tosi. Jos includeO-funktiota käytetään ehdollisessa komennossa, niin se on pakko olla suljettu kihariin aaltosulkeisiin tai vaihtoehtoisiin erottimiin. Vertaa luetteloiden 9.1 ja 9.2 syntaksien eroja.

Listaus 9.1. Väärä include() käyttö

jos (jokin_ehdollinen)

include("text91a.txt"); muu

include("text91b.txt");

Listaus 9.2. Oikea käyttö include()

jos (some_conditional):

include("text91a.txt");

include("text91b.txt");

Kaikki PHP-koodi sisällytettävässä tiedostossa Välttämättä sijaitsee PHP-tageissa. Älä oleta, että pelkkä PHP-komennon tallentaminen tiedostoon varmistaa, että se käsitellään oikein:

Sen sijaan sinun on käärittävä komento asianmukaisiin tunnisteisiin, kuten seuraava esimerkki osoittaa:

print "tämä on virheellinen sisällytystiedosto";

Funktio include_once() tekee saman kuin include(), yhdellä poikkeuksella: ennen tiedoston sisällyttämistä ohjelmaan se tarkistaa, onko se jo sisällytetty. Jos tiedosto on jo sisällytetty, include_once()-kutsu ohitetaan, ja jos ei, tavallinen tiedoston sisällyttäminen tapahtuu. Muissa suhteissa include_once() ei eroa sisällytyksestä(). include_once()-funktion syntaksi on:

include_once(tiedostotiedosto)

Yleensä request()-funktio on samanlainen kuin include() - se sisältää myös mallin tiedostossa, jossa request()-kutsu sijaitsee. Reikala()-funktion syntaksi on:

vaatia (tiedostotiedosto)

On kuitenkin yksi tärkeä ero request()- ja include()-funktioiden välillä. Reik()-parametrin määrittämä tiedosto sisältyy skriptiin riippumatta siitä, missä skriptissä on request()-parametri. Jos esimerkiksi kutsut requi re():tä if-lohkossa, jos ehto on epätosi, tiedosto sisällytetään silti komentosarjaan!

Monissa tilanteissa on kätevää luoda muuttujia ja muita tietoja sisältävä tiedosto, jota käytetään koko sivustolla, ja sisällyttää se sitten tarvittaessa. Vaikka tämän tiedoston nimi on mielivaltainen, kutsun sitä yleensä init.tpl:ksi (lyhenne sanoista "initializaion.template"). Listaus 9.3 näyttää, miltä hyvin yksinkertainen init.tpl-tiedosto näyttää. Listauksessa 9.4 init.tpl:n sisältö sisältyy skriptiin, jossa on request().

Listaus 9.3. Esimerkki alustustiedostosta

$site_title = "PHP Reseptit";!}

$contact_email = " [sähköposti suojattu]";

$contact_name = "WJ Gilmore";

Listaus 9.4. Käyttämällä init.tpl-tiedostoa

<? print $site_title; ?>

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

URL-osoitteen välittäminen vaati()-kutsussa on sallittua vain, jos "URL fopen wrappers" -tila on käytössä (tämä tila on oletuksena käytössä).

Sivuston koon kasvaessa saattaa käydä ilmi, että jotkin tiedostot sisältyvät skriptiin useita kertoja. Joskus tämä ei aiheuta ongelmia, mutta joissain tapauksissa tiedoston lisääminen uudelleen aiheuttaa muuttuneiden muuttujien arvojen nollaamisen. Jos include-tiedosto määrittää funktioita, nimeämisristiriitoja saattaa ilmetä. Tämän sanottuamme tulemme seuraavaan funktioon - request_once().

Funktio request_once() varmistaa, että tiedosto sisällytetään komentosarjaan vain kerran. Kun requi re_once() on kutsuttu, kaikki muut yritykset sisällyttää sama tiedosto ohitetaan. request_once()-funktion syntaksi on:

Alat todennäköisesti käyttämään tiedostojen lisäysominaisuuksia useammin, kun verkkosovellustesi koko alkaa kasvaa. Näitä toimintoja esiintyy usein tämän kirjan esimerkeissä koodin redundanssin vähentämiseksi. Ensimmäisiä esimerkkejä käsitellään seuraavassa perusmallien rakentamisen periaatteita käsittelevässä osiossa.

Rakennuskomponentit

Kun määrittelen tyypillisen verkkosivun rakennetta, jaan sen yleensä kolmeen osaan: ylä-, runko- ja alatunniste. Yleensä useimmilla oikein järjestetyillä verkkosivustoilla on otsikko, joka pysyy käytännössä muuttumattomana; pääosa näyttää sivuston pyydetyn sisällön, joten se muuttuu usein; Lopuksi alatunniste sisältää tekijänoikeustietoja ja navigointilinkkejä. Alatunniste, kuten otsikko, pysyy yleensä ennallaan. Älä ymmärrä minua väärin – en yritä tukahduttaa luovia toiveitasi. Olen nähnyt monia mahtavia verkkosivustoja, jotka eivät noudata näitä periaatteita. Yritän vain keksiä yleisen rakenteen, joka voi toimia lähtökohtana jatkotyölle.

Otsikko

Otsikkotiedosto (kuten listauksessa 9.5) näkyy melkein jokaisessa PHP-yhteensopivassa verkkosivustossani. Tämä tiedosto sisältää

koko sivuston tiedot, kuten otsikko, yhteystiedot ja jotkin HTML-sivun koodikomponentit.

Listaus 9.5. Esimerkki otsikkotiedostosta

// Tiedosto: header.tpl

// Tarkoitus: PhpRecipes-verkkosivuston otsikkotiedosto.

$sivuston_nimi = "PHPReseptit";

$site_email= " [sähköposti suojattu]";

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

<? print $site_name; ?>

// Tulosta nykyinen päivämäärä ja aika

tulostuspäivämäärä("P d, h:i a");

Melko usein vierailijoiden pääsyä mukana oleviin tiedostoihin rajoitetaan, varsinkin jos nämä tiedostot sisältävät arkaluonteisia tietoja (esimerkiksi salasanoja). Apachessa voit estää tiettyjen tiedostojen katselun muokkaamalla http.conf- tai htaccess-tiedostoja. Seuraava esimerkki näyttää, kuinka voit estää kaikkien tiedostojen katselun, joiden tiedostotunniste on .tpl:

Tilaa salli, estä

Salli alkaen 127.0.0.1

PHP- ja verkkosivustojen tietoturvaongelmia käsitellään yksityiskohtaisesti luvussa 16.

Juokseva otsikko

Alatunniste on yleensä sivuston sivujen alareunassa oleva tieto - yhteystiedot, linkit ja tekijänoikeustiedot. Nämä tiedot voidaan sijoittaa erilliseen tiedostoon ja sisällyttää malliksi samalla tavalla kuin otsikko. Oletetaan, että uuden vuoden alkaessa sinun on muutettava tekijänoikeustietoja ja saatettava ne muotoon "Copyright © 2000-2001". Vaihtoehtoja on kaksi: Vietä jouluaatto kiihkeästi muokkaamalla satoja staattisia sivuja. tai käytä mallia, joka on esitetty listauksessa 9.6. Yksi yksinkertainen muutos ja voit palata lomarutiiniin.

Listaus 9.6. Esimerkki alatunnistetiedostosta (footer.tpl)

ottaa yhteyttä |

yksityisyytesi

Huomaa $site_email globaalin muuttujan käyttö alatunnistetiedostossa. Tämän muuttujan arvo on koko sivun laajuinen, ja oletamme, että header.tpl- ja footer.tpl-tiedostot sisällytetään yhdelle viimeiselle sivulle. Huomaa myös $site_path esiintyminen Tietosuoja-linkissä. Sisällytän aina kaikkiin malleihini linkkien koko polun - jos linkin URL-osoite olisi vain privacy.php, alatunnistetiedosto koodataan tiettyyn hakemistoon.

Pääosa

Sivun pääosa sisältää ylä- ja alatunnisteen sisällön. Pohjimmiltaan se on pääosa, joka sisältää sivuston vierailijoita kiinnostavat tiedot. Ylätunniste näyttää vaikuttavalta, alatunniste sisältää hyödyllistä tietoa, mutta pääosassa sivua käyttäjät palaavat sivustolle yhä uudelleen. Vaikka en voi antaa neuvoja tietystä sivurakenteesta, Listing 9.7:n kaltaiset mallit yksinkertaistavat sivun hallintaa huomattavasti.

Listaus 9.7. Esimerkki sivun pääosasta (index_body.tpl)

/tutorials.php">opetusohjelmia

artikkeleita

skriptit

ota yhteyttä

Tervetuloa PHPRecipesiin. aloituspaikka PHP-skripteille, opetusohjelmille,

ja tietoa gourmet-ruoasta!

Kaikki yhdessä: ylä-, alatunniste ja teksti

Ehkä mielialani tiivistää parhaiten Eversti "Hannibal" Smithin (George Peppard) rivi kuuluisasta TV-sarjasta "The A-Team": "Rakastan sitä, kun asiat loksahtavat paikoilleen." Olen kokenut jotain vastaavaa, kun erilaiset mallit yhdistyvät täydelliseksi verkkoasiakirjaksi. Yhdistämällä kolme asiakirjan osiota: header.tpl, index_body.tpl ja footer.tpl, voit nopeasti rakentaa yksinkertaisen sivun, joka on esitetty listauksessa 9.8.

Listaus 9.8. Index.php-sivun rakentaminen sisällyttämällä siihen useita tiedostoja

// Tiedosto: index.php

// Kohde: PHPRecipes-kotisivu

// Tulosta otsikko

include("header.tpl");

// Tulostaa pääosan

include("index_body.tpl");

// Näytä alatunniste

include("alatunniste.tpl");

Niin miten? Kolme yksinkertaista komentoa ja sinulla on valmis sivu. Viimeisen sivun teksti näkyy listauksessa 9.9.

Listaus 9.9. Listing 9.8:aan rakennettu HTML-sivu (index.php)

PHPReseptit

23. elokuuta klo 15.17

opetusohjelmia

artikkeleita

käsikirjoituksia

ottaa yhteyttä

Tervetuloa PHPRecipesiin, PHP-skriptien, opetusohjelmien,

ja gourmet-ruoanlaittovinkkejä ja -reseptejä!

Copyright 2000 PHPRecipes. Kaikki oikeudet pidätetään.

ottaa yhteyttä |

yksityisyytesi

Kuvassa Kuva 9.1 näyttää miltä tuloksena oleva sivu näyttää selaimessa. Vaikka en yleensä käytä taulukon reunuksia, piirsin ne tällä kertaa esiin, jotta sivun kolme osaa erottuisivat kuvassa selkeämmin.

Riisi. 9.1. Listaukseen rakennetun sivun ulkoasu 9.8

Mallin optimointi

Toisessa (mielestäni parempi) vaihtoehdossa mallit on suunniteltu erillisessä tiedostossa sijaitseviksi funktioiksi. Tämä tarjoaa lisärakennetta malleillesi. Kutsun tätä tiedostoa alustustiedostoksi ja tallennan siihen muuta hyödyllistä tietoa. Koska olemme jo tarkastelleet suhteellisen pitkiä ylä- ja alatunnisteesimerkkejä, luetteloita 9.10 ja 9.11 on lyhennetty hieman havainnollistamaan uutta ideaa.

Listaus 9.10. Optimoitu sivustomalli (site_init.tpl)

// Tiedosto: site_init.tpl

// Tarkoitus: PhpRecipes-alustustiedosto

$sivuston_nimi = "PHPReseptit";

$site_email = " [sähköposti suojattu]";

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

funktio show_header($sivuston_nimi) (

<? print $site_name: ?>

Tämä on otsikko

funktio näytä alatunniste()

Tämä on alatunniste

Listaus 9.11. Alustustiedoston käyttäminen

// Sisällytä alustustiedosto

include("site_init.tpl");

// Tulosta otsikko

näytä otsikko($sivuston_nimi);

// Kehon sisältö Tämä on kehon tietoja

// Näytä alatunniste Show_footer();

Projekti: sivugeneraattori

Vaikka suurin osa luomistani sivustoista on luonut pääsivun sisällön tietokannasta luettujen tietojen perusteella, on aina muutamia sivuja, jotka pysyvät käytännössä ennallaan. Erityisesti he voivat näyttää tietoja kehitystiimistä, yhteystietoja, mainoksia jne. Yleensä tallennan nämä "staattiset" tiedot erilliseen kansioon ja lataan ne PHP-skriptillä, kun pyyntö tulee. Tietenkin sinulla on kysymys - jos tämä on staattista tietoa, mihin PHP-skripti on tarkoitettu? Miksi et lataa tavallisia HTML-sivuja? PHP:n etuna on, että voit käyttää malleja ja lisätä staattisia katkelmia tarpeen mukaan.

<а href = "/static.php?content=$content">Staattinen sivun nimi

Aloitetaan luomalla staattisia sivuja. Yksinkertaisuuden vuoksi rajoitan kolmeen sivuun, jotka sisältävät sivuston tiedot (listaus 9.12), mainoksia (listaus 9.13) ja yhteystiedot (listaus 9.14).

Listaus 9.12. Tietoja sivustosta (about.html)

Tietoja PHPRecipesistä

Mikä ohjelmoija ei sekoita koko yön ohjelmointia gourmet-kekseihin parasta, mitä rakastamme eniten: PHP ja ruoka!

Aivan oikein, lukijat, opetusohjelmat, käsikirjoitukset, souffleet ja paljon muuta. 0nly osoitteessa PHPRecipes.

Mainostiedot

Riippumatta siitä, tulevatko he oppimaan uusimpia PHP-tekniikoita vai harjaamaan miten

voit lyödä vetoa, että lukijamme ovat päättäjiä. He ovat Teollisuus

ammattilaisia, jotka tekevät päätökset siitä, mitä heidän yrityksensä ostaa.

Mainostiedot, ota yhteyttä

">[sähköposti suojattu].

Listaus 9.14. Yhteystiedot (contact.html)

Ota meihin yhteyttä

Onko sinulla koodausvinkkiä?

Tiedätkö täydellisen täytteen sokeroidulle jamssille?

Kerro meille! Ota yhteyttä tiimiin osoitteessa [sähköposti suojattu].

Siirrytään static.php-sivun rakentamiseen, joka näyttää pyydetyt staattiset tiedot. Tämä tiedosto (katso luettelo 9.15) sisältää sivustomme sivukomponentit ja alustustiedoston site_init.tpl.

Listaus 9.15. Staattisten sivujen yleinen tuloste (static.php)

// Tiedosto: static.php

// Tarkoitus: näyttää pyydetyt staattiset sivut.

// VAROITUS: tämä olettaa, että tiedosto on "site_init.tpl" ja se on siinä

// staattiset tiedostot ovat samassa hakemistossa.

// Lataa funktiot ja muuttujat include("site_init.tpl"):

// Näytä otsikko show_header($site_name);

// Tulosta pyydetty sisältö include("$content.html"):

// Näytä alatunniste show footer();

Nyt kaikki on valmista pääskenaarion rakentamiseksi. Sisällytä se vain sivulle

<а href = "static.php?content=about">Staattinen sivun nimi

Mainostiedot

Ota meihin yhteyttä

Jos napsautat jotakin näistä linkeistä, selaimesi lataa vastaavan staattisen sivun, joka on upotettu static.php:hen!

Tulokset

Tässä luvussa tutustuit ensisijaiseen tehtävään, jota varten PHP luotiin - verkkosivujen dynaamiseen rakentamiseen. Seuraavat asiat pohdittiin:

  • URL-osoitteiden käsittely;
  • dynaamisen sisällön rakentaminen;
  • perusmallien sisällyttäminen ja rakentaminen.

Luku päättyy sivugeneraattoriin, ohjelmaan, joka lataa staattiset sivut malliin ja helpottaa suurten staattisten HTML-sivujen tukemista.

Seuraava luku keskittyy PHP:n käyttämiseen yhdessä HTML-lomakkeiden kanssa parantamaan huomattavasti sivustosi interaktiivisuutta. Ja sitten - vuorovaikutus tietokantojen kanssa! Sinulla on paljon mielenkiintoista opittavaa.

Aiemmista oppitunneista opimme, että GET-menetelmää käyttämällä voimme välittää joitain parametreja suoraan URL-osoitteeseen. Mikään ei kuitenkaan estä meitä tekemästä tätä ilman lomakkeita, vain luettelemalla ne URL-osoitteessa.

Voimme välittää parametreja URL-osoitteen kautta. Ja voimme saada nämä parametrit suoraan skriptiin. Mikä sitten estää meitä näyttämästä käyttäjälle erilaisia ​​sivuja URL-osoitteen parametrien mukaan?

Dynaamisen sivun luominen

Jos haluat näyttää eri sivuja käyttäjälle, sinun on valmisteltava sisältöä. Anna sen olla moniulotteisessa taulukossa:

"Creating Dynamics pages", "content" => "Dynaamisia sivuja käsittelevän artikkelin teksti." ], [ "title" => "Kuinka saada kissanpentu kiinni", "sisältö" => "Kissanpentuja käsittelevän artikkelin teksti." ] ]; ?>

URL-osoitteen dynaamista parametria kutsutaan nimellä id, ja saamme sen kiinni $_GET["id"] . Voisimme lisätä id-kentän jokaiseen taulukon elementtiin, mutta sitten meidän olisi iteroitava kaikki elementit ja etsittävä alitaulukko halutulla tunnuksella. Siksi on paljon helpompaa käyttää päätaulukon avaimia tunnisteina.

Yksinkertaisesti sanottuna otamme tunnuksen ja yritämme löytää artikkelin tällä avaimella $articles-taulukosta. Se näyttää tältä:

Jäljelle jää vain hahmotella valikon tulos ja tarkistaa id:n oikeellisuus. Se osoittautuu oikeaksi PHP-reitittimeksi!

"Kotisivu", "sisältö" => "Sivustoamme koskevan artikkelin teksti" ], [ "title" => "Dynaamisten sivujen luominen", "sisältö" => "Dynaamisia sivuja koskevan artikkelin teksti." ], [ "title" => "Kuinka saada kissanpentu kiinni", "sisältö" => "Kissanpentuja käsittelevän artikkelin teksti." ] ]; # Jos tunnus hyväksytään, kirjoita artikkeli $artikkeliin tai nulliin, jos tällä tunnuksella ei ole artikkelia if(isset($_GET["id"])) $current_article = $articles[$_GET["id"]] ?? tyhjä; # Jos id ei ole välitetty, tämä on pääsivu, voimme näyttää sivun id = 0 muuten $current_article = $artikkelit; ?> $artikkeli): ?> ">

Virhe 404: Sivua ei löydy

Nyt voit luoda dynaamisia sivustoja, joissa sivujen määrä riippuu taulukon elementtien määrästä PHP-tiedostojen sijaan. :) Jos sivustolla pitäisi olla erityyppisiä sivuja, esimerkiksi artikkeli ja tuote, voit välittää sivutyypin toiseksi parametriksi: site.ru?type=article&id=5 .

Tämä järjestelmä ei tietenkään ole täydellinen. Hetken kuluttua opit tekemään normaalin CNC:n (kätevämpiä URL-osoitteita, esimerkiksi site.ru/articles/5/) ja tallentamaan artikkeleita tiedostoon tai tietokantaan.

Luodaksesi lupaavan, laajennettavan ja tehokkaan verkkosivuston monimutkaisuudesta riippumatta, sinun tulee aloittaa jostain yksinkertaisesta. Tämä prosessi ei ole helppo, se vaatii tiettyjä perustietoja PHP:stä ja MySQL:stä, mutta jos ajattelee sitä kohta kohdalta, voit luoda eräänlaisen "työsuunnitelman", josta on hyötyä uusia sivustoja luotaessa. Valmistetaan "ydin" ja pohja projektille. Aluksi siitä tulee tavallinen käyntikorttisivusto, mutta sitten toiminnallisuutta lisäämällä siitä voi tehdä mitä tahansa. Joten aloitetaan.

1. Tietokannan valmistelu. Luo ensimmäinen taulukko MySQL-tietokannassa

Luo uusi tietokanta, esimerkiksi "omasivusto". Henkilökohtaisesti olen tottunut työskentelemään UTF-8-koodauksella, joten teen varauksen heti: varmista, että kaikki sivuston tekstitiedostot, itse tietokanta, taulukot ja taulukkokentät ovat samassa koodauksessa.
Luomme taulukon uuteen tietokantaan. Kutsutaan sitä "sivuiksi". Tämä taulukko tallentaa tulevan sivuston staattiset sivut ja tiedot niistä. Taulukon tulee sisältää seuraavat kentät:

  • page_id - sivun tunniste (SMALLINT, ensisijainen avain, auto_increment);
  • page_alias - sivualias CNC-osoiteriville (VARCHAR, 255);
  • page_title - sivun otsikko selainikkunassa (VARCHAR, 255);
  • page_meta_d - sisällönkuvaustunnisteen sivun metakuvaus (VARCHAR, 255);
  • page_meta_k - meta-avainsanat metaavainsanatunnisteelle (VARCHAR, 255);
  • sivu_h1 - sivun otsikko (VARCHAR, 255);
  • page_s_desc - lyhyt kuvaus materiaalista, esimerkiksi jos sivuston materiaalit ovat blogin muodossa (TEKSTI);
  • page_content - sivun pääteksti, joka näytetään sivuston keskisarakkeessa (TEKSTI);
  • page_publish - sisältää "Y" - jos sivu on julkaistu, tai "N" - jos se on piilotettu (CHAR, oletus "Y").

Välittömästi taulukon luomisen jälkeen lisäämme siihen sivuston pääsivun arvot. Suosittelen lisäämään arvon "home" pääsivun "page_alias" -kenttään. Sisällönkuvauskentät vastaavat koko sivuston teemaa. Samalla tavalla voit luoda muita sivuja, esimerkiksi "Tietoja yrityksestä" aliaksella "about" ja omilla sisällönkuvauskentilläsi tai "Yhteystiedot" aliaksella "yhteystiedot" jne.

2. Luo sivuston määritystiedosto

Sivuston juurikansioon, jonka pitäisi olla tyhjä tässä vaiheessa, luomme "cfg"-kansion ja suljemme siihen .htaccess-komennolla pääsyn "kiellä kaikki" -käskyllä. Luo core.php-tiedosto, jossa on seuraava sisältö:

// MYSQL
luokka MyDB
{
var $dblogin = "juuri"; // KIRJAUDU TIETOKANTAAN
var $dbpass = ""; // SALASANASI TIETOKANTAAN
var $db = "omasivusto"; // SIVUSTON TIETOKANNAN NIMI
var $dbhost="localhost";

Var $linkki;
var $kysely;
var $err;
var $tulos;
var $data;
var $fetch;

Funktio connect() (
$this->link = mysql_connect($this->dbhost, $this->dblogin, $this->dbpass);
mysql_select_db($this->db);
mysql_query("ASETA NIMET utf8");
}

Funktio close() (
mysql_close($this->link);
}

Funktio suorita($query) (
$this->query = $kysely;
$this->result = mysql_query($this->query, $this->link);
$this->err = mysql_error();
}
funktio rivi() (
$this->data = mysql_fetch_assoc($this->result);
}
funktio fetch() (
while ($this->data = mysql_fetch_assoc($this->result)) (
$this->fetch = $this->data;
palauttaa $this->fetch;
}
}
funktio stop() (
unset($this->data);
unset($this->result);
unset($this->fetch);
unset($this->err);
unset($this->query);
}
}

Tämä tiedosto sisältää tällä hetkellä vain yksinkertaisen tietokantayhteysluokan, mutta tulevaisuudessa voit lisätä siihen useita hyödyllisiä toimintoja, jotka ovat käytettävissä mistä tahansa sivustokoodin kohdasta. Älä unohda vaihtaa tietokannan kirjautumistunnusta ja salasanaa.

Jos työskentelet Windows-ympäristössä, voin suositella . Tässä editorissa on rivinumerointi ja se muuntaa tekstin helposti koodauksesta toiseen. HUOMIO! Jos käytät UTF-8-koodausta, muunna tiedostot UTF-8-muotoon ilman tuoteluetteloa - tämä auttaa välttämään ongelmia tulevaisuudessa.

3. Luo index.php - pääsivuston ohjain

Asetustiedosto on luotu. Nyt sivuston juurikansioon luomme index.php:n - tämä on sivuston pääskripti, eräänlainen "pääohjain". Index.php-tiedoston sisältö:

define("INDEKSI", ""); // PÄÄOHJAIMEN VAKION ASETTAMINEN

Require_once($_SERVER."/cfg/core.php"); // YDINTEN KYTKEMINEN

// YHTEYS DB:hen
$db = uusi MyDB();
$db->connect();

// PÄÄOHJAIN
kytkin ($_GET) (
asia "sivu":
include($_SERVER."/com/page.php");
tauko;
oletus:
include($_SERVER."/com/home.php");
tauko;
}

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

$_GET-muuttuja kertoo pääohjaimelle, mikä sivuston komponentti ladataan pyydettäessä. Tällä hetkellä sivustollamme on vain kaksi komponenttia: "sivu" ja "pääsivu" (periaatteessa tavallisen sivun näyttämiseen pärjää yhdellä komponentilla, mutta usein sivuston pääsivun ulkoasu poikkeaa tavallisista valikkokohtasivuista) . Pääohjaimen logiikka on seuraava: vaaditun komponentin nimi puretaan URL-merkkijonosta ($option muuttujan arvo), ja sen arvosta riippuen sisällytetään itse komponentin tiedosto (sisältyy /com-kansio). Komponenttitiedosto tekee kaiken tarvittavan työn, poimii tiedot tietokannasta ja kirjoittaa ne muuttujiin siirrettäväksi suunnittelupohjaan. Aivan lopussa yhdistetään sivuston suunnittelutiedosto, johon siirretään kaikki komponenteista poimitut muuttujat ja tiedot. Tämä kuulostaa paljon monimutkaisemmalta kuin se toimii.

4. Luo tavallinen sivutulostuskomponentti

Luo sivuston juureen "com"-kansio - komponenttitiedostot tallennetaan siihen. Sivustokomponentti on käsittääkseni tiedosto, jossa käsitellään sivuston eri osien tietoja. Esimerkiksi tavallinen sivukomponentti hakee aineiston otsikon, kuvauksen ja tekstin tietokannasta ja kirjoittaa ne muuttujiin $otsikko, $meta_d, $meta_k, $content jne. Nämä tiedot siirretään sitten suunnittelumalliin ( voit luoda oman suunnittelumallin jokaiselle komponentille ) ja ne näytetään käyttäjälle HTML-sivuna. Esimerkiksi luettelokomponentti, joka voitaisiin luoda tulevaisuudessa, tekisi melkein saman asian, mutta tuotetiedoilla - ja sillä on omat erityispiirteensä, muut taulukon kentät jne. Siksi jokaiselle sivuston toiminnalliselle osalle kannattaa luoda erillinen komponentti. MVC-järjestelmässä (Model-View-Controller) komponentti toimii mallina.

Luo tiedosto "page.php" "com"-kansioon. Tiedoston sisältö on seuraava:

/* SIVUN KOMPONENTTI */
$alias = $_GET;
$query = "SELECT * FROM pages WHERE page_alias="".$alias."" AND page_publish="Y" RAJA 1";
$db->run($query);
$db->row();
// KOMPONENTTIMUUTTUJAT
$id = $db->data;
$alias = $db->data;
$otsikko = $db->data;
$h1 = $db->data;
$meta_d = $db->data;
$meta_k = $db->data;
$s_desc = $db->data;
$komponentti = $db->data;
//JOS SIVUA EI OLE OLEMASSA
jos (!$id) (
header("HTTP/1.1 404 ei löydy");
$component = "VIRHE 404! Tätä sivua ei ole olemassa";
}
$db->stop();

5. Luo pääsivun tulostekomponentti

Tietokantaamme pääsivu on tallennettu salanimellä "koti", ja toistaiseksi sen rakenne ei eroa tavallisista sivuston sivuista - se on vain artikkeli. Siitä huolimatta luomme sille erillisen komponentin - niin sanotusti tulevaisuutta varten.


"com"-kansion "home.php"-komponentin sisältö on lähes identtinen tavallisen sivukomponentin sisällön kanssa tietokannan kyselymerkkijonoa ja komponentin nimeä lukuun ottamatta. Kyselymerkkijono näyttää nyt tältä:

$query = "SELECT * FROM wx_pages WHERE page_alias="etusivu" RAJA 1";

6. Luo suunnittelumalli koko sivustolle

Sivuston juureen luomme template.php-tiedoston. Pohjimmiltaan tämä on tavallinen web-suunnittelun asettelu HTML+CSS-muodossa, vain PHP-muuttujat oikeissa paikoissa. Lisää otsikkotunnisteiden väliin, sivuston keskisarakkeessa on lisäkeja siten koko malliin sijoitamme tarvittavat muuttujat, jotka on ilmoitettu komponenteissa.

Pääkansiossa tulisi olla myös "css"- ja "images"-kansiot suunnitteluelementtejä varten. Tiedostossa /css/style.css - voit muokata tyylejä harkintasi mukaan.

7. Puhdista linkit ja .htaccess-tiedosto

Puhtaiden linkkien luomiseen käytän mod_rewrite-komentoa, jossa on suorat ohjeet kunkin komponentin säännöille erikseen, koska mielestäni osoitepalkin jäsentäminen itse ohjaimella on tarpeeton toiminto. .htaccess-tiedoston sisältö tässä vaiheessa on:


RewriteEngine päällä
RewriteBase /

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

# KIELLETTYT TIEDOSTOT
RewriteRule .htaccess - [F]
RewriteRule template.php - [F]

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

Jatkossa lisäämme sääntöjä hakukomponenteille, luettelolle, artikkeliblogille jne. On vain yksi asia: muunna linkit, kuten "omasivusto.com/index.php?option=pages&alias=about" linkiksi, kuten "omasivusto.com/pages/about.htm" - se näyttää melko hyvältä. Yritä välttää kehitysvaiheessa olevaa $_GET-taulukkoa turvallisuussyistä äläkä luota siihen. On suositeltavaa tallentaa siihen vain pääohjaimen ($optiomuuttuja) ja komponentin ($aliasmuuttuja) parametrit.

Luo myös jokaiseen sivustokansioon "varmuuden vuoksi" tyhjä index.html-tiedosto - tämä on välttämätöntä, jotta mitään ei näytetä, kun käytät hakemistoa osoitepalkin kautta.

Tunnisteet: php, mysql, sivustomoottori, ohjain, sivuston luominen, mvc

2017-01-10


Luo dynaaminen verkkosivusto php:n avulla

Hei rakas vierailija!

Tänään luomme pääsivulta PHP-ohjelmointikielellä dynaamisen sivun, joka myöhemmin generoidaan palvelimelle jokaisen käyttäjän pyynnöstä.

Siten muuttamalla sivuston rakennetta ja täyttämällä se vastaavilla vaihtuvilla sivuilla saamme dynaamisen sivuston, joka tulevaisuudessa yksinkertaistaa huomattavasti sen teknistä tukea ja kehitystä staattiseen versioon verrattuna.

  • Miksi tarvitset dynaamisen verkkosivuston?
  • Kuinka muuntaa staattinen sivusto dynaamiseksi
  • Muodostamme lohkoja dynaamisesta sivustosta
  • Verkkosivun muuntaminen staattisesta dynaamiseen
  • Sivuston lähdetiedostot

Miksi tarvitset dynaamisen verkkosivuston?

Miksi dynaamista verkkosivustoa tarvitaan, keskusteltiin heti vaiheittaisten ohjeiden alussa artikkelissa Paikallisen Denwer-verkkopalvelimen asentaminen, jossa selitettiin paikallisen verkkopalvelimen asentamisen tarve. Siksi voimme palata takaisin ja päivittää tämän kysymyksen.

Jos haluat myös pohtia staattisten ja dynaamisten sivustojen etuja ja haittoja, suosittelemme lukemaan online-hakemiston "Puzzleweb.ru" sivut osiossa Sivustotyypit, jossa melko ytimekkäästi, mutta samalla selkeät selitykset eri sivustovaihtoehdoista.

kuvakaappaus 12

Voimme vain lisätä tähän, että saadaksesi todella täysimittaisen Internet-resurssin, on mahdotonta ohittaa tätä vaihetta ja pysyä staattisen sivuston vaihtoehdossa.

Siksi emme enää syvenny teoreettisiin keskusteluihin dynaamisen sivuston luomisen tarpeesta, vaan siirrymme pohtimaan kysymystä, kuinka teemme tämän.

Kuinka muuntaa staattinen sivusto dynaamiseksi

Kuten tiedät, perustavanlaatuinen ero dynaamisen ja staattisen sivuston välillä on se, että staattisella sivustolla valmiit verkkosivut makaavat palvelimella ja odottavat vuoroaan käyttäjän selaimeen. Lisäksi, jos sivuilla on pieniäkin eroja, vaikka ero on vain yhdessä lauseessa tai jopa yhdessä sanassa, nämä ovat silti erillisiä sivuja.

Dynaamisessa versiossa sivujen muodostus tapahtuu palvelimella jokaisen käyttäjän pyynnöstä riippuen pyydetyistä tiedoista.

Yksinkertaisesti sanottuna tätä voidaan verrata rakennussarjaan, jossa rajallisesta määrästä elementtejä voidaan tehdä suuri määrä erilaisia ​​muotoja. Lisäksi, jos teet muutoksia johonkin elementtiin, se näkyy koko rakenteessa, joka sisältää tämän elementin.

Tämän perusteella teemme luodusta pääsivustamme jonkin tietyistä elementeistä koostuvan konstruktorin (meissä tapauksessa nämä ovat tiedostoja), joista kootaan myöhemmin verkkosivuja käyttäjien toiveiden mukaan.

Selvittääksemme toiminnot, jotka suoritamme tähän, käytämme pääsivukehyksen HTML-koodia, joka on saatu yhdessä artikkelin sivuston luomisen vaiheista.

  1. "utf-8" >

    <span><b>Sivun otsikko</b> </span>

    "Kuvaus" sisältö = "Lyhyt kuvaus sivun sisällöstä" >

  2. "kääre" >

    Lippalakki

    Rotaattori

    Pääsisältö

    Sivupalkki

    Kellari

Kuten näet HTML-koodista, säilö , joka on suunniteltu mukautumaan verkkosivun näkyvään osaan, sisältää seuraavat päälohkot:

  • Lippalakki;
  • Rotaattori;
  • Pääsisältö;
  • Sivupalkki;
  • Kellari.

Sinun on kuitenkin kiinnitettävä huomiota siihen, että neljä viidestä lohkosta on yhteisiä, ja vain yksi "Pääsisältö" -lohko on erilainen jokaisella sivulla.

Dynaamisen sivuston elementtien saamiseksi erottelemme näiden lohkojen sisällön erillisiin tiedostoihin, jotka sisällytämme myöhemmin kootaessamme erilaisia ​​verkkosivuja käyttäjien toiveiden perusteella.

Nyt tässä vaiheessa näitä tiedostoja on vain viisi. Mutta tulevaisuudessa, kun sivustolle lisätään sivuja tai lisätoimintoja, uusia tiedostoja yhdistetään ja niin edelleen tarpeen mukaan.

Tämä sivustorakenteen rakentaminen mahdollistaa sen, että jatkossa ei tarvitse tehdä rutiinityötä kaikkien sivujen HTML-koodin muuttamisen kanssa, jos niille yhteisiä fragmentteja korvataan tai lisätään. Tällaisissa tapauksissa riittää, että teet muutokset vain tiettyyn tiedostoon, ja koko korvausprosessi suoritetaan. Kuten näet, on etua.

Mutta tätä varten tarvitsemme PHP-kielen, jolla web-sivut voivat käyttää näitä valittuja lohkoja ja siirtää niiden sisällön itselleen.

Jos joku ei ole koskaan joutunut tekemisiin PHP-kielen kanssa, niin siihen kannattaa tutustua paremmin, sillä PHP on yksi tärkeimmistä työkaluista verkkosivujen kehittämisessä. Tämä voidaan tehdä käyttämällä erilaista viitekirjallisuutta, jota löytyy suuria määriä venäläisestä Internetistä.

Vaihtoehtona jo mainittu hakuteos “Puzzleweb.ru”, jossa yksi sen osista on omistettu PHP-aiheelle. PHP:n syvempään tutkimukseen voit käyttää myös tälle kielelle räätälöityä erikoiskäsikirjaa, joka on julkaistu verkkosivustolla "php.ru". Linkin "https://php.ru/manual/control-structures.intro.html" avulla pääset sen "Esittely"-sivulle, josta voit helposti valita minkä tahansa osion hakemistosta, josta olet kiinnostunut.

Mutta jotta nyt voidaan tehdä dynaaminen verkkosivusto ja tarjota mahdollisuus yhdistää tiedostoja HTML-sivuille, riittää, että käytät vain yhtä kieliohjetta (PHP:ssa mikä tahansa komentosarja koostuu käskysarjasta). Tämä voi olla yksi neljästä mahdollisesta tiedostojen yhdistämisohjeesta:

  • sisältää;
  • vaatia;
  • sisällytä_kerran;
  • vaadi_kerran.

Niiden ominaisuuksia on turha kuvailla tässä, koska tämä on selitetty yksityiskohtaisesti hakuteoksissa, esimerkiksi linkin "http://www.puzzleweb.ru/php/26_inc_files.php" avulla voit ymmärtää tämän hyvin.

Sivustoa luotaessa käytämme "require_once" -ohjetta. Käytän yleensä tätä vaihtoehtoa, minulle se on kätevin.

No, nyt kun olemme päättäneet, mitä teemme, siirrytään käytännön toimiin.

Muodostamme lohkoja dynaamisesta sivustosta

Jotta voit muodostaa lohkoja, jotka sitten osallistuvat verkkosivujen kokoamiseen, sinun on ensin luotava ne. Tämä tehdään Notepad++ -tekstieditorissa samalla tavalla kuin loimme artikkelin ensimmäisen sivustotiedoston "index.html". Luo web-sivu ja isännöi sitä paikallisella verkkopalvelimella. Vain tässä tapauksessa laajennusta ei tulisi määrittää "html", vaan "php". Tässä tapauksessa sinun on ehdottomasti kiinnitettävä huomiota koodaukseen, jotta sivuille ei tulevaisuudessa ilmestyisi erilaisia ​​käsittämättömiä merkkejä.

Luomme tiedostot erilliseen, äskettäin luotuun "lohkot"-kansioon. Tiedostoille, jotka ovat yhteisiä kaikille sivuille, annamme nimet ottaen huomioon vastaavien lohkojen nimet. Ja "pää"lohkolle ilmoitamme tietyn nimen jokaiselle sivuston sivulle.

Siten pääsivua varten yhdistämme tiedoston nimeltä "block_glavnaya" "pää"-lohkoon. Loput: "otsikko", "osio", "sivulle" ja "alatunniste".

Kun luot tiedostoja, voit myös ottaa huomioon, että tämän toimenpiteen yksinkertaistamiseksi voit kopioida ne "Tiedosto"-valikon avulla ja määrittää uuden tiedostonimen "Tallenna nimellä" tallennettaessa.

Yleensä tiedostojen luominen on vakiomenettely, joten vaikeuksia ei pitäisi olla. Lopulta sen pitäisi näyttää tältä.


Sitten kopioimme jokaisen lohkon sisällön ja siirrämme sen sopivaan tiedostoon. Katsotaanpa tätä yksityiskohtaisemmin käyttämällä "header.php" -tiedostoa esimerkkinä.

1. Avaa tiedosto "index.html" Notepad++ -editorissa, valitse haluamasi alue "otsikko" -lohkosta ja napsauta vuorotellen hiiren oikeaa ja vasenta painiketta ja kopioi se leikepöydälle.

On huomattava, että tässä kopioimme lohkon kaiken sisällön valikkoa lukuun ottamatta. Tämä johtuu siitä, että se kuvastaa aktiivisen valikkopainikkeen tunnisteattribuutteja

  • luokkaluokalle on määritettävä arvo jokaiselle sivulle "aktiivinen". Sama koskee samanlaista fragmenttia "alatunniste" -lohkossa.

    Jatkossa siirrämme myös nämä "header"- ja "footer"-lohkoissa olevat valikon fragmentit erillisiin tiedostoihin, mutta toistaiseksi emme monimutkaista asioita ja jätä ne samaan paikkaan.

    Kuinka valita ja kopioida "otsikko" -lohkon fragmentti leikepöydälle, näkyy alla olevassa kuvakaappauksessa.



    3. Ja lopuksi, jotta voit siirtää tiedoston sisältöä Notepad++:ssa vasemmalle, sinun on painettava "Tab" useita kertoja samalla, kun pidät "Shift"-painiketta painettuna. Tämän seurauksena saamme luodun "header.php"-tiedoston seuraavassa muodossa.


    Teemme samoin muille tiedostoille. Alla olevat kuvakaappaukset näyttävät, miltä niiden sisältö näyttää, kun kaikki tarvittavat vaiheet on suoritettu.


    Kuva 6 Tiedosto "section.php"


    Kuva 7 Tiedosto "block_glavnaya.php"


    Kuva 8 Tiedosto "aside.php"


    Kuva 9 Tiedosto "footer.php"

    Näin ollen olemme vastaanottaneet kaikki tiedostot dynaamisen sivun luomiseksi, ja voimme nyt siirtyä suoraan sen HTML-koodiin.

    Verkkosivun muuntaminen staattisesta dynaamiseen

    Varmistaaksemme, että pääsivumme lataa edellisessä osiossa luodut tiedostot, meidän on ensin vaihdettava "indeksi"-tiedoston pääte "html" -muotoon "php" ja avattava se sitten uudelleen Notepad++ -editorissa ja tee seuraavat muutokset:

    • Poista aiemmin luotuihin tiedostoihin siirrettyjen lohkojen sisältö.
    • Kirjoita vapaaseen tilaan PHP-kielellä ohjeet “require_once”, jotka osoittavat polun vastaaviin tiedostoihin.
    • Valikkotunnisteissa
    • , jotka osoittavat polun sivuille, korvaa pääsivulla laajennus "html" muotoon "php" ja toisilla osoittavat juuri luotujen sivujen nimet.
    • Merkitse otsikossa "Koti".

    Kun nämä toiminnot on tehty, pääsivumme pitäisi näyttää tältä.


    Yllä olevasta kuvakaappauksesta näet, että kaikki PHP-ohjeet on korostettu avaustunnisteella. Tätä nimitystä käytetään osoittamaan, milloin PHP:llä kirjoitetun koodin käsittely aloitetaan ja lopetetaan. Siksi tulevaisuudessa kaikki PHP-koodit korostetaan tällä merkinnällä.

    Voit myös huomioida, että uusien sivujen nimet on tehty niiden tarkoitus huomioon ottaen, jolloin sivuston rakenne ja koodi on paremmin havaittavissa.

    Tähän kaikki muutoksemme päättyivät. Ja nyt, jos avaamme pääsivun selaimessa uudelleen, meidän ei pitäisi nähdä muutoksia sivuston edelliseen versioon, sen pitäisi avautua samoin kuin ennen. Mutta jos tulos osoittautuu jotain vääräksi, sinun on etsittävä virhe yllä olevista toiminnoista.

    Päivitetään selain nyt ja yritetään avata pääsivu.


    Kuten näette, meidän tapauksessamme pääsivu avautui ilman ongelmia. Mutta toisin kuin sivuston aikaisempi työ, sivu sai tämän ulkonäön sen muodostumisen seurauksena palvelimelle pyyntöä käsiteltäessä.

    Siten sivustollamme on nyt ensimmäinen dynaaminen sivu. Ja kun siihen on lisätty muita samankaltaisia ​​sivuja, tätä sivustoa voidaan perustellusti kutsua dynaamiseksi kaikkine siitä aiheutuvista seurauksista, ts. sillä on kaikki dynaamisille sivustoille ominaiset edut. Ja voimme varmistaa tämän, kun täytämme sen erilaisilla toiminnoilla tulevaisuudessa.

    Tällä viemme tämän verkkosivuston kehittämisen tärkeän vaiheen loppuun ja seuraavassa artikkelissa luomme sille uusia dynaamisia sivuja. Sivuston uusimman version lähdekoodit voidaan ladata tavalliseen tapaan artikkelin lopussa olevasta linkistä.

    Sivuston lähdetiedostot

    Sivuston lähdetiedostot tässä artikkelissa tehdyillä päivityksillä voidaan ladata liitteestä lisämateriaaleja.