Salve,
sto cercando di capire com'é strutturato drupal e mi sono cimentato ad effettuare piccole modifiche al file page e node .tpl.php.
Mi sono limitato ad aggiungere unicamente una scritta con tag
La cosa che non sono riuscito a capire è dove si trova il file tpl.php del contenuto che creo.
Chiarisco:
creo un nuovo contenuto chiamato pippo ed aggiungo 2 campi pippoMio e pippoVostro.
Per quel che ho capito il sistema dovrebbe creare un file chiamato pippo-page.tpl.php, ma pur cercando non sono riuscito a trovarlo.
Se è come ho capito io dove dovrei cercare il file?
Se non è così dove posso trovare la documentazione che mi spieghi come si comporta?
grazie
Gaetano
Non lo crea, perché usa sempre il template di default per tutti i tipi di contenuto. Però se vuoi personalizzarlo lo devi creare tu e poi modificarlo, a partire da quelli base che trovi nelle cartelle di drupal (o del tema che stai usando).
...enter at your own risk...
il template di default è node.tpl.php o un altro?
Gaetano
Ciao,
ti spiego brevemente ma ti rimando già subito alla guida su Drupal.org, dove le cose sono spiegate molto bene: https://www.drupal.org/documentation/theme (leggila con calma e poi eventualmente fa le domande).
Il tuo tema non ha necessità di template .tpl.php, perché in loro assenza drupal usa quelli standard: https://api.drupal.org/api/drupal/modules!system!page.tpl.php/7
io li copio dal tema bartik e li ripulisco, ma ormai uso sempre il tema bootstrap e parto da quello, sta solo a te scegliere, esistono tanti temi già pronti base e ti consiglio di partire da uno di quelli per capire meglio.
Drupal non crea template, ho siti con 10.000 pagine, mi troverei annegato in temi e se devo cambiare una regione sarei fregato :-).
Il sistema funziona così (a grandi linee):
crei un file generale page.tpl.php che sarà il template per tutte le pagine (quindi comprensivo del menu, il footer, il blocco laterale eccetera).
Il template node.tpl.hp è per i nodi, quindi dal titolo del contenuto fino al body.
Mentre se tu vuoi (ho detto se), puoi creare la pagina page--front.tpl.php o page--node-1.tpl.php (dove 1 è l'id del nodo) per personalizzare solo quella pagina.
Ad esempio la home page è di solito diversa dalle altre pagine per impostazione (non hai la sidebar mettiamo), in questo caso ti conviene creare un page--front.tpl.php per mostrare il contenuto in maniera diversa.
Per ora ti lascio con questa infarinatura, ma procedi con lo studio. Poi scoprirai moduli come panel o l'uso di semplici if per fare tutto con un template o quasi, ma è più complesso gestirli, quindi inizia dal tema.
Mi trovi su Google+
ti ringrazio, studierò il link e ti farò sapere
Gaetano
Ciao morettolss,
come da tuo consiglio ho letto i links che mi hai indicato, non mi è tutto chiaro, ma inizio ad avere una visione diversa della struttura di drupal.
Non ho l'ardire e la competenza per procedere alla realizzazione di moduli e/o nodi ex novo, anche se dalla spiegazione non sembra sia difficile (all'apparenza).
Ho l'abitudine quando leggo di fare anche degli esempi pratici per poter meglio capire. Per la pagina ed i nodi mi è abbastanza chiaro.
Adesso mi è anche + chiara la domanda che volevo porre.
Quello che vorrei personalizzare è il layout nella fase di creazione o modifica dei contenuti.
Normalmente quando inserisco un nuovo contenuto mi visualizza le label ed i campi uno sotto l'altro in verticale, invece per alcuni vorrei che fossero in orizzontale.
Come nella precedente risposta di giuvax ho letto che il file tpl.php non esiste in quanto viene usato quello di sistema, anche se leggendo il link che mi hai indicato esiste un file field.tpl.php che non viene usato, ma che è possibile usare come base per la personalizzazione del layout di inserimento/modifica.
Ho anche visto che c'è un modulo field_group_in line che dovrebbe permettere di fare quello che chiedo, ma non funziona.
Non so se tu hai mai personalizzato il layout d'inserimento del contenuto, ma se potessi darmi un avvio od indicarmi un link da leggere con un esempio pratico su come fare, per me sarebbe più semplice.
Ti ringrazio
Gaetano
Gaetano
In quel caso vai nel tipo di contenuto, tab "manage display" e gestisci li la visualizzazione, ma questo è anche css.
Basta dare all'elemento label un float:left o un display:inline-block.
Mi trovi su Google+
La gestione Visualizzazione la conosco e tramite firebug ho visto che il file .CSS collegato sta in modules/field/theme/field.css.
Però a me serve farlo nella fase della dell'inserimento o modifica e non nella fase successiva della visualizzzione.
Ritornando alla visualizzazione, non penso basti il css, in quanto devo decidere quali campi vanno in orizzontale e quali in verticale.
Quindi ci dev'essere un template per i field da personalizzare.
Con firebug che tu sappia, c'è la possibilità di sapere come si chiama il file che si apre?
Gaetano
Via CSS (sapendolo usare) puoi fare tutto. Nel link che ti avevo già dato (https://www.drupal.org/node/1089656) veniva spiegata anche la modifica dei campi, quindi non lo hai letto bene.
Mi trovi su Google+
Dopo la risposta avevo visto il file field_tpl_php e l'avevo letto un po', e dalla tua risposta ho capito che sto andando un po' troppo velocemente e sto mischiando un po' di cose.
Siccome ho letto da altre parti (tu compreso) che quello che voglio fare posso realizzarlo tranquillamente tramite CSS, vorrei soffermarmi sulla modifica di questo file e capire come farlo.
Il file utilizzato è lo style.css ed ho visto che ci sono varie sezioni di input.
Per la label viene usato l'elemento .form-item label, mentre per l'input input.form-text.
Come già detto ho necessità di fare un piccolo esempio pratico per poter capire come funziona il tutto.
Per iniziare ho cambiato il colore al campo text ed al campo text-area ed ho notato che lo fa per tutti i campi, quindi la prima domanda che mi sono posto è:
Modificando unicamente il file style.CSS posso personalizzare il colore di un solo campo e non di tutti?
Se la risposta è no devo obbligatoriamente capire meglio come interagire col file field.tpl.php
Sono consapevole del disturbo che ti sto dando, ma se non riesco a capire questa che è una stupidata è inutile che legga altro.
Al link che mi hai segnalato non sono riuscito a trovare nulla su come modificare il CSS per i miei scopi
Ti ringrazio per il tempo che mi stai dedicando
Gaetano
Ogni field ha una sua classe (appena sopra la label), basta che matchi quella.
Guide sui CSS è pieno il web, io inizierei proprio da li prima di passare per Drupal :http://www.html.it/guide/guida-css-di-base/
Mi trovi su Google+
Allora ho capito che la mia conoscenza dei CSS era ferma a vari anni fa.
Dal link che mi hai indicato, ho trovato vari comandi nuovi e parecchie novità.
Ho letto la parte relativa alla personalizzazione dei campi ed ho notato che in style.css posso anche definire anche il singolo campo.
La fase successiva sarà se riuscirò a capire come visualizzare 2-3 o n label e campi in orizzontale.
Per il momento ti ringrazio e ti aggiornerò sui progressi
Gaetano
No, non ho capito come fare, ho fatto varie personalizzazioni nel CSS, ma non ci sono riuscito.
Quando dici:
Ogni field ha una sua classe (appena sopra la label), basta che matchi quella.
non so cosa significhi il termine matchi, ho visto il codice ed all'interno del div class='content', ha questo codice per la label e l'input:
Prov.
Mentre per l'input sono riuscito a cambiare il colore del campo, per la label non ci sono riuscito in quanto hanno lo stesso nome.
Capire come mettere sulla stessa linea una label con input ed una seconda label con input non mi riesce proprio
impossibile
------------
Ho visto che il CSS dove ci sono i vari riferimenti alle classi di bartik è systemtheme.css, e c'é:
label {
display: block;
font-weight: bold;
}
label.option {
display: inline;
font-weight: normal;
Quindi nel CSS l'hanno previsto.
Ho settato l'elemento label come inLine e mi ha visualizzato tutte le label e gli input sulla stessa linea, ma per tutti tutti i campi della form.
------------
Penso che il div su cui operare sia:
perchè è quello che contiene gli altri, ma questa classe non può essere da nessuna parte in quanto penso la crei al volo, probabilmente ci vorrà qualche altro file.
Gaetano
Faccio un esempio pratico:
<div class="form-item webform-component webform-component-textfield webform-component--nome webform-container-inline">
<label for="edit-submitted-nome">Nome </label>
<input class="form-control form-text" type="text" id="edit-submitted-nome" name="submitted[nome]" value="" size="60" maxlength="128"></div>
CSS:
.form-item.webform-component.webform-component-textfield.webform-component--nome.webform-container-inline label {
float: left;
}
Studia il CSS e inizia dalle basi e dalla teoria, altrimenti non ne uscirai mai.
Mi trovi su Google+