मैं मेनू में हैश लिंक कैसे जोड़ूं?


21

क्या ड्रुपल मेनू के तहत मेनू में एक हैशेड लिंक जोड़ने का एक तरीका है जो केवल एक मेनू आइटम बनाता है जो पेज पर एक एंकर या आईडी से नीचे कूदता है?


यदि आप शुरुआत में Absolute url का उपयोग करते हैं तो यह काम करेगा। जैसे yourdomain.com/somepath#someother
hzak

जवाबों:


15

दुर्भाग्य से जहां तक ​​मुझे जानकारी है, Drupal इस बॉक्स से बाहर नहीं कर सकता। हालांकि, आप एक नया मेनू आइटम बनाने के लिए विशेष मेनू आइटम मॉड्यूल का उपयोग कर सकते हैं , और पथ सेटिंग्स में "नॉलिंक" रख सकते हैं।


दुर्भाग्य से संस्करण 6 के लिए यह मॉड्यूल और 7 के लिए कोई भी नहीं है, लेकिन इसे संशोधित किया जा सकता है। फिर भी धन्यवाद ।
मुहम्मद सलामा

1
बल्कि l('linktext', '', array('fragment' => ' ', 'external' => TRUE));@ सेबेस्टियन की प्रतिक्रिया के अनुसार उपयोग करें ।
डंकनमो

