ciao a tutti,
ho letto dal sito http://drupal.org/node/274487 come realizzare in un nodo personalizzato la visualizzazione delle immagini.
Partiamo da un dato funziona e sono già contento però vorrei poter far aprire a lightbox un determinato preset e non l'immagine originale, mi aiutate per capire come fare?
questo è il codice che adattato con i miei nomi dei campi ho utilizzato.
Grazie
Tiziano
<?php
foreach((array)$node->field_pro_img_tavola as $item) {
$item['lightbox_preset'] = 'imagefield_thumbs';
print theme('imagefield_image_imagecache_lightbox2', 'imagefield_thumbs', 'field_pro_img_tavola', $item, $node, $rel = 'lightbox');
}
?>
Credo che quella funzione theme_ di lightbox2 supporti solo la visualizzazione dell'originale. Ma dovresti investigare se ne esiste un'altra che permette di passare come parametro dell'immagine da visualizzare nel box un altro preset. Io credo che esista, anche perché opzioni simili sono disponibili nei formatter dei campi.
ciao Pinolo,
credo di aver trovato l'inverso
<?php
// PRINT IMAGES IF THEY EXIST
if ($field_image_upload) {
$node->field_image_upload[0][fid] = 1;
$i = $node->field_image_upload[0][fid];
// SHOW MAIN ARTICLE IMAGE
print '<a href="/fp_files/imagecache/article/article_images/' . $field_image_upload[0]['filename'] . '" ' . '" ' . 'title="' . $image['title'] . '" rel="lightbox[group]">' . theme('imagecache', 'article_main', $field_image_upload[0]['filepath']) . '</a>';
if (is_array($field_image_upload) && count($field_image_upload)) {
foreach($field_image_upload as $delta => $image) {
if ($i++ != 1){
// SHOW THUMBNAIL SIZE IMAGES
print '<a href="/fp_files/imagecache/article/article_images/' . $image['filename'] . '" ' . '" ' . 'title="' . $image['title'] . '" rel="lightbox[group]">' . theme('imagecache', 'teasers', $image['filepath']) . '</a>';
}
}
}
}
?>
non so come funzioni ora proverò a cercare qualcosa di meglio...
grazie per il supporto!
tiziano
ed infine il commento 8 http://drupal.org/node/181154
sembra estrerre il path e trasmetterlo al preset ma ora è tardi...e non credo faccia al caso mio
/**
* Implementation of theme_imagefield_jlightbox().
*/
function mytheme_imagefield_jlightbox($namespace, $formatter, $field, $item, $type, $attributes = array()) {
$attributes['class'] = 'image '. $namespace;
$gallery = '';
$imagecache_path = file_create_url(file_directory_path() .'/imagecache/'. $namespace .'/'. $item['filepath']);
$image = theme('imagecache', $namespace, $item['filepath'], $item['alt'], $item['title'], $attributes);
if ($type == 'gallery') {
$gallery = '['. form_clean_id($field['field_name']) .']';
}
$link_attributes = array(
'rel' => 'lightbox'. $gallery,
'title' => ($item['alt'] != $item['filename']) ? $item['alt'] : $item['title'],
);
preg_match('/(http.*?)"/', theme('imagecache', 'large_image', $item['filepath']), $matches);
$output = l($image, $matches[1], $link_attributes, NULL, NULL, FALSE, TRUE);
return $output;
}
Se ho capito bene, ha ragione Pinolo: non hai bisogno di una customizzazione via php.
nella tab "display fields" (visualiazza campi) per il campo immagine trovi esposte tutte le combinazioni di display dei preset di imagecache.
una cosa del tipo lightbox2 [preset del nodo]->[preset in lightbox]
Certified to Rock
ciao! non sono l'unico a andare a dormire tardi...hai ragione infatti ho impostato i valori nella tab ma non mi funziona e non mi chiedere il perchè...questo è il guaio. :-)
ho impostato tipo
lightbox2 slideshow: imagefield_thumbs->cop
in cui il primo preset è l'icona e il secondo una riduzione dell'immagine con i "marchi" ma non logge...
ho provato a eseguire i cron ma stessa storia posso provare a togliere la cache da explorer o mozzilla e vedere se è legato a questo problema, altrimenti che cosa mi rimane.
Krima tempo fa mi aveva aiutato in questo senso dicendomi di usare lightbox io non ho provato perchè avevo seguito la spiegazione-tutorial da signalkuppe e non volevo trovare soluzioni diverse, ora dal momento che non mi funzionava più ho deciso di tornare a lightbox2 e con un paio di linee di codice nel nodo personalizzato funziona tranne per l'apertura dei preset, tu mi dici di togliere anche quelle?no...vero...anche perchè senza quelle non potrei visualizzare nulla...
grazie
Tiziano
ciao bohz,
torno su questo orgomento perchè non ho ancora trovato una soluzione...
questo è u pezzo del codice del nodo personalizzato
<?php
foreach((array)$node->field_pro_img_tavola as $item) {
if ($item['filepath'] != '' && $item['filepath'] != NULL){
$item['lightbox_preset'] = 'imagefield_thumbs';
print theme('imagefield_image_imagecache_lightbox2', 'imagefield_thumbs', 'field_pro_img_tavola', $item, $node, $rel = 'lightbox');
}
}
?>
il mio codice mi visualizza l'immagine con il preset desiderato imagefield_thumbs ma se imposto nel tipo di contenuto:
lightbox2: imagefield_thumbs->cop non visualizzo il preset...
mi sai spiegar il perchè?
ciao
Tiziano
Non ti so spiegare il perchè...
però penso che se hai già impostato il preset di visualizzazione nel template, non c'è bisogno di inserirlo anche nella formattazione dei campi (display fields). prova a lasciare "default" o "generic files" (o al limite spuntare "exclude")
Certified to Rock
ciao eccomi...
nel template non ho impostato nulla, anzi esiste ancora del codice per la visualizzazione con thickbox...da cancellare ovviamente.
il mio problema è che non posso aprire il preset che desidero in un nodo personalizzato...sia thickbox che lightbox aprono direttamente l'immagine in un nodo personalizzato e non so come fare.
posso decidere di non avere un nodo personalizzato... tanto vedo comunque le informazioni ma in questo caso esiste un sistema "diverso" per personalizzare la visualizzazione?
Grazie e scusa se rompo...
Tiziano