हुक का उपयोग करके नई सामग्री को अपडेट / हटाने / जोड़ने के बाद कैश कैसे हटाएं?


11

हमारे पास एक कस्टम सेवा मॉड्यूल और ड्रुपल 7 में एक साइट है, और मुझे संपादक को नई सामग्री जोड़ने या मौजूदा अपडेट करने के बाद कैश को हटाने का काम मिला।

मैंने Cache Actions नामक एक मॉड्यूल के बारे में पढ़ा है , लेकिन, जैसा कि मैंने कहा, मुझे अपने कस्टम मॉड्यूल पर फ़ंक्शन बनाने की आवश्यकता है।

इसके अलावा, मैंने ड्रुपल हुक के बारे में पढ़ना शुरू कर दिया है, लेकिन अभी भी इस कार्य को लागू करने का कोई सुराग नहीं है। कोई सुझाव? धन्यवाद।


इसे कुछ तरीकों से लागू किया जा सकता है। आपके संपादक कितनी बार नई सामग्री को अपडेट / डिलीट / जोड़ते हैं?
पीटर

बहुत बार, क्योंकि हम मोबाइल ऐप के लिए वेब सेवाएं बनाने के लिए डेटा के प्रबंधक के रूप में ड्रुपल का उपयोग करते हैं। मैं आपको ठीक-ठीक नहीं बता सकता कि हम कितनी बार डेटा जोड़ते या संशोधित करते हैं, लेकिन मुख्य अनुरोध यह है कि हर बार परिवर्तन होने पर कैश को साफ़ करें।
1

जवाबों:


12

ऐसा लगता है कि आपको पहले से ही एक कस्टम मॉड्यूल मिल गया है, लेकिन अगर आपको मॉड्यूल डेवलपर की मार्गदर्शिका दिखाई नहीं देती है ।

आपके द्वारा खोजे जा रहे हुक hook_node_insert()और hook_node_update(), और कैश साफ़ करने का कार्य cache_clear_all()या तो होगा या drupal_flush_all_caches। पूर्व आपको विशिष्ट कैश डिब्बे (और यहां तक ​​कि विशिष्ट कैश आइटम) को स्पष्ट करने देगा, और बाद वाला बिल्कुल सब कुछ साफ कर देगा।

उदाहरण के लिए:

function MYMODULE_node_insert($node) {
  drupal_flush_all_caches();
}

या नोड अपडेट होने के बाद केवल स्थैतिक पृष्ठ कैश को साफ़ करने के लिए:

function MYMODULE_node_update($node) {
  $nodeurl = url('node/'. $node->nid, array('absolute' => TRUE));
  cache_clear_all($nodeurl, 'cache_page');
}

ठीक है, मैं इसे समझता हूं। बस एक और सवाल, क्या मुझे अपने .module फ़ाइल या drupal के नोड मॉड्यूल फ़ाइल में कोड जोड़ना है?
एर्ज़ी

2
यह अपने स्वयं के मॉड्यूल फ़ाइल में चला जाता है, कोर फ़ाइलें हैकिंग एक बड़ा नहीं-नहीं Drupal में :) है
क्लाइव

1

आप उन्हें अपडेट करने के बाद विशिष्ट नोड कैश आसानी से साफ़ कर सकते हैं। पूर्व। :

function MYMODULE_node_update($node) {
  $nodeurl = url('node/'. $node->nid, array('absolute' => TRUE));
  cache_clear_all($nodeurl, 'cache_page');
}

कृपया ध्यान दें कि आपको निर्दिष्ट करना होगा array('absolute' => TRUE)

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