Pagina 2 di 2

Re: Header PHP in due versioni

Inviato: mer 2 ott 2013, 15:42
da aschenaz
Non c'è proprio la chiamata al css!

Ma questa riga l'hai messa?

Codice: Seleziona tutto

    <link rel="stylesheet" type="text/css" href="stylesheets/layout<?php echo $stylenr ?>.css" />

Re: Header PHP in due versioni

Inviato: mer 2 ott 2013, 15:47
da samiel

Codice: Seleziona tutto

<?php
isset($_GET["pagina"]) ? $pagina=$_GET["pagina"] : $pagina="home";
$stylesheet = ($pagina !== 'home') ? 'stylesheets/layout2.css' :
'stylesheets/layout3.css';
?>
nonostante il == continua a non caricare i CSS.

Per l'altra faccenda, certo posso impostare il controllo,
ma nella fattispecie è tutto in minuscolo e i nomi sono corretti...

Non riesco ad uscirne :-(

m

Re: Header PHP in due versioni

Inviato: mer 2 ott 2013, 15:51
da aschenaz
Così è impossibile che non funzioni:

Codice: Seleziona tutto

<?php
    isset($_GET["pagina"]) ? $pagina=$_GET["pagina"] : $pagina="home";
    $pagina != 'home' ? $stylenr='2' : $stylenr='3'; 
?>
    <link rel="stylesheet" type="text/css" href="stylesheets/layout<?php echo $stylenr ?>.css" />

Re: Header PHP in due versioni

Inviato: mer 2 ott 2013, 18:47
da samiel
No, infatti così funziona!
SOlo, non riesco a capire gli errori
dei precedenti tentativi...

grazie!
m

Re: Header PHP in due versioni

Inviato: gio 3 ott 2013, 10:53
da paolo1957

Codice: Seleziona tutto

<?php>
$pages = array ("index");
if {in_array($_GET["pagina"], $pages)} {
    echo '<header1">'
    } else {
echo '<header2">'
}
?>
Ho riportato qui il codice del primo post.
In effetti, dal punto di vista sintattico, ci sono degi errori. Forse è per questo che non funzionava. In questi casi e molto utile usare un editor specifico per il PHP che evidenzi in rosso tutti gli errori di battitura; come le graffe al posto delle tonde dopo if, i punto e virgola mancanti, eccetera.
I più famosi editor per PHP sono addirittura liberi e gratuiti, su slackware si installano facilmente (dopo aver installato openjdk perchè sono scritti in Java) ed è solo una questione di gusti: https://netbeans.org, http://www.eclipse.org/downloads, http://www.aptana.com/products/studio3/download.
Venendo al punto le soluzioni proposte nei post successivi a me sembrano tutte valide, ma per avere un controllo più fine-graned sulla grafica di un sito, per evitare la duplicazione di codice nelle vaire pagine e soprattutto rendere la vita più facile al webmaster in caso di modifiche sarebbe consigliabile l'adozione dei template. In questo modo sarebbe possibile creare dei blocchi di codice HTML che possono essere composti nella pagina web stessa: l'intestazione, il fondo pagina, le colonne destra o sinistra, la zona centrale. Questi possono contenere solo semplici frammenti di codice PHP: echo, if, foreach e poco altro. Non sarebbe così necessario agire sul foglio di stile, che può rimanere unico, mentre si potrebbe riutilizzare lo stesso blocco ogni volta che, ad esempio, l'intestazione in alcune pagine non cambia. Anche se l'organizzazione dei file richiesta per seguire questo approccio può sembrare complessa, vale sicuramente la pena provare, perchè in seguito se ne otterrano molti vantaggi, anche per piccoli siti.

Re: Header PHP in due versioni

Inviato: gio 3 ott 2013, 15:20
da samiel
Efficace suggerimento!
Hai qualche link dove approfondire la cosa?

grazie
m

Re: Header PHP in due versioni

Inviato: ven 4 ott 2013, 8:47
da paolo1957
Poichè le funzioni che maneggiano i template sono sostanzialmente le stesse queste, storicamente, sono state raggruppate in librerie già pronte scritte in PHP.

La bibliografia spesso le chiama motori di template e inoltre tiene a precisare che già il PHP stesso è un motore di template, se usato come dicevo nel post precedente.

Tuttavia una delle più antiche (almeno che io ricordi) fa parte del progetto PEAR e si chiama HTML_Template_IT, si può visionarne la documentazione a pear.php.net/manual/en/package.html.htm ... .intro.php.
Sostanzialmente usa dei marcatori (placeholder) posti nel codice HTML del template dove al momento della generazione della pagina web avviene la sostituzione con il contenuto della variabilecorrispondente.
Questo permette anche di fare in modo che il contenuto sia un altro template, che diviene a sua volta sub-template incastrato nel template più esterno.

Il passo successivo è quello di fornire un metodo di caching per la visualizzazione del template considerando che anche in un sito dinamico i cambiamenti di contenuto sono poco frequenti.
Sono stati quindi sviluppati dei sofisticati motori di template dotati di compilatori che preparano il template in memoria pronto per essere visualizzato rapidamente dal secondo accesso in poi. Un famoso motore di questo tipo è Smarty e la sua documentazione contiene un utile tutorial che consiglio di provare. http://www.smarty.net/docs/en

Questa organizzazione, tuttavia, da per scontato che esista un unico punto di ingresso al sito (il solito file index.php) e che esista una convenzione che definisca delle variabili passate dal browser con il metodo GET cioè

Codice: Seleziona tutto

index.php?variabile1=valore1&variabile2=valore2...
che serviranno a selezionare quale pagina del sito mostrare. In questo modo c'è una parte in PHP che viene sempre eseguita e che contiene tutte quelle inizializzazioni che sono comuni a tutte le pagine, evitando di duplicare il codice stesso.
La letteratura chiama spesso questo file front-controller, mentre chiama action-controller ognuno dei file, relativi a ogni pagina, che venie incluso dal front-controller dopo le inizializzazioni e dopo aver stabilito quale pagina mostrare. Ogni action-controller ha il
proprio template dove avviene la (o le) sustituzione(i) e quindi ri-spedito come stringa al browser.

Il template è quindi solo una parte del codice di un sito e per venire incontro al webmaster sono nate delle librerie in PHP che fanno da base per una organizzazione del codice come ho illustrato sopra.
I cosiddetti framework PHP.

Per iniziare si può dare un'occhiata a TinyMVC che è molto semplice ma contiene già tutto l'essenziale per funzionare bene (e anche
molto veloce proprio perchè semplice) http://www.tinymvc.com/documentation/in ... umentation

Se si desidera qualche funzionalità in più si può passare a CodeIgniter ellislab.com/codeigniter, qui nel manuale utente ho trovato la spiegazione più chiara fra quelle viste in giro. ellislab.com/codeigniter/user-guide/ove ... pflow.html

Aggiungendo ancora complessità, funzionalità ed estendibilità si arriva a Zend Framework framework.zend.com dove
l'uso del PHP Object-Oriented reggiunge livelli veramente accademici.

Infine aggiungo che con questi framework ci si trova per così dire un gradino sotto i vari Joomla http://www.joomla.org, Drupal drupal.org, Typo3 typo3.org e simili, dove il funzionamento interno si basa sugli stessi principi esposti sopra
(almeno nelle ultime versioni) ma dove sono state fatte delle scelte grafiche e funzionali già predefinite, che sollevano il webmaster dai dettagli relativi al codice PHP, lasciando solo la possibilità di configurare il sito agendo generalmente attraverso un pannello di controllo, anche piuttosto complesso, dove è anche possibile estendere le funzionalità usando dei moduli preconfezionati.


@ ai moderatori e amministratori
Ho perso il conto dei numerosi tentativi che ho fatto, da ieri sera 3/10/2013, per riuscire a inviare questo post :(

Re: Header PHP in due versioni

Inviato: ven 4 ott 2013, 10:20
da ZeroUno
Offtopic:
paolo1957 ha scritto:Offtopic: @ ai moderatori e amministratori
Ho perso il conto dei numerosi tentativi che ho fatto, da ieri sera 3/10/2013, per riuscire a inviare questo post :(
Offtopic: Indicativamente 24 click consecutivi in 8 minuti, di cui 7 in 5 secondi. :)