Personalizzare h1.title su content-type diverso

12 contenuti / 0 new
Ultimo contenuto
Personalizzare h1.title su content-type diverso

Ciao a tutti

in questi giorni sto personalizzando le pagine di un content-type che chiamo scheda_prodotto.
Non che mi serva stravolgere il layout di queste schede; in fondo già adesso posso decidere
cosa omettere-inserire in determinate pagine.

Quello che mi fa rabbia è che ho un solo tag "h1.title" che è chiamiamolo " for all" (è il titolo che esige
CCK e che non puoi in nessun modo omettere) che non riesco a personalizzare in nessun modo. Ho anche
applicato una classe personalizzata al content-type, che funziona su tutti i tag tranne che su quello.

Allora mi sono lanciato, preso dall'entusiasmo, a tentare la strada del "node-scheda_prodotto.tpl.php", ci ho
passato una giornata intera, ma non mi funziona in nessun modo.

Non so se perchè il mio tema è basato su Skinr e quindi ha una struttura diversa, ma non c'è nessun "template.php"
nella cartella del tema , la trovo solo nella cartella 'st_core'. Qui la struttura:

themes->stthme->nagara->themplates->(node.tpl.php/page-tpl.php)
->st-core ->(template.php/node.tpl.php/page.tpl.php)

Ho provato il modulo "node-page" che mi fa creare un particolare node.tpl e poi me lo carica. Funziona....solo che
mi carica contemporaneamente anche la page.tpl.php ..quindi ho una pagina sotto l'altra :-))))

Ho provato un modulo "css-injection" ...ma questo benedetto "h1.title" non si riesce a modificare in nessun modo.

Rimarrebbe la strada del "cambio tema" su content-type. Praticabile , ma sarebbe una "soluzione barbina" oltre ad appesantire
il caricamento delle pagine .

Non c'è nessuno che si è trovato in questa situazione ?

Ho decisamente bisogno di aiuto..non ne vengo fuori

Grazie mille a tutti
Ed

non ho capito bene, ma sembra che il titolo nel tuo caso sia in page.tpl.php pittosto che il node-contenttype.tpl.php.
se è questo il caso credo ti serva un template di questo tipo: page-node-contenttype.tpl.php

detto ciò, aiuterebbe sapere che tema usi, fusion?
il fatto che non riesci a modificare h1 anche con un selettore contenttype-specifico è strano: in genere tutti i temi (se non drupal core) implementano classi specifiche per il body e quindi un selttore del tipo
.contenttype h1.title{} dovrebbe andare...

Ciao bohz
provo a spiegarmi meglio.

Innanzitutto il mio tema, originariamente, si chiama Nagara . Lo trovi (demo) sul sito di symphonythemesdotcom. Mi serviva un tema-base che avesse uno style newspaper e l'ho trovato li.
Da li ho cominciato a personalizzare, capire, sviluppare.
E' un tema GBD basato su Skinr : quindi mi trovo due cartelle sotto la cartella themes:
1) nagara
2) st_core
Infatti se voglio avere l'impostazione "a griglia" , in "impostazioni-appearance" devo abilitare entrambi. Nagara come template di default e st_core attivato.

Quello che mi manda in confusione è questo:
In entrambe le cartelle ho entrambi i file : page.tpl.php e node.tpl.php (???)

Mentre i riferimenti css ad h1/h1.title sono così strutturati:
Nella cartella "nagara" nel css principale "nagara-style.css":

/* Page and full node titles */
h1.title {
  padding:10px;
  margin: 0;
  text-transform: uppercase;
  font-size: 14px;
  color: #2F2323;
}

Nella cartella "st_core" :
Nel file "style.css" :

/* HTML Elements
-------------------------------------------------------------- */
h1, h2, h3, h4, h5, h6 {
  margin: 10px 0;
  line-height: 1.2;
}

Nel file "typografy.css":

/* HTML Elements
-------------------------------------------------------------- */
h1 {
  font-size: 180%;
}

Come vedi, l'unico riferimento al tag h1 con la classe "title" è solo nel css principale.
Nei node.tpl.php e page.tpl.php , in entrambe le cartelle , non c'è nessun riferimento a h1.title.

Ovviamente ho fatto una marea di personalizzazioni (inserendole in un custom.css) in base alle classi dei fields e via discorrendo
ma h1 pare blindato.

