Pagina 1 di 1

Copia-incolla multiplo in più pagine

MessaggioInviato: mar ago 19, 2008 8:18 pm
da zenith
Ciao a tutti! [:)] Non sapevo bene dove postare, dato che il mio problema è un po' generico, e mi sembra che non c'è nulla sul forum, ergo eccomi qui con l'ennesimo quesito strambo. [std]

Bene, passando il tempo in compagnia di HTML & CSS ho avuto un problemino. Avrei bisogno di modificare parecchie pagine allo stesso modo... Insomma: io ho una cinquantina di pagine HTML, che hanno uguali il menù, il banner, la colonna sinistra e il piè di pagina (cambia solo la colonna principale con i contenuti). Se volessi ad esempio cambiare un link nel menù o nel piè di pagina dovrei andare manualemnte in ogni pagina a fare il copia-incolla nel punto esatto... Non esiste un modo per apportare la stessa modifica nel codice di tante pagine contemporaneamente? [boh]
Preciso che per scrivere le pagine parto da una "pagina base" fissa, che ha il codice completo in tutte le parti tranne che per la colonna principale, che vado a scrivere in seguito.

Aiutini? Grazie mille! [^]

MessaggioInviato: mar ago 19, 2008 8:22 pm
da ste_95
Il metodo sicuramente più veloce sarebbe creare una pagina php contenente il menu, che andrà poi inclusa in tutte le altre pagine. Di conseguenza, modificando la prima pagina, tutte le altre saranno di conseguenza.

MessaggioInviato: mar ago 19, 2008 8:24 pm
da M@ttia
La parola che cerchi è "frame", anche se io preferisco usare il PHP facendo:


header.php
pagina_centrale_sempre_diversa.php
footer.php

che in pratica "emula i frame" senza però averli per davvero, evitandone gli svantaggi [^]

MessaggioInviato: mar ago 19, 2008 8:30 pm
da zenith
Si, c'ho pensato ai frame, ma non li so gestire, anche perché non c'ho mai provato! [:D]

E il PHP è arabo per me. [bleh]

Se conoscete una soluzione valida e al tempo stesso terra-terra... vi ringrazio, altrimenti non state a perdere tempo! [^]

MessaggioInviato: mar ago 19, 2008 9:35 pm
da clic
esiste un programma che può fare queste operazioni batch su parecchi file di testo (quindi anche quelli html) alla volta e si chiama Search & Replace.
Ho fatto un po di fatica a ricordarne il nome perché è veramente una cosa vecchia ma credo sia quello che cerchi:
http://www.funduc.com/search_replace.htm

MessaggioInviato: mer ago 20, 2008 8:37 am
da zenith
Ciao grazie mille per la tua segnalazione. Nel frattempo mio fratello era cpitato per caso su un sito che permetteva il download gratuito di un altro programma.
http://www.technorati.it/simple-search-replace-software-gratuito-per-cercare-e-sostituire-stringe-di-testo-in-file/
Non l'ho ancora provato, ma sembra fare al caso mio. [:)]

Posterò un commento sul programma per aiutare i lettori futuri del topic!
Grazie ancora.

MessaggioInviato: mer ago 20, 2008 9:49 am
da Aesir
Con linux (o con una qualsiasi shell bash con perl) io uso questo comando

Codice: Seleziona tutto
find /percorso/cartella/ -name '*.html' |xargs perl -pi -e 's/vecchio/nuovo/g'


che funziona perfettamente se i file non hanno spazi nel nome.

MessaggioInviato: mer ago 20, 2008 11:09 am
da M@ttia
Guarda zenith, puoi farlo tranquillamente in PHP senza conoscere il PHP (se non le due righe che ti scrivo ora):

La cosa si struttura come segue:

pagina header (="testata") che contiene tutto quello che nella tue pagine rimane costante sopra la colonna centrale (cioè tutto il codice html prima della colonna).

pagina footer (="piedata") che contiene tutto quello che nella tue pagine rimane costante sotto la colonna centrale (cioè tutto il codice html dopo la colonna).

pagine centrali (tutte diverse ovviamente).



