कैसे प्रोग्राम को लिंक चर के लिंक जोड़ने के लिए


8

मैं Drupal 6 का उपयोग कर रहा हूं और $linksप्रोग्राम को अन्य लिंक शामिल करने के लिए चर को संशोधित करना चाहूंगा । मैंने इसका लाभ उठाने के लिए Google पर उच्च और निम्न खोज की है। किसी को पता है कि यह कैसे करना है?

जवाबों:


22

द्रुपाल ६

Drupal 6 में, आप हुक का उपयोग नहीं कर सकते हैं या थीम के अंदर हुक को बदल नहीं सकते हैं, इसलिए आपको लिंक को संशोधित करने के लिए एक कस्टम मॉड्यूल बनाने की आवश्यकता होगी । एक बार हो जाने के बाद, आप hook_link()(यदि आप एक नया लिंक बना रहे हैं) या hook_link_alter()(यदि आप किसी मौजूदा लिंक को संशोधित करना चाहते हैं ) लागू करना चाहते हैं।

एक नई कड़ी जोड़ना:

example_link($type, $object, $teaser = FALSE) {
  $links = array();
  // Add a custom link to nodes
  if ($type == 'node') {
    $links['example_mylink'] = array(
      'title' => t('Test link'),
      'href' => 'foo',
      'attributes' => array(
        'title' => 'Test link',
      ),
    );
  }
  return $links;
}

मौजूदा लिंक को संशोधित करना:

example_link_alter(&$links, $node, $comment = NULL) {
  // Remove the read more link
  unset($links['node']['node_read_more']);

  // Change the title of the read more link
  $links['node']['node_read_more']['title'] = t('More information');

  // Move read more link to first slot
  $link_read_more = $links['node']['node_read_more'];
  unset($links['node']['node_read_more']);
  $links = $links['node'];
  $links['node'] = array(
    'node_read_more' => $link_read_more,
  ) + $links;

  // Move link to the last slot
  $link_read_more = $links['node']['node_read_more'];
  unset($links['node']['node_read_more']);
  $links['node']['node_read_more'] = $link_read_more;
}

द्रुपाल al

Drupal 7 में, यह थोड़ा अधिक सीधा है, क्योंकि विषय परिवर्तन हुक को लागू कर सकते हैं। आप जिस हूक को देख रहे हैं, वह है hook_node_view_alter():

function example_node_view_alter(&$build) {
  // Remove the read more link
  unset($build['links']['node']['#links']['node-readmore']);

  // Add your own custom link
  $build['links']['node']['#links']['example-mylink'] = array(
    'title' => t('Test link'), 
    'href' => 'foo', 
    'html' => TRUE, 
    'attributes' => array(
      'title' => 'Test link',
    ),
  );

  // Move read more link to first slot
  $link_read_more = $build['links']['node']['#links']['node_read_more'];
  unset($build['links']['node']['#links']['node_read_more']);
  $links = $build['links']['node']['#links'];
  $build['links']['node']['#links'] = array(
    'node_read_more' => $link_read_more,
  ) + $links;

  // Move link to the last slot
  $link_read_more = $build['links']['node']['#links']['node_read_more'];
  unset($build['links']['node']['#links']['node_read_more']);
  $build['links']['node']['#links']['node_read_more'] = $link_read_more;
}

आप इसे सीधे अपनी template.phpफ़ाइल में रख सकते हैं ।


धन्यवाद, यह वही है जो मैं देख रहा था! आपने मुझे Drupal 6. के लिए template.php फ़ाइल का उपयोग करके एक दिलचस्प काम करने से बचा लिया। क्या यह समाधान विचारों द्वारा उत्पन्न सामग्री के साथ काम करेगा?
user5013

@ user5013 यदि आप एक दृश्य में पूर्ण नोड या टीज़र प्रदर्शन के बारे में सोच रहे हैं, तो इसे बॉक्स से बाहर काम करना चाहिए। यदि आप किसी दृश्य में लिंक जोड़ना चाहते हैं, तो आप वह भी कर सकते हैं: 'href'आप जो चाहें, उसका मूल्य बदल दें ।

नहीं, मैं इस बारे में सोच रहा था कि क्या यह समाधान एक दृश्य में फ़ील्ड प्रदर्शन के साथ काम करेगा।
user5013

@ user5013 आह, तो उस स्थिति में, नहीं: लिंक केवल तभी जोड़े जाते हैं जब नोड पूरी तरह से निर्मित होता है। आमतौर पर लिंक बार में दिखाई देने वाले कई लिंक व्यू में अलग-अलग फील्ड के रूप में उपलब्ध होते हैं, हालांकि।

1
@MotoTribe लिंक उसी क्रम में प्रदान किए जाते हैं जो वे सरणी में दिखाई देते हैं, इसलिए यह क्रम बदलने के लिए बस सीधे सरणी हेरफेर है। जोड़े गए उदाहरण।

1

आप यह मानते हुए लिंक कि node.tpl.php पर प्रदान करने के बारे में बात कर रहे हैं, आप को लागू करने की आवश्यकता होगी hook_link में उदाहरण देखने के लिए node_link । और अगर आप ड्रूपल हुक के लिए नए हैं, तो यह एक कस्टम मॉड्यूल में होने की जरूरत है, तो हम कहते हैं कि आपके कस्टम मॉड्यूल का नाम "फू" है आपको एक फ़ंक्शन लिखने की आवश्यकता होगी, जिसे foo_linkहुक_लिंक के समान तर्क होना चाहिए।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.