Tra l'altro il tema permette (non so se è per tutti così o è una cosa che ha personalizzato chi ha realizzato questo tema) di impostare
una classe supplementare ai vari content-type. Quindi se io assegno al content-type "scheda_prodotti" la classe supplementare "prodotti"
mi è sufficiente, ad esempio per un campo field_image, inserire nel custom.css:

.prodotti .field_image {}

per personalizzare solo per quel content-type il campo immagine.

E' solo quell' h1.title che mi sta facendo impazzire

Spero di aver spiegato meglio stavolta

Cosa ne pensi ?

Buona giornata
Ed

Prova ad aggiungere !important alla tua definizione di h1.title

Come dice bohz è molto probabile che il titolo sia in page.tpl.php e vada spostato in node.tpl.php. Non potendo vedere il codice del tema che usi ti faccio un esempio con il tema che di solito uso per i siti che faccio ovvero Framework.

Prima

page.tpl.php

Quote:

<?php if ($mission): print '<div id="mission">'. $mission .'</div>'; endif; ?>
<?php if ($title): print '<h2'. ($tabs ? ' class="with-tabs"' : '') .'>'. $title .'</h2>'; endif; ?>
<?php if ($tabs): print '<div id="tabs-wrapper" class="clear-block"><ul class="tabs primary">'. $tabs .'</ul>'; endif; ?>

node.tpl.php

Quote:

<?php if ($page == 0): ?>
<h2><a href="<?php print $node_url ?>" title="<?php print $title ?>"><?php print $title ?></a></h2>
<?php endif; ?>

<?php if ($submitted): ?>
<span class="submitted"><?php print $submitted; ?></span>
<?php endif; ?>
 

Dopo

page.tpl.php

Quote:

<?php if ($mission): print '<div id="mission">'. $mission .'</div>'; endif; ?>

<?php if ($tabs): print '<div id="tabs-wrapper" class="clear-block"><ul class="tabs primary">'. $tabs .'</ul>'; endif; ?>

node.tpl.php

Quote:
<?php if ($page == 0): ?>
<h2><a href="<?php print $node_url ?>" title="<?php print $title ?>"><?php print $title ?></a></h2>
<?php endif; ?>
<?php if ($page == 1): ?>
<?php if ($title): print '<h2 class="node_title">'. $title .'</h2>';endif; ?>
<?php endif; ?>

<?php if ($submitted): ?>
<span class="submitted"><?php print $submitted; ?></span>
<?php endif; ?>

In questo modo puoi personalizzare il titolo per ogni tipo di contenuto.

