E' possibile fare in modo che le immagini uploadate come preview dei video non risiedano nella stessa directory in cui vengono inserite le altre attraverso l'image.module?
...naturalmente se sì, come?
4.7.3 video_image.module: scegliere directory per immagini
Mar, 03/10/2006 - 16:42
#1
4.7.3 video_image.module: scegliere directory per immagini
Il problema era che avendo integrato nel codice delle gallery di immagini un tasto 'previous - next' ricevevo un errore di mysql nel caso delle immagini allegate nella preview dei video (che usa il modulo image per l'upload). L'errore scaturiva dal block 'random image', che prende immagini a caso dalla directory principale in cui sono uploadate tutte le immagini.
Una soluzione possibile è modificare il module image.module
function image_get_random($count = 1, $tid = 0)
sostituendo '$tid = 0' con l'identificativo di una precisa gallery (suddivise in categorie), cioè con '$tid = 1' se la gallery da cui voglio pubblicare le immagini random ha quell'id.
E' un ripiego più che una soluzione vera e propria, se qualcuno ha qualche consiglio è ben accetto.
Visto che non era una buona idea andare a toccare il codice di un modulo quando si possono trovare soluzioni alternative, inserisco qui il codice che ho modificato per risolvere il problema. Penso che possa essere utile anche ad altri utenti: il problema era che avendo attivo il block 'Random image' avevo un errore quando appariva (e veniva aperto il nodo relativo) un'immagine uplodata come immagine teaser per il video.module...cmq questo codice è utile per chi usa gallery suddivise in categorie con il modulo image.module in generale e vuole un 'previous-next' per i nodi-immagine relativi ad ogni singola categoria (=album differenti).
Nel file template.php del nostro tema inserisco questa funzione che è specifica per il modulo image.module (ritnorna infatti nell'url
return l(sprintf(t('Back to %s'), $name), "image/tid/$tid",
)// NEXT - PREV
function next_prev($current_nid, $created, $type, $btn_type, $label, $class) {
switch ($btn_type) {
case 'next':
$sort = 'DESC';
$sign = '<';
break;
case 'prev':
$sort = 'ASC';
$sign .= '>';
break;
default:
return NULL;
break;
}
$sql = '
SELECT
tid
FROM
{term_node}
WHERE
nid = %d';
$tid = db_result(db_query($sql, $current_nid));
$sql = "
SELECT
n.nid,
n.title
FROM
{node} n
INNER JOIN {term_node} t
ON n.nid = t.nid
INNER JOIN {term_data} r
ON t.tid = r.tid
WHERE
n.type = '%s'
AND ((n.created $sign %d) or (n.created = %d and n.nid $sign %d))
AND r.tid = %d
AND n.status = 1
ORDER BY
n.created $sort,
n.nid $sort";
$result = db_fetch_array(db_query($sql, $type, $created, $created, $current_nid, $tid));
if (!$result) {
$sql = '
SELECT
name
FROM
{term_data}
WHERE
tid = %d';
$name = db_result(db_query($sql, $tid));
return l(sprintf(t('Back to %s'), $name), "image/tid/$tid", array('title' => $name, 'class' => $class));
}
else {
return l($label, 'node/' . $result['nid'], array('title' => $label, 'class' => $class));
}
}
// FINE NEXT-PREV
Creo un file per il nodo immagini e lo chiamo node-image.tpl.php (modificando il node.tpl.php) ed inserisco al suo interno questo codice:
$types = array('image');
if($page != 0 && in_array($node->type, $types)) {
$next = next_prev($node->nid, $node->created, $node->type, 'next', t('Next'), 'node');
$previous = next_prev($node->nid, $node->created, $node->type, 'prev', t('Previous'), 'node');
echo "$previous | $next";
}
In questo modo in caso abbia immagini che non appartengono ad una data categoria (tipo le immagini teaser per i video), ho cmq un 'Back to' al nodo principale delle mie gallery e non ho più errori.
Si potrebbe migliorare, per ora mi va bene così...ma se qualcuno ha suggerimenti, possono sempre essere utili.
interessante, se mi vuoi inviare una patch via mail la propongo al maintainer del video.module. Oppure postala tu stesso su Drupal.org, o contatta Fabio :)
--
Drupal e Siti Web Torino
Blog: Computer Graphics
Se mi dai indicazioni su come si deve scrivere la patch, non ho problema a farla, oppure pensaci tu, come preferisci, per me problemi non ve n'è.