¿Modificar el tema por default de un tipo de contenido en drupal 7?

Events happening in the community are now at Drupal community events on www.drupal.org.
frezeer's picture

Hola a todos, tengo un problema resulta que me estoy iniciando con drupal 7 y he creado un modulo llamado noticias de momento bien, ya cree el formulario añadi los campos con el field o cck del core, pero necesito modificar el tema de los nodos creado a mi gusto es decir:

Lo que en drupal 6 se hacia en el hook view asi:

function noticias_view(&$node, $teaser = FALSE, $page = FALSE) {
$rr = split("/",$_GET['q']);
if($rr[0]=="print"){
if (!$teaser) {
$node = node_prepare($node, $teaser);
}
}else{
if (!$teaser) {
$node->content['noticias'] = array(
'#value' => theme('noticias_nivel3', $node),
);
}else{
$node->content['noticias'] = array(
'#value' => theme('html_teaser_node', $node),
);
}
}

return $node;
}

no se como hacerlo para drupal 7, de momento lo hago asi:

function noticias_node_view($node, $view_mode) {
if ($view_mode == 'full' && node_is_page($node)) {
$breadcrumb = array();
$breadcrumb[] = l(t('Home'), NULL);
$breadcrumb[] = l(t('Example'), 'example');
//$breadcrumb[] = l($node->field1, 'example/' . $node->field1);
drupal_set_breadcrumb($breadcrumb);

$node->content = array(
    '#theme' => 'noticias_nivel3',
    '#attributes' => array('node' => $node),
  );

}

return $node;
}

el problema que tengo es que al darle el theme al $node->content no me aparece la opción de comentarios como si sucede normalmente sin cargar mi theme, alguna idea o ayuda para este problema?

¡Gracias Dios los Bendiga!

Comments

changos

jackbravo's picture

Me cae no entendí bien tu duda =P.

A que te refieres con que no te aparece la opción de comentarios?

Fuera de eso, veo que cuando modificas $node->content estas asignandole un arreglo nuevo por completo, creo que ahí es donde se están quitando muchas opciones del nodo.

En teoría en hook_node_view sólo debes AGREGAR nuevos elementos al arreglo content.

Y más o menos qué es lo que quieres modificar del tema del nodo? A lo mejor te conviene más usar un node--noticia.tpl.php, o nada más CSS...

Hola y gracias por responder

frezeer's picture

Mira el problema es que yo quiero tener un tema distinto para el tipo de noticias, o por ejemplo poder agregar mas elementos del nodo pero custom, mi duda es si ¿se puede crear un tema diferente para este tipo de contenido que yo defina en el hook_theme como lo hacia antes en drupal 6 y lo utilize en el hook view del tipo de contenido?

$node->content = array(
'#theme' => 'noticias_nivel3',
'#attributes' => array('node' => $node),
);

cuando cargo el theme como lo hice arriba se me pierden los comentarios, pero puedo modificar y ubicar los datos a mi antojo en un html que yo quiera pero los comentarios se me borran.

al parecer eso debo hacerlo en el hook_view y no en el hook_node_view eso al menos es lo que te entendi, gracias por tu ayuda q Dios te bediga.

creo que puedes seguir usando

jackbravo's picture

creo que puedes seguir usando el hook_view como antes. Pero para eso del theming creo que lo mejor es usar un template en tu tema así como te puse. Si tu nodo es de tipo noticia poner en tu tema un archivo node--noticia.tpl.php y modificarlo desde ahí. Creo que es el mejor lugar para hacerlo, porque queda en la capa de theming en lugar de en un módulo. En realidad ya es cuestión de gustos.

Gracias jackbravo

frezeer's picture

voy a probar lo que me dices haber como me va y si conoces a alguien que nos ayude a averiguar si es la mejor manera te lo agradeceria mucho ya que la idea es hacerlo lo mejor posible.

De hecho esta es la manera correcta de hacerlo

eliasdelatorre's picture

Hola Freezer.

De hecho lo que propone Jackbravo es la manera ideal de hacerlo, implica trabajo, pero es lo mejor. Una vez me tocó dar soporte a un sitio que no había iniciado yo y todo el theming lo hacían por medio de un módulo. Era un infierno el cambiar los campos, era prácticamente imposible de editar.

Pero en los sitios que hago yo que requieren un tratamiento especial, por ejemplo aquellos que usan jQuery para mostrar pestañas de navegación, o efectos avanzados, o simplemente un acomodo que nada tenga que ver con el diseño general del sitio, siempre modifico el template de mi content type específico, esto te dá muchísimo control sobre el theme y permite manipularlo sin que haya problemas, además tienes la ventaja de poder usar control de versiones y tu propio editor de texto.

Creo que esta es la mejor manera de hacerlo.

Saludos y suerte!

Gracias eliasdelatorre

frezeer's picture

Muchas gracias por aclararme esta duda, de ahora en adelante lo haré así, Dios les bendiga por su tiempo y repito muchas gracias.

¿Alguna otra idea?

frezeer's picture

¿Alguna otra idea?

por que no utilizar algunos

jmolivas's picture

por que no utilizar algunos modulos, por ejemplo

Si lo que requieres es ocultar/mostrar atrobutos en la vista de un tipo de nodo/contenido en particular podrias utilizar
http://drupal.org/project/ds

Pero si lo que requieres es mostrar/ocultar algunas regiones o bloques podrias resolverlo con
http://drupal.org/project/context

Gracias jmolivas

frezeer's picture

Muy util tú información, voy a probarla tambien haber como me va, muy amable por responder Dios te Bendiga.

No me dejan utilizar modulos

magg1890's picture

Hola, mirad tengo el siguiente problema:

Tengo una noticia en la página principal y quiero que cuando se abra, me lo muestre en otro página con otra región.

Como lo puedo hacer??

Colombia

Group organizers

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds:

Hot content this week