Caricare un'immagine da un percorso fisso.

6 contenuti / 0 new
Ultimo contenuto
Caricare un'immagine da un percorso fisso.

ciao, sto provando in tutti i modi a capire come fare per caricare un'immagine da un percorso fisso (nel mio caso all'interno del mio tema).

Ho creato con cck e view un form che con imagecache mi permetta di visualizzare una foto di una persona con le relative informazioni (nome, cognome, ecc) caricandola tramite il modulo upload.

Fin tanto che inserisco una foto nel nodo tutto funziona a meraviglia, ma nel caso vorrei che l'utente non sia obbligato a farlo (e quindi lasciare il campo upload vuoto poiché non voglio "costringere" nessuno a pubblicare img) vorrei che si visualizzasse una gif ([b]No_avatar.gif[/b]) predefinita che si trova nel mio tema).

Ecco il codice che ho usato per il nodo:

<?php if ($node->field_img_socio != 0) { ?>
<p><?php print theme('imagecache3','avatar',$field_img_socio[0]['filepath']); ?></p>
<?php } else { ?>
<p><?php print ('<img src="'. base_path() . path_to_theme() . '/img/No_avatar.gif" alt="Foto non disponibile" width="150" height="150">'); } ?></p>

Con questo controllo if l'anteprima funziona alla perfezione, ma quando pubblico il nodo l'immagine No_avatar.gif sparisce.
Da cosa dipende? Come risolvo?!?

usa imagefield-2.x (molto beta, ma fa proprio quello che vuoi tu, se non viene caricata un immagine carica quella di default che puoi impostare).

Ciao
Marco
--
My blog
Working at @agavee

avevo già installato questo modulo e si integra perfettamente con imagecache. ^.^

da dove si imposta l'immagine di default? sull'amministrazione dei blocchi c'è solo il controllo degli accessi.

devo fare un controllo come sopra?

EDIT: COME NON DETTO!!! :(
Ho preso lo script da questo link http://drupal.org/node/162136 e l'ho riadattato nel mio template in questo modo:

function miotemplate_imagecache3($namespace, $path, $alt = ' ', $title = ' ', $attributes = NULL) {
  $icpath = file_directory_path() . '/imagecache/' . $namespace . '/' . $path;
  if (!file_exists($icpath) || is_dir($icpath)) $path = 'logo/No_avatar.gif';
  return theme_imagecache($namespace, $path, $alt, $title, $attributes);
$attributes = drupal_attributes($attributes);
$imagecache_path =  file_create_url(file_directory_path() .'/imagecache/'. $namespace .'/'. $path);
return '<img src="'. $imagecache_path .'" alt="'. check_plain($alt) .'"
class="thickbox" title="'. check_plain($title) .'" '. $attributes .' />';
}

Adesso ho il problema contrario: L'immagine di default viene caricata ma non vedo più le immagini uppate!!! HELP!!! :(

Occhio che mi riferivo alla 2.0 e non a qualla che scarichi di solito dal server come dev, a parte questo poi setti l'immagini dei deault andando ad impostare le info all'indirizzo:
http://TUOSITO.IT/admin/content/types/NOME-CONTENT/fields/field_NOME-FIELD

Ciao
Marco
--
My blog
Working at @agavee

Ho provato quella versione che mi hai detto ma appena uppavo un'immagine compariva un messaggio di errore del tipo "Impossibile caricare l'immagine" e quindi ho deciso di ritornare alla versione 1.1 stabile.

Invece son riuscito a modificare il template aggiungendo questo blocco di codice, sostituendo la funzione originale:

// quando non viene caricata nessuna foto allora viene stampata l'immagine di default
function marinelli_imagecache3($namespace, $path, $alt = '', $title = '', $attributes = NULL) {
if ($path) {
$attributes = drupal_attributes($attributes);
$imagecache_path = file_create_url($path);
// added a namespace class to the image.
$output =  '<img src="'. $imagecache_path .'" alt="'. check_plain($alt) .'" class="thickbox" title="'. check_plain($title) .'" '. $attributes .' width="150" height="150" />';
}
else {
$output = '<img src="'. file_directory_path() . '/logo/No_avatar.gif" alt="Foto non disponibile" />';
}
return $output;
}

In pratica se si aggiunge la foto stampa l'output corretto altrimenti linka l'immagine predefinita "No_avatar.gif" contenuta nella cartella files.

Però facendo solo questo passaggio avevo un altro problemuccio: in tutti i nodi dove l'opzione upload immagine era facoltativa appariva quella fastidiosa X rossa tipica di IE quando non carica l'immagine correttamente. Ho risolto inserendo nel nodo.tpl.php questa funzione:

<?php if(!empty($node->field_articolo_img_allegata[0]['filepath'])){?>
  <p><?php print theme('imagecache3','avatar',$field_articolo_img_allegata[0]['filepath']); ?></p>
<?php } ?>

:-)

PS: con questo piccolo trick sembra che Thickbox smette di funzionare sotto IE6, mentre con Opera e FF tutto ok, mah...