D7 > tema "bartik"
ho inserito la seguente funzione nel solito template.tpl
del tema - fonte >>> http://drupal.org/node/1089656#comment-4426790:
<?php
function bartik_preprocess_page(&$vars, $hook) {
if (isset($vars['node'])) {
// If the node type is "blog" the template suggestion will be "page--blog.tpl.php".
$vars['theme_hook_suggestions'][] = 'page__'. str_replace('_', '--', $vars['node']->type);
}
}
?>
...naturalmente senza i marcatori PHP e, all'interno della cartella > templates
dove ci sono node.tpl
, page.tpl
ho inserito node--myctype.tpl
e page--node--myctype.tpl
ma il problema sta nel fatto che node--myctype.tpl
mi viene riconosciuto mentre page--node--myctype.tpl
NO!
in D6 usavo lo stesso approccio e riuscivo a temizzare i node.tpl
con i rispettivi page.tpl
aggiuntivi riferiti ad altrettanti CType creati ma con D7 non capisco cosa mi sta sfuggendo...
qualcuno mi potrebbe dare una mano???
grazie
ciao
template.tpl o .php, questo potrebbe essere il problema. I marcatori php mi sembra vadano usati, per l'apertura di sicuro per la chiusura non sono obbligatori: http://api.drupal.org/api/drupal/themes--garland--template.php/7/source
Il commento sotto al tuo dice che non va e che a lui funziona con:
Lo hai provato?
http://www.chromeos.eu
si ok, ho sbagliato a scrivere... è template.php... e la funzione che hai indicato tu l'avevo già provata... la cosa strana è che
page--node--myctype.tpl
non viene rilevato come avveniva con D6 (node--myctype.tpl SI!) e io ho la necessità di avere per ogninode--myctype.tpl
il suo relativopage--node--myctype.tpl
...non per tutti ma per alcunimi trovavo così bene con D6 usando questa funzione:
<?php
function garland_preprocess_page(&$vars) {
if ($vars['node']->type != "" && arg(2)!='edit' && arg(1) !='add') {
$vars['template_files'][] = "page-node-" . $vars['node']->type;
}
}
?>
nessuno avrebbe la soluzione??? ...che da qualche parte dovrà pur stare???
grazie
ciao
...allora, dopo un po di sbattimento in locale (D6 e D7) ho scoperto che
node--myctype.tpl
/node-myctype.tpl
viene "intercettato" in automatico da Drupal senza bisogno di inserire intemplate.php
del tema la solita funzione (D6) che riporto ancora e che pensavo (fino ad ora), andasse ad agire anche sunode-myctype.tpl
e invece, evidentemente, agisce supage-node-myctype.tpl
dando la possibilità di avere diversepage.tpl
associate ai più svariati CType - infatti, esaminando bene il codice è evidente il riferimento a page-node- ...mi era sfuggito:function nomeTEMA_preprocess_page(&$vars) {
if ($vars['node']->type != "" && arg(2)!='edit' && arg(1) !='add') {
$vars['template_files'][] = "page-node-" . $vars['node']->type;
}
}
ora, dopo diverse ricerche senza nessun risultato, la mia domanda agli esperti è la seguente:
in D7 qual è la funzione da aggiungere in
template.php
per far "vedere" al sistema le miepage--node--my_ctype_01.tpl
personalizzate???grazie
ciao!
Hoh ho tempo di provare, ma fai un tentativo con:
ed eventualmente prova a debuggare cosa hai in $variables dopo aver fatto il preprocess della page.
Ciao
Marco
--
My blog
Working at @agavee
ok mavimo, funziona ma c'è un problema nel senso che in home page (solo in home...) esce un warning!!!
Notice: Undefined index: node in bartik_preprocess_page() (linea 155 di /home/miosito/miosito.com/d7/themes/bartik/template.php).
Notice: Trying to get property of non-object in bartik_preprocess_page() (linea 155 di /home/miosito/miosito.com/d7/themes/bartik/template.php).
ciao!
Sui server di produzione si dovrebbe settare l'error_reporting di PHP per vedere solo i fatal error. Comunque quell'errore ti dice che alla riga 155 del file template.php stai cercando di utilizzare l'elemento "node" di un array associativo, elemento che pero' non esiste nell'array. Se la riga 155 è un if aggiungi "isset($vars['node']) && ' (dove $vars è il nome della funzione passata come parametro di bartik_preprocess_page. Se non è un if, aggiungilo "if (isset($vars['node'])) "
M.
--
Michel 'ZioBudda' Morelli -- [email protected]
Sviluppo applicazioni CMS DRUPAL e web dinamiche -- Corsi Drupal -- Amministrazione Drupal -- Hosting Drupal
ok ziobudda, grazie anche a te per l'intervento... si, la riga 155 è un
if
ed è quella sottofunction
...quindi il codice dovrebbe diventare da così:<?php
function NOMETEMA_preprocess_page(&$variables) {
if ($variables['node']->type != '' && arg(2) != 'edit' && arg(1) != 'add') {
$variables['theme_hook_suggestions'][] = 'page__node__' . $variables['node']->type;
}
}
?>
a...???
...
abbi pazienza ma non so dove inserire
"isset($vars['node']) &&
grazie
ciao
provo a indovinare :
Scusate, pensavo di aver scritto in modo comprensibile, ma penso di essere stato un po' ostico, quindi:
if (isset($variables['node']) && arg(2) != 'edit' && arg(1) != 'add')
Questo controllo invece è senza senso perché non puo' esistere un nodo senza tipo:
$variables['node']->type != ''
M.
--
Michel 'ZioBudda' Morelli -- [email protected]
Sviluppo applicazioni CMS DRUPAL e web dinamiche -- Corsi Drupal -- Amministrazione Drupal -- Hosting Drupal
ok, perfetto!
la funzione in tutto il suo splendore:
<?php
function NOMETEMA_preprocess_page(&$variables) {
if (isset($variables['node']) && arg(2) != 'edit' && arg(1) != 'add') {
$variables['theme_hook_suggestions'][] = 'page__node__' . $variables['node']->type;
}
}
?>
grazie a tutti per gli interventi!
ciao