2010-07-14 11 views
5

Ho iniziato la codifica in clojure e sono davvero impressionato da Enlive. Una cosa che mi piace davvero è che Enlive utilizza template html. Quindi un modello è un file con html al suo interno, che termina in .html, semplice come quello. Viene analizzato in un albero di dom e quindi quell'albero di dom viene manipolato da clojure/enlive, combinato, reso dinamico, ecc. Nessuna sintassi nei file di template html, una separazione splendidamente pulita.Esiste un sistema di template html solo per php?

Un altro esempio di un sistema simile, eseguito tramite javascript, è PURE.

C'è qualcosa del genere in PHP? O, in generale, qualsiasi modo di fare template html-only?

+1

Sono stato filosofo anche su questo. In teoria è possibile raccogliere tutti gli output html dalla propria applicazione, inserirli in phpQuery e quindi iniettare il contenuto effettivo come PURE. In teoria. – mario

+0

L'esempio Hello World di PURE può essere facilmente reimplementato con DOM in una dozzina di righe. Tuttavia, userebbe XPath per le query DOM. Se non ti dispiace imparare un altro linguaggio di marcatura, dai un'occhiata a XSLT. – Gordon

+0

Penso che sia lo stesso di Gordon, se si va sulla strada di implementare qualcosa come PURE in PHP (che non dovrebbe essere così difficile), e non si dispone di un motore DOM disponibile, XPATH è la strada da percorrere. PURE proveniva dal mio precedente incontro XSLT con JSON. Ma qui non sono d'accordo con Gordon, non tornerei all'XSLT per niente. – Mic

risposta

4

Affascinato a sentire di Enlive. Ho pensato a questo concetto per alcuni anni e ho hackerato insieme something in PHP che condivide alcuni principi: i modelli sono in puro HTML e li "riempi" indirizzando il contenuto a un nodo specifico nel documento usando CSS o XPath.

$t = new Template('yourfile.html'); 
$t->fill('#nav',$someMarkup); 
$t->fill('#header',$otherMarkup); 

Ho anche sperimentato con gettando insieme alcune disposizioni per la separazione del contenuto fuori in un "foglio di stile" di sorta ... beh, "foglio di stile" è la parola sbagliata. Li chiamo fogli di indirizzamento del contenuto (il progetto si chiama CAST, per content-address-style-templating). Un CAS sembra che ti aspetti:

.col #foot { 
    content: 'foot'; 
} 

#content { 
    content: file_get_contents('pangolin.txt'); 
} 

Si presuppone che i valori del contenuto siano espressioni PHP. Esistono alcune disposizioni per l'impostazione di PHP applicabili anche ai selettori.

prendere la rincorsa dello script cssfill.php che è nel tarball (migliore invocazione è probabilmente ./cssfill.php pangolin.cas pangolin.html, potrebbe essere necessario modificare il percorso del interprete PHP all'interno cssfill.php), date un'occhiata in uscita, confrontare con l'ingresso File.

Se questo post genera entusiasmo per l'idea in te, non esitare a farmelo sapere. Mi sono chiesto se fosse un'idea pazzesca o se avesse un posto, se fosse così, sarei felice di trasformarlo in un progetto open source pensato ponderatamente in contrasto con un tarball casualmente gettato su internet.

+0

Sì, lo fa davvero. Dovrò controllare il progetto del codice, perché penso che quel sistema gira davvero oltre i tradizionali metodi di sistema dei template, perché usare solo html per iniziare è il più puro che si possa mai ottenere, quindi non si può andare oltre quel punto. Non ti capita di usare git/github, vero? Se dovessi renderlo open source, direi sicuramente che github sarebbe un buon posto per metterlo se hai qualche familiarità (io prostletizzo (sic) git & github tutto il giorno). Ad ogni modo, controllerò il codice e mi metterò in contatto. – Kzqai

+0

Tchalvak - dopo un anno (e una [discussione laterale su Hacker News] (http://hackerne.ws/item?id=3339291)) Alla fine ho deciso di mettere [CAST su github] (https: // github .com/westonc/CAST) - se ne hai la possibilità, sentiti libero di farmi sapere cosa ne pensi! –

+0

Will do ......... – Kzqai

1

È possibile controllare phptal.org. È un motore di template per PHP che usa tag HTML. Ma non è così veloce.

È inoltre possibile controllare altri progetti come twig-project.org witch è waaay più veloce.

1

Cassa PHPTAL. PHPTAL è una libreria di modelli XML/XHTML per PHP5 che fornisce modelli compilati e cache a grana fine. I modelli sono definiti in puro markup XML/HTML.

<div class="item" tal:repeat="item itemsArray"> 
    <span tal:condition="item/hasDate" tal:replace="item/getDate"/> 
    <a href="${item/getUrl}" tal:content="item/getTitle"/> 
    <p tal:content="value/getContent"/> 
</div> 
0

Penso che Psttt! il motore di template per php è esattamente quello che stai cercando, mantiene intatto il tuo template html permettendoti di riutilizzare meglio i tuoi htmls.

codice sorgente completo qui http://github.com/givanz/psttt

+0

Cool, controllerò. – Kzqai

1

inizia interessanti. Ma sono rimasto colpito dal fatto che non possiamo avere un diverso modello con testo campione per modificare la vista e il diverso stato degli elementi - ed estrarre il codice per creare modelli di template in uscita o semplicemente riempirlo di contenuti.Trovare il flusso di lavoro si sente così rotto come un complimento - non mi piace mescolare html con php/js né scrivere sistemi di template astratti. Hai bisogno di molto cervello - per molte comunicazioni senza visualizzazioni semplici.

Problemi correlati