হ্যাকিং কোর ছাড়াই ট্যাক্সোনমি_টারম_পেজ () এর আউটপুট পুনরায় লিখুন


10

ড্রুপাল In-এ, ট্যাক্সোনমি.প্যাজস.ইনকে রয়েছে taxonomy_term_page(), যা <div class="term-listing-heading">প্রায়শই টেকনোমির শিরোনাম আউটপুট দেয়।

আমি কীভাবে আমার থিমটিতে ট্যাক্সনমি_মিটার_পেজ () এর আউটপুট পুনরায় লিখতে পারি, তাই আমি হ্যাকিং কোর ছাড়াই ডিআইভি সরিয়ে ফেলতে পারি?

আমি বেশ অবাক হয়েছি যে এর জন্য কোনও tpl.php ফাইল উপলব্ধ নেই taxonomy_term_page()কারণ এটি তাদের সহজতর করে তুলবে।


এটিকে একটি পঠন দিন: বিরলপেট্রন.নোডস
ক্যাপি

উত্তর:


11

আপনি প্রিপ্রোসেস পৃষ্ঠাটির সাথে এটির মতো কিছু করতে পারেন:

function themename_preprocess_page(&$vars) {
  if  (arg(0) == 'taxonomy' && arg(1) == 'term' && is_numeric(arg(2))) {
    unset($vars['page']['content']['system_main']['term_heading']['#prefix']);
    unset($vars['page']['content']['system_main']['term_heading']['#suffix']);
  }
}

আপনার থিম এর template.php

আমার বিশ্বাস system_mainআপনার সাইটের সেটআপের উপর নির্ভর করে অন্য কিছু বলা যেতে পারে।


6

এটি মেনু কলব্যাক হিসাবে, আপনি সেই পৃষ্ঠার জন্য অনুরোধ করা মেনু কলব্যাকটি পরিবর্তন করতে একটি মডিউলে 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;
}

ধন্যবাদ! আমি গুগলটার্পের পদ্ধতিটিকে পছন্দ করি কারণ এর জন্য পৃথক মডিউল প্রয়োজন হয় না। আপনার পরামর্শটি দুর্দান্ত কারণ এটি আরও নিয়ন্ত্রণ দেয়। ধন্যবাদ!
বড়_স্মিল

যতদূর আমি স্মরণ করি, hook_menu_alter()কোনও থিমেও প্রয়োগ করা যেতে পারে; ড্রুপাল in-এ, থিমগুলি পরিবর্তিত হুক প্রয়োগ করতে পারে।
kiamlaluno

2

পূর্ববর্তী উদাহরণের মতো, এটি ক্লিনারের চেয়ে বেশি এবং ভবিষ্যতের প্রমাণ হতে পারে মূল ফাংশন হোলসিল অনুলিপি করার পরিবর্তে একটি মোড়কে ট্যাক্সোনমি_টারম_পেজ থেকে রিটার্নটি সংশোধন করতে:

function mymodule_menu_alter(&$items) {
  if (!empty($items['taxonomy/term/%taxonomy_term'])) {
    $items['taxonomy/term/%taxonomy_term']['page callback'] = '_custom_taxonomy_term_page';
  }
}

function _custom_taxonomy_term_page ( $term ) {

   $build = taxonomy_term_page( $term );

   // Make customizations then return
   unset( $build['term_heading']['#prefix'] ); 
   unset( $build['term_heading']['#suffix'] );

   return $build;
}

এটি সম্ভবত এটি করার সেরা উপায়।
হোরাটিও অলডেরান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.