messaggi con sfondi diversi

11 contenuti / 0 new
Ultimo contenuto
messaggi con sfondi diversi

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

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

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.

Alex72RM wrote:
Facciamo un passo indietro. La tua richiesta originale era distinguere se il contenuto era in home page o meno, vero?

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

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):

<?php
 
print $content;
?>

con un altro class che avrai definito nel tuo foglio di stile.

Così dovremmo esserci...

Alex72RM wrote:

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

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