Para agregar el efecto se puede hacer de dos maneras.
Con jQuery
Esta es muy sencilla, solo hay que agregar un archivo llamado 'script.js' en nuestro theme y poner dentro:
// Wrap span tags around the anchor text in the primary menu.
$(document).ready(function(){
$("#primary li a")
.wrapInner("<span>" + "</span>");
});Utilizando theme_links
La manera correcta de hacer esto es utilizando lo que se llama un override de una función. Para esto vamos a poner en template.php lo siguiente:
<?php
/**
Este pequeño módulo lo que hace es convertir, para el puro caso de taxonomías, una lista de selección de términos múltiples en la que usamos Control para seleccionar opciones, en una lista de checkboxes o radios, lo cual es mas conveniente y más sencillo para el usuario.
El artículo original incluye la posiblidad de hacer esto para Drupal 5.x, sin embargo en este caso solo vamos a analizar el caso para Drupal 6.x. El artículo original es: http://drupal.org/node/84286
Para hacer esto tenemos que crear un módulo llamado alterform, mismo que se incluye al final como attachment.
Para ocultar un Tab en particular (menu_local_task) en una página determinada lo podemos hacer de varias maneras, para Drupal 6.x lo podemos hacer con un preprocess de la siguiente manera.
<?php
function phptemplate_preprocess(&$variables, $hook) {
if (arg(0) == 'node' && is_numeric(arg(1))) {
$node = node_load(arg(1));
if ($hook == 'page') {
if ($node->type == 'community') {
theme_removetab('View', $variables);
}
if ($node->type != 'community') {
theme_removetab('Home', $variables);
}
}
}
return $variables;
}
Override theme function para no mostrar los fieldsets en Views Filter Block
<?php
function theme_views_filterblock($form) {
//check output mode, fieldset or plain list
if(variable_get('views_filterblock_style', 'plain') == 'fieldset'){
return theme_views_filterblock_fieldsets($form);
}
$view = $form['view']['#value'];
//drupal_set_message(''.print_r($view,TRUE).'');
// make the 'q' come first
$output = drupal_render($form['q']);
foreach ($form as $field => $value) {
Esto nos sirve para cargar el nodo y después cargar ciertas variables relativas al nodo:
<?php
if (arg(0) == 'node' && is_numeric(arg(1))) {
$node = node_load(arg(1));
// do something
}
?>Si queremos poner una imagen al lado de un link en el menú de primary links, tenemos que reemplazar:
<?php
print theme('links', $primary_links, array('class' => 'links primary-links'))
?>en page.tpl.php con:
<?php
foreach( $primary_links as $key => $item){
$primary_links[$key]['title'] = '<span>'.$item['title'].'</span>';
$primary_links[$key]['html'] = true;
}
print theme('links', $primary_links, array('class' => 'links primary-links'))
?>Para resaltar información en una vista de acuerdo a cierta información usamos en template.php esto:
<?php
function theme_views_view_table_cases_all($view, $nodes, $type) {
$fields = _views_get_fields();
foreach ($nodes as $node) {
$row = array();
foreach ($view->field as $field) {
if ($fields[$field['id']]['visible'] !== FALSE) {
$cell['data'] = views_theme_field('views_handle_field', $field['queryname'], $fields, $field, $node, $view);
if($node->casetracker_case_case_status_id == "8")
{
Esto nos sirve para crear gráficas Gantt asociadas a un nodo de eventos, dentro de organic groups.
Fuente: http://drupal.org/node/226598
Este código, al crear una vista y editar la forma en que se ve, nos sirve para mostrar una lista con espacios entre sus elementos, y no como lista, por lo que quitamos el 'item-list', básicamente se puede editar para mostrar lo que queramos. Esto va en el código de template.php que se genera cuando se está personalizando una vista con el Theme Wizard.
Hay que reemplazar:
return theme('item_list', $items);con:
return implode(" ",$items);Para excluir el nodo que se esta viendo de una lista de nodos del mismo tipo de contenido o de la misma categoría, usamos como argumento Node: NID y agregamos el siguiente código:
<?php
if ( ($type=='block') && is_numeric(arg(1)) ){
$args[0] = arg(1);
}
return $args;
?>