質問: コアをハッキングせずに分類用語のpage()の出力を書き換えます drupal 7の場合、taxonomy.pages.incにはtaxonomy_term_page()が含まれ、これにより、分類見出しの出力の周りに_<div class="term-listing-heading">_が配置されます。テーマで taxonomy_term_page() の出力を書き換えて、コアをハッキングせずにdivを削除するにはどうすればよいですか?taxonomy_term_page()で使用できるtpl.phpファイルがないことで、テーマ設定がはるかに簡単になるので、私はかなり驚いています。
回答: これはメニューコールバックなので、モジュールに hook_menu_alter() を実装して、そのページに対して呼び出されるメニューコールバックを変更できます。function mymodule_menu_alter(&$items) { if (!empty($items['taxonomy/term/%taxonomy_term'])) { $items['taxonomy/term/%taxonomy_term']['page callback'] = 'mymodule_term_page'; } } function mymodule_term_page($term) { // build breadcrumb based on the hierarchy of the term. $current = (object) array( 'tid' => $term->tid, ); $breadcrumb = array(); while ($parents = taxonomy_get_parents($current->tid)) { $current = array_shift($parents); $breadcrumb[] = l($current->name, 'taxonomy/term/' . $current->tid); } $breadcrumb[] = l(t('home'), null); $breadcrumb = array_reverse($breadcrumb); drupal_set_breadcrumb($breadcrumb); drupal_add_feed('taxonomy/term/' . $term->tid . '/feed', 'rss - ' . $term->name); $build = array(); $build['term_heading'] = array( 'term' => taxonomy_term_view($term, 'full'), ); if ($nids = taxonomy_select_nodes($term->tid, true, variable_get('default_nodes_main', 10))) { $nodes = node_load_multiple($nids); $build += node_view_multiple($nodes); $build['pager'] = array( '#theme' => 'pager', '#weight' => 5, ); } else { $build['no_content'] = array( '#prefix' => '<p>', '#markup' => t('there is currently no content classified with this term.'), '#suffix' => '</p>', ); } return $build; }