[Risolto] D7 - Temizzare 'node--my_ctype.tpl' e relativo 'page--node--my_ctype.tpl'

11 contenuti / 0 new
Ultimo contenuto
[Risolto] D7 - Temizzare 'node--my_ctype.tpl' e relativo 'page--node--my_ctype.tpl'

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:

<?php
function themeName_preprocess(&$vars, $hook) {
  if (isset(
$vars['node']) && $hook=="page") {
 
// 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);
  }
}
?>

Lo hai provato?

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 ogni node--myctype.tpl il suo relativo page--node--myctype.tpl ...non per tutti ma per alcuni

mi 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 in template.php del tema la solita funzione (D6) che riporto ancora e che pensavo (fino ad ora), andasse ad agire anche su node-myctype.tpl e invece, evidentemente, agisce su page-node-myctype.tpl dando la possibilità di avere diverse page.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 mie page--node--my_ctype_01.tpl personalizzate???

grazie

ciao!

Hoh ho tempo di provare, ma fai un tentativo con:

<?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;
  }
}
?>

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 sotto function ...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 :

Quote:
<?php
function NOMETEMA_preprocess_page(&$variables) {
if (isset(
$vars['node']->type != '' && arg(2) != 'edit' && arg(1) != 'add') {
$variables['theme_hook_suggestions'][] = 'page__node__' . $variables['node']->type;
}
}
?>

Lavatrice ad ultrasuoni
Sito http://www.ultrasuoni.net > Client service and contacts: [email protected]

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