Crea la pagina header.php, footer.php e pagina1.php (con blocco note, l'estensione php invece di html dice solo al server che dentro ci sarà codice php...).

in header.php scrivi tutto il codice html prima della colonna centrale (quello che non vorresti dover copiare ogni volta), e idem in footer.php per quello dopo.

in pagina1.php (o chiamale_come_vuoi_tu.php) scrivi semplicemente:

Codice: Seleziona tutto
<?php include('header.php'); ?>

codice html della colonna centrale, quello che cambia ogni volta

<?php include('footer.php'); ?>


e basta, il gioco è fatto (l'utente finale sul suo browser poi riceverà il "collage delle 3 pagine" in un solo html, quindi non può nemmeno sapere che è stato generato dinamicamente così...).


Esempio pratico: per ottenere:

Codice: Seleziona tutto
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr">

<head>
 <meta http-equiv= "Content-Type"       content= "text/html; charset=iso-8859-1" />
 <meta http-equiv= "Content-Style-Type" content= "text/css" />
 <meta http-equiv= "Content-Language"   content= "Italian" />
 ...

 <link rel="stylesheet" type="text/css" href="Css/style.css" />
 <link rel="shortcut icon" href="Immagini/favicon.ico" />

 <title>My Webpage</title>
</head>

<body>
<div id="Logo"><img src="Immagini/Logo.jpg" alt="" /></div>
<div id="Menu-Sinistra">....</div>

<div class="Colonna-CentraleTabella">
  ... Testo Colonna Centrale Pagina 1...
</div>

<div id="Fondo-Pagina"><img src="Contatore.jpg" alt="" /></div>
</body>
</html>


Faremo:

header.php
Codice: Seleziona tutto
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr">

<head>
 <meta http-equiv= "Content-Type"       content= "text/html; charset=iso-8859-1" />
 <meta http-equiv= "Content-Style-Type" content= "text/css" />
 <meta http-equiv= "Content-Language"   content= "Italian" />
 ...

 <link rel="stylesheet" type="text/css" href="Css/style.css" />
 <link rel="shortcut icon" href="Immagini/favicon.ico" />

 <title>My Webpage</title>
</head>

<body>
<div id="Logo"><img src="Immagini/Logo.jpg" alt="" /></div>
<div id="Menu-Sinistra">....</div>

<div class="Colonna-CentraleTabella">


footer.php
Codice: Seleziona tutto
</div>

<div id="Fondo-Pagina"><img src="Contatore.jpg" alt="" /></div>
</body>
</html>


pagina1.php
Codice: Seleziona tutto
<?php include('header.php'); ?>

... Testo Colonna Centrale Pagina 1...

<?php include('footer.php'); ?>
[^]

MessaggioInviato: mer ago 20, 2008 2:04 pm
da zenith
M@ttia, ti ringrazio moltissimo per la tua soluzione!! [applauso+] [applauso+] Pensavo si trattasse di qualcosa di astruso o complicatissimo... Invece ho fatto come hai detto, e allegando alle pagine esterne il foglio di stile (esterno) e modificando un po' i bordi dal foglio di stile (entravano in conflitto quelli della colonna sinistra con quelli del <div> che uso come contenitore) è andato tutto a posto ottimamente. [^]

Non mi resta che apportare le modifiche una volta a tutte le pagine e poi il gioco è fatto! Grazie ancora! [:)]

MessaggioInviato: mer ago 20, 2008 2:16 pm
da M@ttia
Prego [^]

MessaggioInviato: gio ago 21, 2008 8:57 am
da Boo

MessaggioInviato: gio ago 21, 2008 10:02 am
da zenith
Grazie Boo.

Ho usato il "trucco" di M@ttia e l'ho applicato a tutte le pagine. Funziona perfettamente, con Firefox. Solo che con IE6 non va: la colonna sinistra è completamente sfasata in basso, sotto quella principale [boh] In fin dei conti solo io ho ancora IE6... [:D]

Funziona con Opera, Firefox e Safari, quindi dovrebbe andare anche con IE7, no?

MessaggioInviato: gio ago 21, 2008 10:10 am
da Boo
zenith ha scritto:con IE6 non va: la colonna sinistra è completamente sfasata in basso, sotto quella principale

IE6 ha molti bug nell'interpretazione degli stili, se vuoi posso aiutare a risolvere

zenith ha scritto:In fin dei conti solo io ho ancora IE6...

Fossi in te non ne sarei così sicuro

zenith ha scritto:Funziona con Opera, Firefox e Safari, quindi dovrebbe andare anche con IE7, no?

Non è assolutamente detto. Internet Explorer, Opera, Firefox e Safari hanno tutti layout engine differenti. Vero è che Trident (quello di IE) è molto migliorato col tempo ma non è assolutamente paragonabile a Presto, Gecko o al sommo KHTML.

MessaggioInviato: gio ago 21, 2008 10:19 am
da M@ttia
Il "collage" di php viene effettuato dal server, quindi l'html generato è uguale per tutti i browser, pertanto se in IE6 non riesci a vederlo non è colpa del php, ma del codice html stesso che è incompatibile con IE6 (cioè anche se copiavi su il tuo vecchio html in un colpo solo il risultato è il medesimo...).

MessaggioInviato: gio ago 21, 2008 11:24 am
da zenith
No, M@ttia, ti ringrazio lo stesso! [:D] Non darti pena con il mio codice, si tratta solo di un passatempo. Proverò da solo (come ho fatto per imparare HTML e CSS) e vediamo cosa esce da sotto... [std]

Ho ancora IE6 perché mio fratello gioca a Travian su Internet e dice che con il 7 ci sono problemi con alcune funzioni, e pare anche con Firefox [boh] ... Proverò su un altro pc con IE7!

MessaggioInviato: gio ago 21, 2008 12:29 pm
da M@ttia
zenith ha scritto:No, M@ttia
Non ho capito il significato del "no"... [8)]

MessaggioInviato: gio ago 21, 2008 1:26 pm
da zenith
[:D] In effetti volevo scrivere "no, ma ti ringrazio lo stesso, Mattia", ma ho invertito e ho dimenticato il "ma"...

MessaggioInviato: gio ago 21, 2008 2:27 pm
da M@ttia
Sìsì quello era chiaro, non capivo a cosa si riferisse il no, dato che non avevo fatto nessuna offerta/domanda... (ho solo chiarito che il php non c'entra con IE6, in quanto genera lo stesso output di quello che avresti uplodando l'html direttamente, e che quindi gli errori/incompatibilità li devi cercare nel tuo codice html, indipendentemente se spezzato e incollato da php a meno...).

MessaggioInviato: gio ago 21, 2008 6:17 pm
da zenith
Ok, sono definitivamente fuso... ho addirittura confuso il messaggio di Boo
IE6 ha molti bug nell'interpretazione degli stili, se vuoi posso aiutare a risolvere

Con il tuo sul php... mi sono sembrati entrami tuoi... [:-H]

Chiudo qui sennò faccio qualche altra gaffe... Grazie a tutti per il supporto! [;)]