मैं Drupal 7 में menu_rebuild फ़ंक्शन कैसे कॉल करूं?


13

मैं menu_rebuild () फ़ंक्शन को कॉल करना चाहूंगा , लेकिन मुझे यकीन नहीं है कि वास्तव में कोड स्निपेट को कहां पेस्ट किया जाएगा।

मैं अपने स्थानीय उदाहरण में कहीं भी update.php फ़ाइल नहीं ढूँढ सकता ।

मैं इसका प्रयास करना चाहूंगा क्योंकि मैंने सभी नोड्स को हटा दिया है, लेकिन वे अभी भी मेनू संरचना के तहत दिखाई दे रहे हैं।


क्या आप अद्यतन के बाद या क्या Drupal मेनू का पुनर्निर्माण करना चाहते हैं?
एब्रेड्रेड 1

update.php drupal root folder में होगा अर्थात /var/www/htdocs/drupalऔर इसे संशोधित करना एक बुरा विचार है। क्या आप कृपया अधिक विवरण जोड़ सकते हैं कि क्यों आप menu_rebuild को कॉल करना चाहते हैं?
GoodSp33d

Aboodred1, हाँ, मैं सभी नोड्स को हटाने के बाद ड्रुपल मेनू का पुनर्निर्माण करना चाहूंगा। 2- स्टोकर
user12804

@ user12804, क्या आप सुनिश्चित हैं कि वे नोड से संबंधित मेनू हैं? यदि हां, तो मैंने पहले ही दूसरे प्रश्न का उत्तर दिया।
पृथु २u

जवाबों:


5

निम्नलिखित सामग्री के साथ एक फ़ाइल बनाएँ और बस Drupal रूट निर्देशिका में छोड़ दें। चलिए बताते हैं menu-rebuild.php। इसे http://example.com/menu-rebuild.php चलाएं

<?php
error_reporting(E_ALL);
define('DRUPAL_ROOT', getcwd());
require_once './includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);

menu_rebuild();

Devel
mbomb007

15

द्रुपाल al

यदि आप ड्रश का उपयोग कर रहे हैं, तो आप चला सकते हैं:

drush eval 'menu_rebuild();'

अगर काम नहीं करेगा, तो देखें: PHP फाल्ट त्रुटि होने पर मेनू पुनर्निर्माण कैसे करें?

द्रुपाल ६

drush php-eval 'drupal_rebuild_theme_registry()'

memcached

यदि आप ज्ञापन का उपयोग कर रहे हैं, तो आप इसे पुनः आरंभ करेंगे।

लिनक्स पर: /etc/init.d/memcached restart

ओएस एक्स पर (अगर होमब्रे का उपयोग कर रहे हैं): brew services restart memcached


आसानी से करने के लिए सही ड्रश कमांड के लिए वोट करें, लेकिन आपको निश्चित रूप से यह जोड़ना चाहिए कि कुछ मामलों में आपको पहले से संबंधित डेटाबेस तालिकाओं को खाली करने की आवश्यकता है, जैसा कि ऊपर @Valk द्वारा उल्लेख किया गया है
nilsun

11

डेटाबेस स्कीमा खोलें, फिर menu_links और menu_router टेबल की सभी सामग्री को निम्न SQL प्रश्नों के साथ हटा दें:

DELETE FROM menu_links;
DELETE FROM menu_router;

इसके बाद http://example.com/update.php चलाएं । यह menu_rebuild () को कॉल करेगा, जो इन तालिकाओं को 'ताज़ा' डेटा के साथ आबाद करेगा। यह मेरे लिए एक "PHP घातक त्रुटि: स्मृति से बाहर" के बाद काम किया मेरे कुछ मेनू को गड़बड़ कर दिया।

लेकिन ध्यान रखें, कि यह आप सभी कस्टम मेनू को मिटा देगा, जिसे आपको मैन्युअल रूप से पुनर्निर्माण करना होगा। इससे बचने के लिए आप menu_router और menu_links से कुछ चयनित रिकॉर्ड को हटाने के साथ थोड़ा खेल सकते हैं, लेकिन मेरे लिए यह अच्छा नहीं था।

और तालिकाओं से सामग्री हटाने से पहले अपने डेटाबेस और साइट निर्देशिका का बैक-अप करना न भूलें।


2
आवश्यक अतिरिक्त जानकारी के लिए वोट दें, कभी-कभी आपको निश्चित रूप से menu_rebuild से पहले संगत डेटाबेस तालिकाओं को खाली करना होगा। यहाँ दीर्घकालिक अनुभवों से पुष्टि की जाती है ...
nilsun

3

कुछ अलग तरीके:

  1. Hook_update_Nmenu_rebuild() से कॉल करें
  2. Drupal व्यवस्थापक से मेनू सेटिंग्स फ़ॉर्म को संपादित करें और सहेजें।
  3. कमांड लाइन से, ड्रश के साथ: drush cc menu

धन्यवाद। क्या मैं इसे बिना नशे के भी कर सकता हूं?
user12804

हाँ, उपर्युक्त 3 विधियों में से कोई भी अपने आप काम करेगा।
डेविड थॉमस

पुन :: संपादित करें और Drupal व्यवस्थापक से एक मेनू लिंक को बचाने के लिए। काम नहीं करता है, पहले से ही कोशिश की है कि कुछ समय ...
user12804

हां, वह मेनू मेनू पृष्ठ के लिए था। आप menu_cache_clear_all()मेनू कैश का पुनर्निर्माण करने के लिए भी कॉल कर सकते हैं
डेविड थॉमस

2

admin/config/development/performance"सभी कैश साफ़ करें" बटन पर जाने और क्लिक करने से मेनू को फिर से बनाया जाएगा, साथ ही साथ स्पष्ट टेम्पलेट, ब्लॉक, पृष्ठ, आदि कैश।


धन्यवाद पेंटेन, मैंने कोशिश की कि कई बार, लेकिन कोई भाग्य नहीं। हटाए गए नोड्स अभी भी नेविगेशन मेनू संरचना में दिखाई दे रहे हैं :(
user12804


0

SQL में व्यवस्थापक मेनू उपयोग को ठीक करने के लिए और ध्यान दें कि जैसा कि ऊपर उल्लिखित Valk आपके प्रशासन प्रबंधन मेनू से सभी अनुकूलन को हटा देगा। आपके द्वारा चलाए जाने के बाद यह स्पष्ट हो जाएगा कि आपका कैश प्रबंधन मेनू अपनी डिफ़ॉल्ट सेटिंग में फिर से बनाया जाएगा।

यहाँ SQL क्वेरी है:

DELETE FROM menu_links WHERE menu_name='management' 

मेनू को फिर से बनाने के लिए ज्यादातर जरूरत पड़ती है जब कुछ वास्तव में टूट जाता है और Drupal इसे बीच में ठीक नहीं कर सकता है। यही कारण है कि मैं Valks विधि की सिफारिश करना चाहूंगा क्योंकि पूर्ण विवरण रीसेट इस तरह के प्रश्न के लिए एक बेहतर उत्तर है यदि कोई और विवरण प्रदान नहीं किया गया है जो कि टूट गया है।
nilsun
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.