Repository 32bit  Forum
Repository 64bit  Wiki

Header PHP in due versioni

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.

Re: Header PHP in due versioni

Messaggioda aschenaz » mer ott 02, 2013 14:42

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" />
pensieriemotivi.aschenaz.eu - music-blog
Avatar utente
aschenaz
Staff
Staff
 
Messaggi: 4433
Iscritto il: mar lug 27, 2004 23:00
Località: Reggio Calabria
Nome Cognome: Nino
Slackware: current 64bit
Kernel: 3.14.18
Desktop: KDE 4.10.5

Re: Header PHP in due versioni

Messaggioda samiel » mer ott 02, 2013 14:47

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
samiel
Staff
Staff
 
Messaggi: 5500
Iscritto il: ven gen 16, 2004 0:00
Località: Venezia
Nome Cognome: Mauro Sacchetto
Slackware: 13.0
Kernel: 2.26
Desktop: KDE
Distribuzione: anche Debian

Re: Header PHP in due versioni

Messaggioda aschenaz » mer ott 02, 2013 14:51

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" />
pensieriemotivi.aschenaz.eu - music-blog
Avatar utente
aschenaz
Staff
Staff
 
Messaggi: 4433
Iscritto il: mar lug 27, 2004 23:00
Località: Reggio Calabria
Nome Cognome: Nino
Slackware: current 64bit
Kernel: 3.14.18
Desktop: KDE 4.10.5

Re: Header PHP in due versioni

Messaggioda samiel » mer ott 02, 2013 17:47

No, infatti così funziona!
SOlo, non riesco a capire gli errori
dei precedenti tentativi...

grazie!
m
samiel
Staff
Staff
 
Messaggi: 5500
Iscritto il: ven gen 16, 2004 0:00
Località: Venezia
Nome Cognome: Mauro Sacchetto
Slackware: 13.0
Kernel: 2.26
Desktop: KDE
Distribuzione: anche Debian

Re: Header PHP in due versioni

Messaggioda paolo1957 » gio ott 03, 2013 9:53

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.
nessuna
paolo1957
Linux 1.0
Linux 1.0
 
Messaggi: 12
Iscritto il: mar ago 27, 2013 15:50
Località: Roma
Nome Cognome: Paolo Seria
Slackware: slackware64-current
Kernel: 3.10.9
Desktop: kde

Re: Header PHP in due versioni

Messaggioda samiel » gio ott 03, 2013 14:20

Efficace suggerimento!
Hai qualche link dove approfondire la cosa?

grazie
m
samiel
Staff
Staff
 
Messaggi: 5500
Iscritto il: ven gen 16, 2004 0:00
Località: Venezia
Nome Cognome: Mauro Sacchetto
Slackware: 13.0
Kernel: 2.26
Desktop: KDE
Distribuzione: anche Debian

Re: Header PHP in due versioni

Messaggioda paolo1957 » ven ott 04, 2013 7:47

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 [url]pear.php.net/manual/en/package.html.html-template-it.intro.php[/url].
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/index.php/Documentation

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

Aggiungendo ancora complessità, funzionalità ed estendibilità si arriva a Zend Framework [url]framework.zend.com[/url] 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 [url]drupal.org[/url], Typo3 [url]typo3.org[/url] 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 :(
nessuna
paolo1957
Linux 1.0
Linux 1.0
 
Messaggi: 12
Iscritto il: mar ago 27, 2013 15:50
Località: Roma
Nome Cognome: Paolo Seria
Slackware: slackware64-current
Kernel: 3.10.9
Desktop: kde

Re: Header PHP in due versioni

Messaggioda ZeroUno » ven ott 04, 2013 9:20

Offtopic:
paolo1957 ha scritto:@ 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 :(
Indicativamente 24 click consecutivi in 8 minuti, di cui 7 in 5 secondi. :)
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg
Codice: Seleziona tutto
1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111
Avatar utente
ZeroUno
Staff
Staff
 
Messaggi: 4411
Iscritto il: ven giu 02, 2006 13:52
Località: Roma / Castelli
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current

Precedente

Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite

cron