Vengo al dunque.
Tramite CCK ho creato una sorta di galleria fotografica.
Il codice HTML generato, per i miei gusti, è fin troppo poco semantico ed aggiunge fin troppi div annidati per ogni singolo field.
Per creare questa galleria ho aggiunto un tot di field.
Per eliminare codice html superfluo mi sono creato un file content-field-field_foto1.tpl.php e l'ho ripulito.
Tutto ok.
Quel che mi domando è, visto che ho creato un tot di field, devo necessariamente creare tanti content-field-field.....tpl.php tanti quanto sono i field inseriti? Non esiste una maniera per modificare un solo file tpl.php?
Avevo pensato di fare l'overriding di content-field.tpl.php ma così facendo lo applico globalmente anche per altre tipologie di contenuto.
Spero di essere stato chiaro :-)
Il template
content-field.tpl.php
viene usato per stampare ogni campo CCK, come hai giustamente notato.Quello che fa confusione credo è che un campo CCK (facciamo
field_foto
) può avere da zero a n instanze. Esempio galleria, il campo è uno è si chiama semprefield_foto
ma può avere nessuno, 1,2,3, ecc foto, per il template questo si trovano nel variabile$items
, C'è anche un booleano$field_empty
che è TRUE quando non ci sono instanze.Quindi se vogliamo creare HTML particolare per questo specifico campo CCK ed i suoi instanze, dobbiamo:
1. Copiare
content-field.tpl.php
dasites/all/modules/cck/theme
nella cartella del nostro tema2. Fare un altro copia di questo file, sempre nella cartella del nostro tema rinominandolo
content-field-field_foto.tpl.php
3. Modificare quest'ultimo come piace e pare...
Più imparo, più dubito.
Ho già fatto come dici ma me lo applica sempre al primo field.
Io ho creato otto field differenti chiamati _foto1, _foto_2,....,_foto8 è forse questo il problema?
Si. Tu hai creato 8 field mentre era solo necessario creare un field specificando (per esempio) 'Number of values' a 8.
Più imparo, più dubito.
Effettivamente lo avevo intuito, solo che per necessità, "diciamo" di usabilità (sarebbe meglio dire di imbecillità :D) sono stato costretto a fare così.
Mi sa che cercherò di far cambiare idea!
Grazie mille per l'aiuto.
ps: ma che fine ha fatto il cerca del forum? :p
Dimenticavo, ma se imposto un solo field che accetta istanze multiple, poi posso far si che nell'anteprima mi appaia una sola istanza, ad esempio la prima?
In poche parole, solo la prima foto delle otto inserite.
Si. Sempre in
content-file-file_foto.tpl.php
puoi usare il variabile$teaser
per controllare se è antiprima (teaser in inglese) o no.Più imparo, più dubito.
Capito, quindi con quella variabile posso decidere quale delle, ammettiamo, 8 istanze dello stesso filed far apparire l'anteprima?
Eventualmente se costruisco una vista, posso fare lo stesso? Cioè prendere solo la prima istanza dello stesso field?(SI :D)Grazie per la pazienza e delucidazioni, è da veramente poco che mi sono avvicinato a Drupal e sto cercando di capirlo bene. :-)
ps: premesso che so che in Italiano esiste bene poco ma c'è un buon libro anche in Inglese che spieghi in maniera approfondita Drupal, come temizzarlo, api e come è strutturato? Ho già esperienze in php, html, etc... .
Libri in ingrish http://www.drupalitalia.org/node/9940#comment-31719 punto 3.
Più imparo, più dubito.
Denghiu :)