Voisiko joku selittää minulle, kuinka tämä toiminto toimii? Tiedän mitä se tekee, mutta kun tarkastelen lähdekoodia kaksikymmentä_ten-mallissa, en ymmärrä kuinka kaikki silmukat kerätään yhteen loop.php -ohjelmaan (näin myös tämän tiedoston).

Joten miten esimerkiksi tiivistetään tietty yleinen osa mallista ja käytetään sitä sitten uudelleen muissa malleissa?

Kommentit

vastaus

Tässä on joitain erittäin hyviä johdantovastauksia.

Pohjimmiltaan get_template_part() antaa teeman kehittäjille mahdollisuuden asettaa mallitiedostojen järjestysjärjestys. Ajattele sitä samalla tavalla kuin spesifisyys, koska se koskee CSS-valitsimia. Kun suunnittelet jotain, haluat aloittaa spesifisyyden minimillä, jotta se voidaan helposti ohittaa suunnittelun osissa, jotka tarvitsevat yksilöllistä huomiota.

Joten esimerkiksi , muotoilet blogia ja luot -silmukan .php -tiedosto, joka toimii hyvin viestien merkitsemisessä. Mutta suunnittelet eteenpäin ja soitat sitä myöhemmin mallipohjatiedostoihisi lisäkontekstimäärityksillä – sanotaan, että hakemistosivulla soitat get_template_part( "loop", "index" );, yksittäiseen malliin soitat get_template_part( "loop", "single" );, arkistosivuilla soitat get_template_part( "loop", "archive" ); ja niin edelleen. Tämä tekee siitä erittäin helpon tiellä, kun päätät merkitä silmukan arkistosivuillesi eri tavalla kuin kotisivu: luo vain loop-archive.php malli ja sitä ”käytetään yleisen loop.php .

Mutta get_template_part() -taustan takana on funktio locate_template(), joka tarkistaa ensin teemahakemiston ja sitten päähakemiston (jos Yksi on olemassa) tiedostolle nimeltä. Tämä on erittäin hyödyllinen laajennusten kehittämisessä. Yhdessä laajennuksistani määritän mukautetun viestityypin ja loin silmukamallitiedoston kyseiselle mukautetulle postityypille laajennushakemistooni. Mutta … Haluan sallia laajennustani käyttävien teemojen ohittaa merkinnät, jos he haluavat. Täällä locate_template() tekee todella ihmeitä.

locate_template($template_names, $load = false, $require_once = true ) 

etsii kutakin tyyppitaulukon hakemiston $ template_names-taulukon nimiä ja sitten temp myöhäinen hakemisto. ”True” -arvon välittäminen $ load -argumenttina tarkoittaa, että se vaatii ensimmäisen löydetyn tiedoston ja palauttaa tyhjän merkkijonon, jos mallitiedostoa ei löydy. Joten voin tehdä jotain tällaista laajennuksessani:

if ( "" === locate_template( "loop-mycustomposttype.php", true, false ) ) include( "loop-mycustomposttype.php" ); 

… jonka pitäisi teema-kehittäjien toivottavasti helpottaa laajennuksen muokkaamista vain sisällyttämällä tiedosto nimeltä loop-mycustomposttype.php heidän teemaansa.

Kommentit

  • Korvaa locate_template tällä, kiitos. include(locate_template( 'loop-mycustomposttype.php')) Tällä tavalla on mahdollista välittää muuttujia. Olen ' löytänyt tämän täältä linkki . Se on ' erittäin hyödyllinen!
  • Näin tekemällä ' on tarpeen muuttaa myös tätä. Tykkää tästä if ( false === include(locate_template( 'loop-mycustomposttype.php')) )
  • Voi hyvä asia. Antamallani kaavalla require tai require_once puhelu (lähettäjältä locate_template) on sisällä funktiolla, joten ' ei ole pääsyä nykyiseen laajuuteen.

Vastaa

Kaikki silmukat eivät ole, pääsilmukka. 😉 Ei ole väliä katsotko etusivua tai luokkaa tai mitä tiedät, sinulla on aina pääsilmukka. Pääsilmukan sisältö määräytyy kyselyn perusteella, joka on suoritettu aiemmin malliasi kutsuttiin ollenkaan.

Loop.php-malli vain kulkee silmukan kohteiden yli ja muotoilee ne. Katso Codexin ohjeet .

Jos tarkastelet Twenty-Ten-sarjan loop.php-ohjelmaa, näet, että Twenty-Ten monipuolistaa sitten sisällä kyseisen yksittäisen mallitiedoston.

get_template_part() vain lataa malliosan ja juoksee sen läpi. Voit yhtä hyvin purkaa osa loop.php-tiedostoa erillisiksi tiedostoiksi ja korvaa ne get_template_part("loop", "category") – ja niin edelleen puheluilla.

Tai sinulla voi olla osa-malli jokaiselle yksittäiselle viestille silmukassa ja pyydä, että loop.php kutsuu vain get_template_part("loop","post"); lausekkeessa while.... Kaikki riippuu sinusta.

vastaus

get_template_part -koodeksista :

<?php get_template_part( "loop", "index" ); ?>

tekee PHP: n vaatimuksen () ensimmäiselle olemassa olevalle tiedostolle …

Se toimii niin tehokkaasti kuin tarvitsisit toisen php-tiedoston.

Päivitä : ”Tarvitaan” on pieni ero – se on kääritty funktion sisään, joten sinun on global, jos haluat siirtää muuttujia mallistasi malliosaan.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *