it-swarm-es.com

¿Cómo puedo hacer que la navegación del libro también muestre el resumen de la página secundaria?

Actualmente, el módulo Libro creará una navegación de enlaces a cada una de sus páginas secundarias. Necesito que la navegación también incluya un avance o un resumen de la página secundaria.

Esto es para Drupal 7.

3
user651

--- Potencialmente no es la mejor solución -----

No he intentado esto, pero mirando api.drupal.org creo que debería estar buscando anular template_preprocess_book_navigation las variables procesadas en este preproceso se utilizan en book-navigation.tpl.php (estás interesado en cambiar la salida de $ tree, que es una lista desordenada por defecto) Creo que puedes anular el preproceso para book_navigation y uso una devolución de llamada diferente para $variables['tree'] en lugar de book_children . Su nueva devolución de llamada se basaría en book_children, pero además cargaría un avance para esas páginas secundarias.

Yo mismo me gustaría ver una mejor solución para esto porque a veces las decisiones de diseño centrales no son lo que necesitamos y me gustaría saber si hay mejores soluciones además de anular el motor de temas y reemplazar una llamada a una función central con una personalizada (en este caso book_children) Avísame si encuentras una solución mejor o si funciona.

No hace falta decir que esto afectará la salida de todas las páginas del libro donde se use book-navigation.tpl.php.

Salud

1
Dipen

Creo que también podría hacer esto usando el módulo custom_pagers, pero no estoy 100% seguro de cómo funciona el módulo de libro en términos de navegación. Puede anular la función del tema c_p que muestra los enlaces del buscapersonas e implementar el avance dentro.

Aquí hay un ejemplo: tenga en cuenta que es bastante caro ya que incluye node_load para cada página a cada lado de la actual (página izquierda/derecha, por así decirlo):

function phptemplate_custom_pager($nav_array, $node, $pager) { if (is_numeric($nav_array['prev'])) { $prev = node_load($nav_array['prev']); } if (is_numeric($nav_array['next'])) { $next = node_load($nav_array['next']); }

$prevlink = '' . (($prev) ? l(t('â[email protected]¹ ' . $prev->title), 'node/' . $prev->nid) : ' ') . ''; $nextlink = '' . (($next) ? l(t($next->title . ' â[email protected]º'), 'node/' . $next->nid) : ' ') . ''; return '' . $prevlink . $nextlink . ''; }

¡Lo siento, el código no parece querer alinearse correctamente ...!

1
NikLP