Formattazione Tabella
Salve a tutti
non sono molto esperto di foglio di stile. Ho visto che l'oggetto o classe Table (non so il nome giusto da dargli) è impostata nel foglio di stile con lo spessore del bordo il colore etc.
Ma se io volessi usare formattazioni diverse in diversi tipi di contenuto come posso fare?
Possibile che drupal segue esclusivamente il foglio di stile? Nel campo sia body che altro anche se metto il bordo a zero ma nel foglio di stile è a 1, lui lo mette ad uno. così per il colore.
Io non so come creare una classe o oggetto nel foglio di stile per poi richiamarlo nella pagina, ma penso ci sia un modo più semplince o no?
Grazie!
Risposte
Ciao, per usare formattazioni
Ciao,
per usare formattazioni diverse in diversi tipi di contenuto devi usare questa funzione nel file template.php del tema corrente:
Se invece devi aggiungere oltre agli stili, disposizioni differenti puoi usare questa:
Un po complesso ma è ok
abbastanza complesso :) non
abbastanza complesso :)
non conosco bene php e non ho capito cosa fanno le 2 funzioni, ma ci proverò
A me bastava solo usare una table a bordo 1 per una pagina e una table a bordo zero per un'altra, anche dello stesso contenuto. Ma se non si può fare dello stesso tipo di contenuto anche creando tipi di contenuti ad hoc.
Se non ci sono altri modi mi studio quel codice :)
Grazie!
Ciao tabita87. Al di là della
Ciao tabita87.
Al di là della domanda di AnMouse, gentilmente potresti argomentare un po' di più riguardo le due funzioni?
Sono molto interessato all'argomento "usare formattazioni diverse per diversi tipi di contenuto".
Per prima cosa potresti spiegarmi/ci cosa fanno queste funzioni esattamente...
La prima inizia controllando se esiste un nodo e se è di tipo articolo, ...giusto?
Se lo è , allora la funz. setta due variabili ($front_style e $path_style).....
Ma queste due variabili fanno già parte del file template.php oppure le hai definite tu?
E poi , il file "front-page.css" dovrebbe già esistere , no?
Te lo chiedo perchè nel tema che uso io (MAYO) non c'è nè un file "template.php" , nè un file "front-page.css"
Come ci si deve comportare in un caso come il mio, in cui non ho i due file?
Potresti spiegare anche la parte dopo // Add new CSS.??...
Intanto un grazie.....
----------
Per la seconda funzione, idem.
Se tu potessi spiegarla per bene sarebbe ottimo.
----------
Infine e soprattutto non riesco a capire bene cosa "restituiscono", cioè - dopo averle inserite nel file "template.php" (con tutti i dubbi di cui sopra) , cosa devo fare, cosa mi devo aspettare?
Come , in che modo, queste funzioni, mi danno la possibilità di formattare tipi di contenuti diversi in modo diverso???
---------
Ti ringrazio in anticipo , sperando in una tua risposta dettagliata.
Ciao e buona giornata.
@edo ho scaricato il tema
@edo
ho scaricato il tema mayo e il file template.php esiste, ora ti spiego in dettaglio il perchè dei tpl:
perchè Drupal utilizza file di modello (Template cioè file .tpl.php) per determinare come generare il codice HTML da passare al server web. Una pagina, dato che il server web "serve" al client (browser) è in realtà costituito da diverse parti. Alcune parti tipiche che uno trovare sulle pagine di Drupal sono:
I file di modello predefinito che Drupal utilizza per generare questi pezzi sono, rispettivamente:
Uno dei modi in cui si può costruire il proprio tema è quello di ignorare questi file modello di default con uno che Drupal riconoscerà. Per esempio:
Assicurarsi comunque che il tema include comunque un node.tpl.php e un page.tpl.php di default
Il primo suggerimento di modello viene utilizzato quando Drupal sta per rendere un nodo del tipo di contenuto "storia", che è uno dei tipi di contenuto predefiniti Drupal crea quando lo si installa.
Il secondo suggerimento modello viene utilizzato quando Drupal sta per rendere qualunque pagina è stata definita come pagina "fronte" nelle impostazioni del sito.
Questi "override" (sovrascrittura) sono permessi con l'hook (gancio del framework di drupal) _preprocess_page che ho messo nle post sopra.
È possibile creare il numero di diversi "template di modello" secondo necessità.
In definitiva le funzioni postare sopra preprocessano il tema a livello di pagina e si, riguardo la prima funzione di esempio, se un nodo è di tipo articolo vengono settate le variabili (che ho deciso io in questo caso), del percorso e se si è in front page o meno viene caricato uno stile (front-page.css che ovviamente è un file esistente) oppure l'altro (che anch'esso deve esistere qualsiasi nome gli dai).
La seconda funzione anch'essa preprocessa la pagina e se si tratta della front page sovrascrivono il template page-front.tpl.php che deve esistere oppure page--article.tpl.php. Ho indicato nell'esempio anche la tecnica suggestion che puoi vedere qui
https://www.drupal.org/node/1089656
Questo perchè si puo scegliere che la front page sia senza sidebar o gli articoli senza header.... quindi per essere piu chiari nel file page--article.tpl.php non ci sarà <header></header> per intenderci.
Comunque per il debug puoi sempre usare
function YOURTHEME_preprocess_page(&$vars) {
drupal_set_message('<pre> ' . print_r($vars, TRUE) . '</pre>');
}
e vedere tu stesso cosa ti restituisce la variabile vars nel tuo caso.
In definitiva la funzione preprocessor_page preprocessor_node da usare sia in un modulo custom o nel tema ti danno la possibilità di formattare tipi di contenuti diversi in modo diverso grazie al framework di drupal.
Quello che ti posso dire per finire è che la temizzazione di drupal è molto complessa tanto che non l'ho compresa del tutto e non sono riuscita a riprodurla in un cms tutto mio, consolati! :)
Accidenti tutta sta cosa per
Accidenti tutta sta cosa per poter mettere il bordo di una table a 1 su una pagina e a 0 su un'altra!!!!!
cioè ma se elimini le impostazione di default per le table???
poi mi segue la formattazione che gli do nelle pagine?
No è :)
Molti temi aggiungono al body
Molti temi aggiungono al body una classe che dipende dal tipo di contenuto attualmente visualizzato. Nel caso tu avessi un tema che non lo fa c'è un workaround https://www.drupal.org/project/node_type_class.
Ad ogni modo basta che visualizzi la sorgente della pagina (con un qualsiasi browser) e vedi le classi assegnate al tag body. Ad esempio:
<body class="html not-front not-logged-in one-sidebar sidebar-second page-node page-node- page-node-24 node-type-page custom-background" >
la classe in questione è "node-type-page". Nel tipo di contenuto "articolo" probabilmente sarà "node-type-article" e così via.
Apri il css del tema (il percorso può variare o essercene più di uno a secondo del tema) e aggiungi in fondo al file qualcosa del genere:
body.node-type-page table, body.node-type-page table td {
border: 1px solid black !important;
}
oppure, più specifico per il contenuto del nodo (altrimenti coinvolgerebbe tutte le tabelle nella pagina)
body.node-type-page #block-system-main table,
body.node-type-page #block-system-main table td {
border: 1px solid black !important;
}
la clausola !important potrebbe non essere necessaria. Indica che questa regola ha priorità su tutte le altre applicate allo stesso elemento (per maggiori informazioni vedi una guida generica sui css).
Se non vuoi toccare codici, puoi vedere se https://www.drupal.org/project/sweaver può fare al tuo specifico caso.
Spero ti sia utile.
....AnMouse.....nel tuo caso
....AnMouse.....nel tuo caso credo che basti solo impostare un border="0" nel tag <table>.
Quindi border="0" è un attributo del tag.
C'è proprio il tuo esempio qua: http://www.w3schools.com/html/html_tables.asp
Puoi anche usare uno "style=border:0px;" ....ma in linea, non come css esterno.
Credo che tu possa dare anche un id alla tabella e poi formattarla così dovrebbe avere la priorità su tutto il resto....
La priorità si calcola così:
a)selettore di tipo e pseudo elemento =1
b)classe, pseudo classe e selettore di attributo=10
c)identificatore=100
Spero di esserti stato utile....
Tabita87 grazie
Tabita87 grazie intanto......
Si, effettivamente il file template.php esiste in Mayo....una svista mia che cercavo template.tpl.php...
Ti dicevo intanto grazie per la spiegazione, corposa ed allettante da un punto di vista didattico.
Mi prendo un attimo (un paio di gg) per cercare di assimilare il tutto ma sicuramente ti vorrò fare altre domande....:-)
Spero non sia un problema.
Restiamo 'sintonizzati'...ok?
Buona giornata
Ciao Edo grazie per la
Ciao Edo grazie per la risposta.
Allora io nel foglio di stile la table ha border 0
io vorrei che però nella contenuto pippo del tipo di contenuto topolino il bordo sia ad 1
in full htm anche se metto quando creo la tabella bordo 50 e colore fucsia mi da sempre bordo zero
allora penso perchè è scritto nel foglio di stile, quindi a table non metto nulla ma il risultato è lo stesso
Allora mi chiedo ma in qualsiasi sito html si posso usare diverse formattazioni per table se nel foglio di stile non è scritto nulla ricguardo la tabella. invede in drupal???
bisogna sottostare ai fogli di stile?
Perchè invece io posso formattare testo dimensione e colore in full html? e per la tabella no?
sono davvero neofita quindi scusatemi :)
Ciao.... >invede in drupal???
Ciao....
>invede in drupal??? bisogna sottostare ai fogli di stile?
Certo che no...sennò che cms sarebbe?
Quando dici:
>Allora io nel foglio di stile la table ha border 0
...credo tu voglia dire "..nel codice html che stai modificando"...non c'entrano ancora i fogli di stile.
Immagino anche che tu usi "ckeditor" come editor wysiwyg...
in ogni caso quando crei un pagina base per esempio , hai anche la posssibilita di passare all'editor "solo testo".
Quindi switcha in "Passa all'editor testuale"; trovi il tag <table> in questione e gli metti una cosa del genere:
<table align="right" border="0" cellpadding="5" cellspacing="5" id="tabella_stemmi" style="width: 75%;">
L'unico attributo che ti interessa è il border="0"....
Fatto questo dovresti avere il bordo a zero.
Prova così intanto......
ciao edo scusa se t rompo
ciao edo scusa se t rompo ancora :)
io di solito uso full html non wysiwg
sono passato in plain text e ho fatto come mi dici tu ma se salvo mi da nella pagina il codice:
<table align="center" border="0" cellpadding="1" cellspacing="1" id="tabella_stemmi" style="width: 75%;">
<tbody>
<tr>
<td>gfgf</td>
<td>fgfgf</td>
</tr>
<tr>
<td>fgfgf</td>
<td>fgfg</td>
</tr>
<tr>
<td>fgfg</td>
<td>fgfgfg</td>
</tr>
</tbody>
</table>
<p> </p>
se vado in modifica e rivado in full htm mi rimette il bordo
nei moduli ho wysiwg ma se lo attivo nelle configurazioni mi da una serie di profili non installati tra cui questo ultimo che non so come installare visto che tu mi parlavi di ckeditor
CKEditor (Download) Not installed.
Extract the archive and copy its contents into a new folder in the following location:
sites/all/libraries/ckeditor
So the actual library can be found at:
sites/all/libraries/ckeditor/ckeditor.js
Do NOT download the "CKEditor for Drupal" edition.
ok ho scaricato ckeditor
ok ho scaricato ckeditor staser lo metto nella library e vedo se cambia qualcosa :)
Rieccomi se attivo wyswyg mi
Rieccomi se attivo wyswyg mi si disabilita ckeditor o oramai tutte le pagine le ho formattate con full html, quindi sono punto a capo con sta maledetta tabella!!!
Per CKEditor hai aperto,
Per CKEditor hai aperto, giustamente, un 3D dedicato, non mischiare gli argomenti, crei solamente confusione!
Bella discussione, @AnMouse
Bella discussione,
@AnMouse nessuna confusione si capisce bene che si tratta di formattazione di html.
@edo Restiamo "'sintonizzati'...ok?" certamente!
ok tabita spero di risolvere
ok tabita spero di risolvere il problema :)