"विशेष मेनू आइटम" एक कहते हैं <span title="" class="nolink">...</span>। समस्या कुछ और नहीं बल्कि CSS की कमी है। बस ul.menu a{}CSS को कॉपी करें और उनके लिए पेस्ट करें ul.menu li span.nolink{}। यह मेरे लिए ठीक काम कर रहा है। लेकिन इसके द्वारा सक्षम ड्रॉप-डाउन एरो को निष्क्रिय कर दिया li.expanded। :(
मयिनुल इस्लाम

इतनी देर पोस्ट करने के लिए क्षमा करें, लेकिन मैं सिर्फ इस धागे के पार चला गया। सीएसएस को बदलने के बजाय, आप एक हैश के साथ एंकर टैग में नोलिंक को लपेटने के लिए थोड़ा जेएस का उपयोग कर सकते हैं। JQuery के साथ, यह होगाjQuery("span.nolink").wrap("<a href='#'></a>");
Goldentoa11

15

प्रलेखन के लिए एक टिप्पणीl() में बताई गई बातों का पालन करें ।

नामित एंकर (उदाहरण के लिए "# nameanchor") का लिंक बनाने के लिए, आपको एक छोटे से काम का उपयोग करने की आवश्यकता होगी।

l('linktext', '', array('fragment' => 'namedanchor', 'external' => TRUE));

एक हैश-केवल लिंक ("#") बनाने के लिए, आपको इसे अनुकूलित करना होगा:

l('linktext', '', array('fragment' => ' ', 'external' => TRUE));

(ध्यान दें कि टुकड़े में एक स्थान होता है।)

 

Drupal 7 में, "HTML" को सेट करें TRUE, फिर हैश वर्ण को जोड़ें।


13

http://drupal.org/node/123103#comment-4955236

नोड / 16 # gohere

ऑटो यूआरएल इसे बदलने के लिए की तरह होगा

के बारे में-हमें # gohere


1
आप जिस पृष्ठ पर हैं, उसके बारे में क्या है? उदाहरण के लिए, नेविगेशन के लिए स्किप टू नेविगेशन लिंक प्राप्त करने की कोशिश करना, चाहे आप किस पृष्ठ पर हों @शनबस
कीन ६५६

2
सबसे अच्छा तरीका यह करने के लिए, कोई मॉड्यूल या प्लगइन की जरूरत है!
एंड्रियास डौटिस

यहां तक ​​कि साथ काम भी करता है <front>#gohere। अच्छा! :)
हुलिये

6

मॉड्यूल शून्य मेनू का उपयोग करने का प्रयास करें :

शून्य मेनू आपको Drupal 7 मेनू सिस्टम में उपयोग के लिए विशेष मानों को टैग में कॉन्फ़िगर करने की अनुमति देता है। आप अपनी इच्छानुसार किसी भी मूल्य के साथ 10 अलग-अलग शून्य टैग को अनुकूलित कर सकते हैं और उन्हें ड्रुपल मेनू सिस्टम के अंदर स्वतंत्र रूप से उपयोग कर सकते हैं।
...
एक अतिरिक्त बोनस के रूप में, और इस मॉड्यूल की कार्यक्षमता के कारण, आप वास्तविक एंकरों को मेनू आइटम के रूप में उपयोग करने में सक्षम हैं जो प्लेसहोल्डर्स की तुलना में कोई अन्य उद्देश्य नहीं रखते हैं। यह एक शून्य टैग के साथ पूरा किया गया है जो जावास्क्रिप्ट पर सेट है: शून्य (0); या यहां तक ​​कि एक साधारण हैश टैग #। इसके लिए special_menu_items पर इस मॉड्यूल का उपयोग करने का लाभ यह है कि आपके मेनू में special_menu_items द्वारा उपयोग किए गए अतिरिक्त अवधि टैग के लिए किसी भी अतिरिक्त स्टाइल की आवश्यकता नहीं होगी, और W3C मान्य होगा क्योंकि प्रत्येक एंकर के पास एक href विशेषता होनी चाहिए।

यह एक बहुत अच्छा समाधान है!


2

बस उसी समस्या का सामना करना पड़ा। मुझे हैश-लिंक के साथ मेनू-आइटम को प्रोग्रामेटिक रूप से जोड़ने की आवश्यकता थी। मेरा कोड:

// the URL with hash in it is in the form  'normal_part_of_url'#'hash_part_of_url'
$item = array( 
  'link_path' => %normal_part_of_url%,
  'link_title' => %your_link_title%,
  'menu_name' => %menu_where_to_add_links%,
  'options' => array('fragment'=>%hash_part_of_url%)
);
menu_link_save($item);

1

बस मेरे लिए यह करने के externalलिए सेटिंग TRUE। Druapl 7.32 में परीक्षण किया गया।

l('Some Name', '#', array('external' => TRUE));


0

Drupals का उपयोग अनुवाद कार्य भी करता है।

/**
 * Implements hook_menu().
 *
 * Defines a valid link to use when creating menu items.
 */
function greenacorn_menu() {
  $items['<main-content>'] = array(
    'page callback' => 'drupal_not_found',
    'access callback' => TRUE,
    'type' => MENU_CALLBACK,
  );

  return $items;
}

/**
 * Implements hook_menu_link_alter().
 *
 * Flags the link to be altered at runtime.
 *
 * Note: Changes here would be saved back to the database.
 */
function greenacorn_menu_link_alter(&$item, $menu) {
  if ($item['link_path'] == '<main-content>') {
    $item['options']['alter'] = TRUE;
  }
}

/**
 * Implements hook_translated_menu_link_alter().
 *
 * Refactors the link to go to the fragment #main-content.
 */
function greenacorn_translated_menu_link_alter(&$item, $map) {
  if ($item['link_path'] == '<main-content>') {
    $item['href'] = '';
    $item['localized_options']['fragment'] = 'main-content';
  }
}

0
function test_menu() {
  $items = array();
  $items['sample'] = array(
   'title' => t('Sample page'),
   'type' => MENU_NORMAL_ITEM,
    'menu_name' => 'main-menu',
    'page callback' => 'samplepage',
    'access callback' => TRUE,
    'options' => array('fragment' => 'sampleHash'),
  );
  return $items;
}

आप उपरोक्त कोड का उपयोग करके मेनू में हैश लिंक जोड़ सकते हैं।


0
/**
 * Implements hook_module_implements_alter().
 */
function MODULE_module_implements_alter(&$implementations, $hook) {
  if ($hook == 'url_outbound_alter') {
    $stored = $implementations['MODULE'];
    unset($implementations['MODULE']);
    $implementations['MODULE'] = $stored;
  }
}

/**
 * Implements hook_url_outbound_alter().
 */
function MODULE_url_outbound_alter(&$path, &$options, $original_path) {
  if (strpos($path, '#') !== FALSE) {
    $fragment = substr($path, strpos($path, "#") + 1);
    $path = str_replace('#' . $fragment, '', $path);
    $options['fragment'] = $fragment;
  }
}

कृपया "कोड-ओनली" उत्तर पोस्ट न करें। हालांकि यह समस्या को हल कर सकता है, यह पाठक को यह नहीं समझाता है कि यह समस्या का समाधान क्यों करता है , या यह यहां के विकल्पों की तुलना में क्या प्रदान करता है
शॉन कॉन

0

पदानुक्रमित मेनू के लिए विशेष मेनू आइटम और DHTML मेनू स्थापित करें:

  • अपनी एक्स-उदाहरण शब्दावली जोड़ें और इसे अपनी शर्तों में जोड़ें
  • क्लिक करें एक्स-उदाहरण को टैक्सेनॉमी मेनू अनुभाग सेट मेनू स्थान से संशोधित करें
  • ब्लाकों पर जाएं मेनू को एक ब्लॉक में सेट करें
  • मेनू व्यवस्थापक संशोधन में आप स्वचालित रूप से जोड़े गए शब्दों को देखते हैं
  • एक मेनू आइटम को संशोधित करने पर क्लिक करें फिर <void>इसे लक्ष्य में पेस्ट करें

अब अपने होम पेज पर वापस आएँगे और आप देखेंगे कि मेनू आइटम जिसे हमने क्लिक में संशोधित किया है, वे कहीं नहीं जाते हैं


Drupal Q & A में आपका स्वागत है। यह समझाने के लिए अधिक उपयोगी होगा कि किसी चित्र को चिपकाने के बजाय विशेष मेनू आइटम का उपयोग कैसे करें। आप अपने उत्तर को बढ़ाने पर विचार कर सकते हैं। धन्यवाद।
कोजो

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