प्रोग्राम को फ्रंट पेज कैसे सेट करें?


22

मैं ड्रुपल फ्रंट पेज को प्रोग्राम टाइम पर सेट करना चाहता हूं।
मैं यह कैसे कर सकता हूँ? क्या यह संभव है?

जवाबों:


22

आप उसके variable_set()लिए उपयोग कर सकते हैं ।

variable_set('site_frontpage', $value);

18
यह सही है, लेकिन यह ऐसा कुछ नहीं है जो बहुत बार किया जाना चाहिए या एक उपयोग कार्रवाई पर आधारित होना चाहिए। एक चर_सेट () कॉल में हमेशा "cache_clear_all ('चर', 'cache_bootstrap);" इसलिए अगले अनुरोध को डेटाबेस से चर और बूटस्ट्रैप जानकारी फिर से प्राप्त करनी होगी।
बेरदीर

1
@Berdir - यह किसी भी तरह साइट के प्रदर्शन को प्रभावित करता है?
एक कोसमोस

7
हां, यह प्रदर्शन को प्रभावित करेगा, cache_bootstrap में कई कैश हैं जो केवल समय के साथ फिर से बनाए जाएंगे, उदाहरण के लिए हुक कार्यान्वयन। वैकल्पिक समाधान दृश्य पृष्ठ पर गतिशील रूप से सामग्री प्रदर्शित करने के लिए दृश्य, पैनल या एक कस्टम मॉड्यूल का उपयोग किया जाएगा। उदाहरण के लिए, आप किसी सामग्री प्रकार के सबसे हाल के नोड को दिखाने के लिए एक दृश्य बना सकते हैं और फिर उस पर site_frontpage को इंगित कर सकते हैं।
बर्दिर

hook_installया hook_update_Nतो यह प्रयोग ठीक होना चाहिए।
लेमनक्स

16

एक मॉड्यूल है ( फ्रंटपेज , जो एक मैं बनाए रखा गया है) जो अनाम उपयोगकर्ताओं और प्रमाणित उपयोगकर्ताओं के लिए एक अलग फ्रंट पेज सेट करने की अनुमति देता है। मॉड्यूल तीसरे पक्ष के मॉड्यूल को उस पृष्ठ को बदलने की अनुमति देता है, जिससे उपयोगकर्ता इसके बजाय पुनर्निर्देशित होते हैं, या पृष्ठ को रेंडर करने के लिए उपयोग किए जाने वाले संरचना सरणी में परिवर्तन करते हैं। तृतीय-पक्ष मॉड्यूल को केवल पुनर्निर्देशन URL को बदलने की अनुमति है जब अनाम या प्रमाणित के लिए फ्रंट पेज फ्रंटपेज मॉड्यूल के भीतर सेट नहीं किया गया है, या जब नोड लोडिंग के दौरान कोई त्रुटि हुई है; मॉड्यूल को संभवतः भविष्य में बदल दिया जाएगा ताकि तीसरे पक्ष के मॉड्यूल उपयोगकर्ताओं को उनके द्वारा चुने गए एक विशिष्ट पृष्ठ पर पुनर्निर्देशित कर सकें।

विकल्प के रूप में, आप एक कस्टम मॉड्यूल बना सकते हैं, जो फ्रंटपेज द्वारा उपयोग किए गए कोड के समान है, उपयोगकर्ताओं को एक विशिष्ट पृष्ठ पर रीडायरेक्ट करता है, विशिष्ट मानदंडों पर आधारित है।

मॉड्यूल को हुक_मेनू () लागू करना चाहिए और मेनू कॉलबैक को संबद्ध करना चाहिए , उदाहरण के लिए, http://example.com/frontpage ; उस मेनू आइटम के पृष्ठ कॉलबैक को बस एक शर्त सत्यापित की जानी चाहिए, और फिर उपयोगकर्ताओं को एक विशिष्ट URL पर पुनर्निर्देशित करें।

