php - editar - mostrar categorias wordpress
¿Cómo puedo tema la plantilla para editar o agregar un nodo para un tipo de contenido específico? (6)
Esto es lo que creo que es la forma "correcta" de hacerlo.
Desde el módulo de nodo:
$form[''#theme''] = array($node->type .''_node_form'', ''node_form'');
Entonces Drupal intentará con el tema ''product_node_form''
para que pueda crear un módulo que implemente esto.
Tendrá que implementar [hook_theme] [1] y proporcionar una función o plantilla.
Puede encontrar que es más fácil usar [hook_form_alter] [2] para agregar algunas clases y CSS normal para cambiar la apariencia.
Quiero tema la plantilla para editar o agregar un nodo para un tipo de contenido específico.
Por ejemplo, para el tema de todos los formularios de tipo de contenido utilizo el archivo page-node-{add|edit}.tpl.php
(dependiendo de lo que necesite hacer agregar o editar).
Pero no encontré el nombre de la plantilla para un tipo de nodo personalizado, por ejemplo, Productos.
Necesito el tema solo para Productos, pero no para los otros tipos de contenido.
Lo he intentado con page-node-edit-product.tpl.php
y page-node-product-edit.tpl.php
pero no page-node-product-edit.tpl.php
suerte.
Hmm. Puede haber una manera mejor, pero ¿qué pasa con una función de preproceso?
Todavía soy muy nuevo en Drupal, así que tal vez intente algo como esto [el código puede no funcionar]:
<?php
function themeName_preprocess_page(&$vars, $hook) {
if ((arg(0) == ''node'') && (arg(1) == ''add'' && arg(2) == ''product'')) {
$vars[''template_files''][] = ''page-node-add-product'';
}
}
?>
Asegúrese de borrar la caché y el registro de temas después de realizar nuevas funciones de preproceso.
Para mí el mismo problema. Preguntar dónde insertar un código:
<?php
function themeName_preprocess_page(&$vars, $hook) {
if ((arg(0) == ''node'') && (arg(1) == ''add'' || arg(2) == ''product'')) {
$vars[''template_files''][] = ''page-node-add-product'';
}
}
?>
Se ingresa en template.php o en page-node - {add | edit} -example.tpl.php?
Puse esto en mi archivo template.php en el directorio de mi tema:
function MYTHEMENAME_theme($existing, $type, $theme, $path) {
return array(
// tell Drupal what template to use for the edit form
family_individual_node_form'' => array(
''arguments'' => array(''form'' => NULL),
''template'' => ''node-family_individual-edit''
)
);
Soy novato de drupal, pero ¿algo (podría necesitar un poco más) como este?
function phptemplate_node_form($form)
{
switch ($form[''#node'']->type) {
case ''product'':
return theme_render_template(path_to_theme().''/node-edit-product.tpl.php'', array(''form'' => $form));
default:
return theme_node_form($form);
}
}
function themename_preprocess_page(&$vars) {
// Add per content type pages
if (isset($vars[''node''])) {
// Add template naming suggestion. It should alway use hyphens.
// If node type is "custom_news", it will pickup "page-custom-news.tpl.php".
$vars[''template_files''][] = ''page-''. str_replace(''_'', ''-'', $vars[''node'']->type);
}
}
Agregue el código anterior en template.php
Luego crea un par de archivos tpl
1) page-contenttype.tpl.php
utilizado al mostrar y editar el contenido
2) page-node-add-contenttype.tpl.php
utilizado al agregar ese tipo de contenido.
Funciona con drupal 6.