Pregunta

He estado tratando de tener mi módulo de Drupal 6 personalizar las páginas de taxonomía plazo en que deben mostrarse dan ciertas condiciones. Esto es fácil de lograr a través de temas, pero no parece ser una forma sencilla de lograr esto a través de un módulo.

Después de una buena dosis de ensayo, error y buscar en Google, se me ha ocurrido con la siguiente forma de lograr esto:

Parece que funciona bien, y siente hacky mucho menos que las soluciones alternativas que encontré en línea. Sin embargo, estoy preocupado por el hecho de que no vi este ejemplo en cualquier lugar de las muchas páginas del foro de Drupal - me hace pensar que tal vez algo muy mal con esta solución que no he visto todavía

Puede cualquier SO'er ver los problemas con esta solución, o (mejor) sugerir un método que podría basarse en ganchos temáticos existentes de Drupal?

function foo_menu() {
    // other menu callbacks ... 
    $items['taxonomy/term/%'] = array( 
        'title' => 'Taxonomy term',
        // override taxonomy_term_page
        'page callback' => 'foo_term_page',
        'page arguments' => array(2),
        'access arguments' => array('access content'),
        'type' => MENU_CALLBACK,
    );
    // other menu callbacks
}

function foo_term_page($str_tids = '', $depth = 0, $op = 'page') {
    if ($my_conditions_are_true) {
        // foo_theme_that_page is a copy-paste of taxonomy_term_page
        // that includes the customizations I want
        return foo_theme_that_page($str_tids,$depth,$op);
    } else { //Conditions aren't met. Display term normally
        module_load_include('inc', 'taxonomy', 'taxonomy.pages');
        return taxonomy_term_page($str_tids,$depth,$op);
    }
}
¿Fue útil?

Solución

¿Y si uso hook_menu_alter() en lugar de hook_menu()? De esa manera usted puede cambiar el elemento de menú que crea la taxonomía de una manera clara, sin tener que preocuparse de pesos módulo y el elemento que se añade al final.

De lo contrario, eso es lo que yo haría algo así en un contexto módulo.

Otros consejos

Tener un vistazo a content.module o views.module para ver cómo se implementa allí, si los tiene instalado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top