Para configurar el breadcrumb y que siga exáctamente la ruta que se encuentra en el path lo podemos hacer con el siguiente código:
<?php
/**
* url breadcrumbs
* several functions
* http://drupal.org/node/93500
*/
function url_breadcrumb($breadcrumb) {
$url = path_alias_array();
// On admin pages, use the default breadcrumb. But I prefer having the
// title of the current page display as well. So I remove the ''
// tag from the original breadcrumb with substr() and add in the title with
// drupal_get_title().
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
/**
Cuando hablamos de local task estamos hablando de los enlaces que se colocan debajo de un nodo por ejemplo y nos indican cierta acción, lo más comun es que tengamos 'View' y 'Edit' si tenemos permisos.
Si queremos agregar un 'id' para que con CSS podamos agregar algún ícono a cada uno de manera independiente lo podremos hacer de esta manera:
function phptemplate_menu_local_task($link, $active = FALSE) {
$output = '';
$getcsslink = check_plain($link);
if(strpos($getcsslink, 'View')) {
$submitcase = 'View';
}
if(strpos($getcsslink, 'Edit')) {
Para ocultar los "tips" y el input format que aparece debajo de cada nodo cuando lo estamos creando o editando, lo podemos hacer de distintas maneras, una de ellas es simplemente usar css y poner "display: none;" sin embargo puede que no sea la más apropiada.
La mejor solución a este problema sin duda es la siguiente:
<?php
/*
* Override filter.module's theme_filter_tips() function to disable tips display.
*/
function phptemplate_filter_tips($tips, $long = FALSE, $extra = '') {
return '';
}
function phptemplate_filter_tips_more_info () {
return '';
}
?>Para modificar el nombre de un botoń en views cuando usamos exposed filters lo podemos hacer con preprocess para que el cambio se haga antes de que la forma se construya, este es el código:
function MYTHEME_preprocess_views_exposed_form(&$vars, $hook) {
// only alter the jobs search exposed filter form
if ($vars['form']['#id'] == 'views-exposed-form-jobs-search-page-1') {
// Change the text on the submit button
$vars['form']['submit']['#value'] = t('Search');
// Rebuild the rendered version (submit button, rest remains unchanged)
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;
}
Para mostrar la información que se guarda en $submitted lo podemos hacer de esta manera:
<?php
return t('Submitted by !username on @datetime',
array(
'!username' => theme('username', $node),
'@datetime' => format_date($node->created),
)
);
?>En un artículo anterior vimos como separar las categorías para Drupal 5.x, este ya no funciona para Drupal 6.x, pero hay otra manera de hacerlo, incluso más personalizable.
En este caso tenemos 4 categorías:
Y utilizamos en template.php
<?php
function phptemplate_preprocess_node(&$variables) {
$node = $variables['node'];
// Display the current node's free-tags (but not other vocabs/terms)
$freetags = array();
foreach ($node->taxonomy as $term) {
Si necesitamos obtener el Role del usuario logueado y después hacer algo con esa información podemos utilizar el siguiente código:
<?php
global $user;
if ($user->roles[4]) {
echo "I'll do something";
}
?>De: http://drupal.org/node/296621
En este ejemplo se utiliza un redirect en caso de que el usuario no pertenezca a cierto rol.
<?php
global $user;
if ($user->roles[16]) {
echo "Puedes acceder a esta página sin problemas";
}
else {
header("location: [urlhere]");
}
?>En el autor del nodo siempre usamos el 'username' o nombre de usuario. Si utilizamos el módulo Bio puede ser más mostrar el nombre completo, compuesto de uno o varios campos, en el siguiente caso se utilizan dos campos para crear el nombre. Esto va en node.tpl.php o en comment.tpl.php
<?php
// Load the bio node for the user that is the author of the comment
$bio_node = node_load(array('type' => 'bio', 'uid' => $comment->uid));
$biosubmittedname = $bio_node->field_nombre[0]['value'] .' '. $bio_node->field_ape_paterno[0]['value'];
?>