कोड कंकाल निम्नलिखित के समान हो सकता है:

/**
 * Implements hook_menu().
 */
function mymodule_menu() {
  $items = array();

  $items['frontpage'] = array(
    'page callback' => 'mymodule_frontpage_view',
    'access arguments' => array('access content'),
    'type' => MENU_CALLBACK,
  );

  return $items;
}

function mymodule_frontpage_view() {
  // These variables can be useful to redirect the users
  // to specific pages, basing on the language currently set for
  // the content, or on the fact the user is logged in.
  $langcode = $GLOBALS['language_content']->language;
  $logged_in = user_is_logged_in();

  if ($condition) {
    drupal_goto($redirect);
  }
}

9

पैनलों का उपयोग करने के लिए एक बहुत ही लचीला समाधान होगा । विभिन्न डिस्प्ले किसी भी मापदंड के आधार पर प्रस्तुत किए जा सकते हैं, और UI के माध्यम से नियंत्रित किया जाता है।


4

मैंने इस तरह तय किया:

/**
 * Implements hook_page_alter.
 * @param type $page
 */
function my_module_page_alter(&$page){
  global $user;

  $is_fron_page = drupal_is_front_page();
  if($is_fron_page && $user->uid){
    $redirect = 'users/'.$user->name.'/my-argument';
    drupal_goto($redirect);
  }
}

1
नमस्ते। आपको अपना कोड साझा करना अच्छा लगा। यहां तक ​​कि अच्छा होगा यदि आप हमें बता सकते हैं कि आपका कोड इसे कैसे ठीक करता है। आप जानते हैं, अन्य लोग इसका अनुसरण कर सकते हैं यदि किसी कारण से उनके लिए कॉपी-पेस्ट कोड काम नहीं करेगा।
मोलॉट

@molot - यह विधि, जिसे आपके कस्टम मॉड्यूल में जोड़ा जाना चाहिए , कुछ शर्तों के आधार पर , उपयोग करने वाले उपयोगकर्ताओं को पुनर्निर्देशित hook_page_alterकरता drupal_is_front_pageहै और उपयोग करता है drupal_goto(इस मामले में $ उपयोगकर्ता-> uid 0 नहीं होना चाहिए)
आमपे

@commonpike ऐसा नहीं है कि मैं इसे नहीं समझता। मेरी टिप्पणी समग्र रूप से उत्तर की गुणवत्ता के बारे में थी, और विशेष रूप से नए, अनुभवहीन उपयोगकर्ताओं के लिए यह प्रयोज्य है।
Mołot

1

नियम मॉड्यूल भी मुखपृष्ठ "प्रोग्राम के" सेट करने के लिए इस्तेमाल किया जा सकता।

वास्तव में बनाया जाने वाला नियम, नियम या php कोड का उपयोग करके एक अलग फ्रंटपेज पर लॉग इन (प्रमाणित) उपयोगकर्ताओं के लिए रीडायरेक्ट में उत्तर का एक बदलाव होगा ।

और वैकल्पिक रूप से इसे फ्लैग मॉड्यूल के साथ जोड़ना , संभवतः उपयोगकर्ता अनुभव को और बढ़ा सकता है। उदाहरण के लिए उपयोगकर्ताओं को लॉग इन करने के लिए कि वे कौन से संभावित मोर्चे को अपना "पसंदीदा" मानते हैं।


1

यदि आप इसे विश्व स्तर पर प्रोग्राम करने के लिए देख रहे हैं, तो आप सेटिंग में वैरिएबल सेट कर सकते हैं।

$conf['site_frontpage'] = 'some/custom/path';

0

मैंने मुखपृष्ठ नोड को (उप-डोमेन पर) बदल दिया है, सेटिंग्स को एक हुक_url_outbound_alter में चर द्वारा ) ()

variable_set('site_frontpage', $value);

और फिर पुनर्निर्देशन:

$_GET['q'] = 'node/' . $domain_homepage_node_id;
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.