Ciao ragazzi
innanzitutto mille grazie e a tutti!! Stavo per arrendermi (prima o poi capirò perchè non riesco a caricare un
nuovo page-node-contenttype.tpl.php, nè node-contenttype.tpl.php.....boh...come se non li vedesse....

Nel frattempo ho messo in atto il suggerimento di Krima e Bohz. ( Anche !important non è male!!)

Prima
page.tpl.php:

<div id="st-content-region" class="st-content-region row nested">
        <div id="st-content-region-inner" class="st-content-region-inner">
         <a name="st-main-content-area" id="st-main-content-area"></a>
          <?php print theme('grid_block', $tabs, 'content-tabs'); ?>
          <div id="st-content-inner" class="st-content-inner block">
          <div id="st-content-inner-inner" class="st-content-inner-inner inner">
          <!-- Breadcrumb -->
           <?php print theme('grid_block', $breadcrumb, 'breadcrumbs'); ?>
<?php if ($title): ?>
<div class="block-title-left"><div class="block-title-right"><h1 class="title"><?php print $title; ?></h1></div></div>
<?php endif; ?>
                     <?php if ($content): ?>
                     <div id="st-content-content" class="st-content-content">
                     <?php print $content; ?>
                      <?php print $feed_icons; ?>
                       </div><!-- /st-content-content -->
                       <?php endif; ?>
                      

Questo è l'unico riferimento esistente di "title" su
node.tpl.php:

<?php if ($page == 0): ?>
    <h2 class="title"><a href="<?php print $node_url ?>" title="<?php print $title ?>"><?php print $title ?></a></h2>
    <?php endif; ?>

Quindi su suggerimento di Krima ho commentato in page.tpò.php e inserito in node.tpl.php:
Dopo:

<?php if ($title): ?>
<div class="block-title-left"><div class="block-title-right">
<?php if ($page == 0): ?><h2 class="title"><?php print $title; endif; ?></h2></div></div>
<?php endif; ?>
<?php if ($title): ?>
<div class="block-title-left"><div class="block-title-right">
<?php if ($page == 1): ?><h1 class="node_title"><?php print $title; endif; ?></h2></div></div>
<?php endif; ?>

Wow, funziona alla grande. Solo che non risolveva fino in fondo il mio problema in quanto in TUTTE le pagine
veniva cambiata la formattazione del titolo , come da nuova classe.

Curiosando qua e la , sono incocciato nel thread di un utente drupalitalia che aveva la necessità di cambiare formattazione
di una tabella per ogni categoria di contenuto. Ho notato che usava la variabile $type.

Ho deciso di testare così:

node.tpl.php:

<?php if ($title): ?>
<div class="block-title-left"><div class="block-title-right">
<?php if ($type == "article"): ?><h1 class="title"><?php print $title; endif; ?></h2></div></div>
<?php endif; ?>
<?php if ($title): ?>
<div class="block-title-left"><div class="block-title-right">
<?php if ($type == "scheda_vini"): ?><h1 class="node_title"><?php print $title; endif; ?></h2></div></div>
<?php endif; ?>

Alla grande: adesso solo la categoria "scheda_vini" eredita la classe " h1.node_title" . A questo punto intravedo possibilità ulteriori...

Un chiarimento : suppongo che "$page == 0" sia l' HP e "$page == 1" tutto il resto (così almeno si comporta a me al momento) . Ho provato a cercare ulteriore documentazione al riguardo ma non ne trovo.
Questa variabile potrebbe usarsi anche anche il altri modi tipo sottopagina (scheda di un articolo, etc ) ..qualcosa del tipo "$page == 1(2)" ?

Grazie a tutti del vs aiuto e buona serata
Ed

Le tue intuizioni sono buone :-) ora basta che cambi la classe del titolo nei node-contenuto.tpl.php e la personalizzi dal CSS e puoi avere tutti i titoli formattati in modo diverso per ogni tipo di nodo.

Grazie ....:-)
Spero di trovare qualcosa a riguardo...ho in mente delle ideuzze per il web che se riuscissi a concretizzarle ....;-)

Una cosa; perchè mi parli di node-contenuto.tpl.php quando ho modificato solo node.tpl.php?

Al momento non riesco a caricare ( e non capisco come si faccia , è la prima volta per me ) un node diverso dal node.tpl.php. Dove ( a cosa ) lo devo "dire" ?
Ciao
Ed

senzaesclusiva wrote:
Grazie ....:-)
Una cosa; perchè mi parli di node-contenuto.tpl.php quando ho modificato solo node.tpl.php?

Sopra hai scritto:

senzaesclusiva wrote:

in questi giorni sto personalizzando le pagine di un content-type che chiamo scheda_prodotto...

...Allora mi sono lanciato, preso dall'entusiasmo, a tentare la strada del "node-scheda_prodotto.tpl.php", ci ho
passato una giornata intera, ma non mi funziona in nessun modo.

Se ora provi a fare una copia del node.tpl.php, lo rinomini node-scheda_prodotto.tpl.php, cambi la classe del titolo ecc. vedrai che quello che prima non funzionava ora funziona.

Per altre personalizzazioni relative a node-contenuto.tpl.php (potrebbe essere node-story.tpl.php o node-page.tpl.php o qualsiasi altro contenuto) se fai una ricerca nel forum troverai diversi spunti.

$page == 0 corrisponde alle pagine che non sono nodi (per esempio, elenchi, viste, ecc.).
Se vuoi rilevare la home page, c'è la funzione drupal_is_front_page() o la variabile (bool) $is_front.

Thanks pinolo!!
Pensavo fosse possibile una categorizzazione...sorry..mi devo dimenticare del tutto
del mio passato in ambiente windows!!

Quote:
Se ora provi a fare una copia del node.tpl.php, lo rinomini node-scheda_prodotto.tpl.php, cambi la classe del titolo ecc. vedrai che quello che prima non funzionava ora funziona.

Inutile...hai sempre ragione :-)

Saluto
Ed