personalizzare script photo gallery

ciao a tutti,

sto cercando di personalizzare uno script che crea automaticamente una photo gallery da una directory di immagini.

Questo è il mio codice:

<?php

   /* dynamic gallery settings */
   $image_dir = 'photos/illuminazione/'; //cartella delle immagini
   $draw_dir = 'photos/schede/'; //cartella delle schede tecniche 
   $per_column = 4; //images per column
   
   /* step one:  read directory, make array of files */
   if ($handle = opendir($image_dir)) {
      while (false !== ($file = readdir($handle)))
      {
         if ($file != '.' && $file != '..')
         {
            if(strstr($file,'_thumb'))
            {
               $files[] = $file;
            }
         }
      }
      closedir($handle);
   }

   /* step two: loop through, format gallery */
   if(count($files))
   {
      foreach($files as $file)
      {
         $count++;
         echo '<div class="boxgrid captionfull">';
         echo '&nbsp;' . '<img src="' . "$image_dir$file" . '" alt="' . "$file" . '" />' . '&nbsp;';
         echo '<div class="cover boxcaption">';
         echo '<p>Art. ' . "titolo immagine" . '</p>';
         
         echo '<p><a rel="shadowbox[galleryname];options={continuous:true,animSequence:\'sync\'}" href="',$image_dir,str_replace('_thumb','',$file),'" title="">' . LANG_FOTO . '</a><br/>' . '<a rel="shadowbox" href="',$draw_dir,str_replace('_thumb','',$file),'" title="">' . LANG_SCHEDA . '</a></p>';
         
         echo '</div>';                                    
         echo '</div>';
            
         if($count % $per_column == 0) { echo '<div class="clear"></div>'; }
         }
      }
      else
      {
         echo '<p>There are no images in this gallery.</p>';
      }
   
?>

e questa la mia pagina di prova: www.bakokkogroup.it/gallery.php

Ciò che non riesco a fare è leggere tramite php il nome del file ripulendolo dell'estensione e sostituendo al posto del carattere "_" il carattere "/" (es. il file "1739_L.jpg" dovrebbe diventare "1739/L") e "stampare" poi il risultato come titolo dell'immagine.

Qualcuno sà darmi qualche dritta sulle funzioni da usare per far ciò? Secondo voi dovrei impostare una variabile e poi richiamarla all'occorrenza con un echo "$variabile"?

inviato 6 anni fa
yomo
yomo
1
X 0 X

Vuoi praticamente sostituire questo echo:

         echo '<p>Art. ' . "titolo immagine" . '</p>';

Con il titolo dell'immagine giusto?

La cosa è molto semplice.

Tu con readdir recuperi i file nella directory e popoli il tuo array $files che è formato praticamente dal nome delle tue immagini, tale array poi lo stampi con un ciclo foreach.

Usa la funzione str_replace per fare la sostituzione dei caratteri, la riga che ho citato la fai diventare così:

         echo '<p>Art. ' . str_replace("_","/",$file) . '</p>';

Ciao

risposto 6 anni fa
Mario Santagiuliana
X 0 X

Grazie MarioS!  ;)

ho leggermente modificato la funzione che mi hai suggerito da così:

echo '<p>Art. ' . str_replace("_","/",$file) . '</p>';

a così:

echo '<p>Art. ' . substr(str_replace('_','/',$file),0,-10) . '</p>';

La tua funzione mi restituiva il valore "Art. 1739/L/thumb.jpg" e con la mia l'ho ripulita ulteriormente ed ora mi restituisce "Art. 1739/L"  :D Yeppa!

Step successivo:

sempre nella stessa gallery avrei bisogno di evidenziare alcuni prodotti come "new" con una classe html/css che ho già impostato (es. alla pagina http://www.bakokkogroup.it/exclusive/sanmarco.php). Con php come si fa a fare in modo che alcune foto abbiano questa class="new"? Mi manca proprio la logica della soluzione.

Si possono scrivere alcuni metadati in una foto e fare in modo di leggerli con php? Mi sa di no vero?  :-\

risposto 6 anni fa
yomo
yomo
1
X 0 X

Non sapevo che ci fosse un thumb.jpg da togliere. Comunque ben fatto.

Per il secondo quesito: hai un sistema di discriminazione delle immagini classificate come nuove?

La discriminazione la puoi ottenere in vari sistemi, ne hai pensato a qualcuno?

risposto 6 anni fa
Mario Santagiuliana
X 0 X
Non sapevo che ci fosse un thumb.jpg da togliere. Comunque ben fatto.

Scusami, forse non ero stato così chiaro nello spiegarmi...  :-[

Per il secondo quesito: hai un sistema di discriminazione delle immagini classificate come nuove?

La discriminazione la puoi ottenere in vari sistemi, ne hai pensato a qualcuno?

No, la discriminazione delle immagini è proprio ciò che non saprei come fare, così su due piedi sto pensando che magari potrei inserirle in una directory a parte chiamata "novità"...

Altrimenti che altre soluzioni si potrebbero adottare?

risposto 6 anni fa
yomo
yomo
1
modificato 6 anni fa
X 0 X

Altre soluzioni potrebbero essere:

- inserire nel nome un valore, tipo "new", che indica le novità (allora è meglio spostarle in una directory novità), c'è lo svantaggio che devi decidere te quanto saranno delle novità, cioè devi cancellare il "new" (o spostarle dalla cartella novità), la cosa si può anche semi automatizzare con un script;

- fare un controllo in base alla data di inserimento, cioè tutte le foto caricate sul server dopo una certa data sono classificate come novità, poi in automatico perdono la caratteristica con il trascorrere del tempo;

- salvare in un file(o database) a parte i nomi di quelle foto che devono essere classificate come novità, il tutto lo puoi semiautomatizzare sempre con script;

- altro che non mi viene in mente ora...

Scegli te.

risposto 6 anni fa
Mario Santagiuliana
X 0 X

Credevo che la soluzione migliore fosse quella di inserire le foto classificate come "new" in una cartella a parte e poi ripetere lo script php che genera la gallery due volte, una per la lettura dei file contenuti nella cartella /immagini e una per la lettura dei file contenuti nella cartella /immagini/new.

Ora però sono sorte nuove problematiche e mi rendo conto che forse sarebbe più comodo salvare alcune informazioni in un file esterno.

Come faccio ora a costruire questo file e a fare in modo che php mi legga le info contenutevi? Devo creare una lista di file in xml e farla leggere con php? Le cose si complicano...  :-\

risposto 6 anni fa
yomo
yomo
1
X 0 X

Perchè non ti appoggi ad un database per inserire e modificare le informazioni?

risposto 6 anni fa
Mario Santagiuliana
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda