salve,
uso il modulo views per elencare vari nodi di tipo "annuncio", e vorrei che alcuni a mia scelta siano evidenziati in qualche modo, magari cambiando colore o caratteri o dimensioni del bordo.
Pensate si possa fare utilizzando views??
Con il modulo originale o moduli esterni? o dovrei mettere mano da qualche altra parte?
cmq per capire bene quello che vorrei fare, vorrei che in una pagina come questa Pagina Annunci magari gli annunci che rispondono a un determinato criterio compaiano con qualcosa di differente, che li evidenzi un pochino; per intederci, è utilizzato in tutti i siti di annunci e inserzioni, a partire da ebay o subito.it, in cui quando paghi un pochino di piu il tuo annuncio è messo in evidenza.
grazie anticipatamente per l'attenzione
saluti, Marco
Usi qualcosa per "flaggare" i contenuti che vuoi mettere in evidenza e poi modifichi il template dei nodi in base alla presenza o meno del flag.
Tra le cose che puoi usare, c'è il modulo Flag, l'opzione "fisso in cima alla lista" tra le opzioni di pubblicazione, oppure un campo CCK apposito.
grazie pinolo,
la tua idea è la piu intuitiva e efficace, solo che io speravo ci fosse qualche modulo apposito, perchè io non so proprio dove metterci le mani sul template dei nodi.
Anche se potrebbe essere la volta buona in cui potrei imparare un pò a manipolare i template.
Domanda:
Nello specifico, io utilizzo views e la formattazione è tabellare. Se io vorrei agire sulla formattazione (delle righe di questa tabella) dei nodi flaggati, in modo da renderle diverse dalle altre, su quali file dovrei agire?
scusate la baniltà, ma proprio non ci ho mai messo mano..
grazie per l'aiuto!
Marco
Agenzie Immobiliari Pisa
Sto cercando di fare esattamente la stessa cosa:
aggiungere una classe css specifica ad una riga di tabella che contiene un campo con un dato valore (nella fattispecie una checkbox si/no).
ho creato un template apposito per la tabella in questione a partire da
views-view-table.tpl.php
:views-view-table--nomeview.tpl.php
;al suo interno:
(...)
<tbody>
<?php foreach ($rows as $count => $row):
//inserisco un if statement per verificare se il valore è "si", nel qual caso inserisco una classe "special" all'interno della riga
if ($row['field_miocampo'] == 'Yes') :?>
<tr class="special <?php print implode(' ', $row_classes[$count]); ?>">
<?php
//altrimenti lascio le classi di default
else:?>
<tr class="<?php print implode(' ', $row_classes[$count]); ?>">
<?php endif;
//fine delle modifiche ?>
<?php foreach ($row as $field => $content): ?>
<td class="views-field views-field-<?php print $fields[$field]; ?>">
<?php print $content; ?>
</td>
<?php endforeach; ?>
</tr>
<?php endforeach; ?>
</tbody>
(...)
Fin qui, tutto bene.
Ma nel mio caso, il campo si/no non deve essere visibile all'utente finale, quindi spunto la checkbox "Exclude this field from display" nelle impostazioni del campo all'interno di views, ed ecco che il mio template non trova più il valore da controllare (field_miocampo) e quindi non funziona.
Usando la funzione
dsm($fields)
di devel sembra che il field 'field_miocampo' ci sia ancora, tuttavia il template si comporta come se non lo trovasse.Non so se sia un bug di views o se "exclude from display" sia inteso per altri utilizzi o ancora se il mio code è fatto male (sono alle prime armi).
Sta di fatto che ad oggi, l'unico sistema che mi rimane è nascondere la colonna del campo in questione con php o css.
funziona, ma non è affatto elegante.
continuo a cercare...
Certified to Rock
ciao bohz,
grazie mille dell'aiuto..più o meno capisco il codice perchè comunque so usare java e C++, solo che non mi è chiara una cosa, quando l'IF riconosce la riga flaggata dal field che vale si
<?php foreach ($rows as $count => $row):
//inserisco un if statement per verificare se il valore è "si", nel qual caso inserisco una classe "special" all'interno della riga
if ($row['field_miocampo'] == 'Yes') :?>
<tr class="special <?php print implode(' ', $row_classes[$count]); ?>">
la modifica alla riga è fatta dalla funzione special?? dove va definita questa funzione?
grazie mille
Agenzie Immobiliari Pisa
bohz, dal primo momento che tu usi un template personalizzato per la view, puoi decidere tu cosa fare e non fare vedere. Sinceramente non ho mai approfondito come funziona esattamente "exclude from display". Di sicuro è utile quando devi usare l'opzione "rewrite output": in questo caso tutti i campi precedenti a quello da "riscrivere" (anche quelli esclusi dalla visualizzazione) sono disponibili come token per il nuovo campo.
In sintesi, io lascerei non selezionato exclude from display e gestirei tutto a livello di template.
@Pinolo
la penso esattamente così anche io.
Il mio problema è che non conosco abbastanza il php di drupal.
mi ci è voluta mezza giornata per tirar fuori quel semplice if statement e non sono affatto convinto che sia la cosa migliore da fare.
Vabbe', se trovo una soluzione degna di tale nome lo riporto qui. Grazie
@tunning88
quello snippet aggiunge semplicemente una classe css all'elemento se il campo di controllo è "si"
Poi bisogna completare il theming modificando i fogli di stile: il selettore "special" permette di assegnare proprietà uniche alla riga da evidenziare.
tipo:
tr.special td{background:#fee900}
Come dicevo, non sono affatto sicuro che sia scritto correttamente, quindi..prudenza!
Certified to Rock