In Crea Contenuto ho due tipi di messaggi diversi; quando vanno in frontpage hanno il medesimo aspetto e non è possibile distinguerli:
è possibile personalizzare lo sfondo in modo da differenziarli?
ciao e grazie
In Crea Contenuto ho due tipi di messaggi diversi; quando vanno in frontpage hanno il medesimo aspetto e non è possibile distinguerli:
è possibile personalizzare lo sfondo in modo da differenziarli?
ciao e grazie
Certo, ma dovresti per necessità modificare il codice delle pagine.
Mi spiego: per prima cosa dovresti prenderti il modello preesistente di page.tpl.php presente all'interno del tuo tema.
Poi lo duplichi e lo rinomini come page-front.tpl.php.
A quel punto puoi entrare nel codice e fare le modifiche, ad esempio ai placeholder degli stili (sezioni "class" o "id"), modificando di conseguenza i file .css relativi.
Se ho parlato italiano... tanto meglio :)
Se ho parlato greco... mi sa che ti toccherà studiare un po'.
Studiare fa sempre bene a tutti. Non è page.tpl.php che va modificata ma node.tpl.php. Infatti abbiamo:
<div class="node<?php if ($sticky) { print ' sticky'; } ?>
e io voglio aggiungere:
<?php if (tipo di contenuto 1) { print ' stile1'; } ?>
<?php if (tipo di contenuto 2) { print ' stile2'; } ?>
solo che non so come scrivere il tipo di contenuto;
Dovrebbe essere come quello di Views Node Type ma non so dove pescarlo.
ciao e grazie
www.gmpe.it
Uhm... a me risulta page-front... infatti le tue "if" sarebbero automaticamente risolte con il metodo che t'ho esposto (che poi non è mio, è dato dal vagare su Drupal.org...).
scusa la mia abissale ignoranza, ma su page.tpl.php non riesco a distinguere i diversi tipi di contenuto, ma ho un generico "contenuto" o "messaggio"
<div id="main">
<?php if ($mission != ""): ?>
<div id="mission"><?php print $mission ?></div>
<?php endif; ?>
<?php print $header; ?>
<?php if ($title != ""): ?>
<h2><?php print $title ?></h2>
<?php endif; ?>
<?php if ($breadcrumb) { ?><div class="breadcrumb"><?php print $breadcrumb ?></div><?php } ?>
<?php if ($tabs != ""): ?>
<?php print $tabs ?>
<?php endif; ?>
<?php if ($help != ""): ?>
<p id="help"><?php print $help ?></p>
<?php endif; ?>
<?php if ($messages != ""): ?>
<?php print $messages ?>
<?php endif; ?>
<?php print($content) ?>
</div>
ciao e grazie per la pazienza
www.gmpe.it
Facciamo un passo indietro. La tua richiesta originale era distinguere se il contenuto era in home page o meno, vero?
Se è così, il meccanismo di "visita" dei file di template di Drupal fa in modo che se esiste un file page-front.tpl.php, sarà proprio questo il file interpretato per il rendering dell'home page, e solo di questa.
Quello che farei io quindi è clonare il page.tpl.php generico, quindi definire al suo interno (dove ti serve) dei Quello che ti pare, e poi i class li definisci nel foglio di stile.
In questo discorso non ho mai parlato di "if", appunto perchè il capire in che tipo di pagina sei è un lavoro che fa il phptemplate da solo.
No, forse mi sono spiegato male; vorrei che il contenuto fosse differenziato in base alla provenienza e non in base alla collocazione finale perciò, se è ad esempio un messaggio della segreteria (tipo di contenuto: messaggio di segreteria) voglio che abbia un certo aspetto; se è la proposizione di un corso con iscrizione (tipo di contenuto: corso) deve avere un altro aspetto, in modo da non confonderli, soprattutto quando sono in home, ma non solo.
Spero di essere stato più chiaro.
grazie
www.gmpe.it
Ok ok... capito!!! :)
Ecco perchè quando parlavi del node.tpl.php avevi ragione, ma non capivo il nesso.
Ciò che devi clonare è il node.tpl.php, e rinominarlo col nome del content type che hai creato (supponi di avere "articolo" come nuovo content type; allora il tuo node customizzato sarà node-articolo.tpl.php).
All'interno, metti un altro div intorno a questo codice (ad esempio):
con un altro class che avrai definito nel tuo foglio di stile.
Così dovremmo esserci...
Quasi.
Se aggiungo il div con stile e contenuto, solo la parte del contenuto viene modificata.
Ho risolto invece così:
Nella prima riga al posto di
<div class="node<?php if ($sticky) { print ' sticky'; } ?>.........
Sostituisco
<div class="miostile">
lasciando inalterato tutto il resto funziona perfettamente.
grazie per l'aiuto e Buon Anno
www.gmpe.it
In realtà, se l'unica differenza era lo stile da applicare in homepage, non era necessario aggiungere un file .tpl.php. Bastava un if come inizialmente detto da bgiody.
L'oggetto $node contiene anche la proprietà type, il cui valore dipende dal tipo di contenuto e i valori possibili di questa proprietà sono quelli che imposti per ogni tipo di contenuto nel campo "Tipo".
Quindi, per esempio...
<?php if ($node->type == 'page') { print ' stile1'; } ?>
<?php if ($node->type == 'story') { print ' stile2'; } ?>
Grazie Pinolo, è proprio quello che intendevo fare all'inizio, ma non sono ancora pratico né di Drupal né di php.
ciao
www.gmpe.it