मैं उपयोगकर्ताओं को अपनी सामग्री को अप्रकाशित और प्रकाशित कैसे करने दूं?


30

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

जवाबों:


20

एक यूआई दृष्टिकोण जो मैंने कुछ साइटों पर उपयोग किया है वह ओवरराइड नोड विकल्प मॉड्यूल है, उन अनुमतियों को जोड़ता है जो मेरे अन्य उत्तर प्रदान करता है, साथ ही एक अतिरिक्त अतिरिक्त।


यह सबसे सरल तरीका लगता है ... और यह वर्तमान में मेरे लिए काम कर रहा है। धन्यवाद!
चौकी

यह सबसे अच्छा है क्योंकि आप बिना व्यवस्थापक नोड्स के प्रकाशन और चिपचिपा होने की अनुमति दे सकते हैं :)
एलेक्स वेबर

इस मुद्दे से निपटने के लिए एक महान मॉड्यूल की तरह दिखता है।
zilverdistel

20

हम हमेशा उसके लिए प्रकाशित सामग्री मॉड्यूल का उपयोग करते हैं । इसमें कई बारीक अनुमतियाँ और नोड्स पर एक प्रकाशित / अप्रकाशित टैब जोड़ा गया है।

यह मॉड्यूल

  • सक्षम प्रकाशित और अप्रकाशित अनुमति देता है:
    • वैश्विक (किसी भी सामग्री को प्रकाशित / प्रकाशित)
    • प्रति "नोड प्रकार" (संयुक्त / किसी भी [नोडोडाइप] सामग्री को प्रकाशित करें)
    • प्रति उपयोगकर्ता (संयुक्त राष्ट्र / स्वयं के प्रकाशन] सामग्री
  • एक-क्लिक un / प्रकाशन के लिए नोड पेज पर "प्रकाशित / प्रकाशित करें" टैब जोड़ता है।
  • आपके विचारों के लिए प्रकाशित / अप्रकाशित लिंक को उजागर करता है, जिससे समीक्षकों, संपादकों और प्रकाशकों के लिए वर्कफ़्लोज़ को व्यवस्थित करना आसान हो जाता है।
  • हल्का है और हमेशा रहेगा।

9

मैं संशोधन मॉड्यूल का उपयोग करने की सलाह दूंगा, जो आपको उपरोक्त विधियों पर कुछ लाभ प्रदान करता है। एक कोर्स यह है कि यह पूरी तरह से बनाए रखा मॉड्यूल है और इस प्रकार कोड पर बहुत सारी आँखें होंगी और बहुत सारे बग फिक्स होंगे। दो, आपको अपने समग्र वर्कफ़्लो में इसे फिट करने के लिए अधिक सुविधाएँ मिलेंगी।

आपके उपयोग के मामले के लिए, आपके उपयोगकर्ताओं को "निर्माता" अनुमतियाँ और "मॉडरेटर" अनुमतियाँ दोनों प्रदान करता है, इसलिए वे मूल रूप से अपनी सामग्री को मॉडरेट कर सकते हैं, लेकिन जैसा कि मॉड्यूल विवरण में कहा गया है, उन्हें ईश्वर जैसी शक्तियां नहीं दी जाती हैं जैसे ' प्रशासन नोड्स 'देगा।


यह एक बहुत ही दिलचस्प विकल्प है, लेकिन वहाँ की तुलना में मुझे ज़रूरत से ज़्यादा रास्ता है। मैंने सोचा कि मुझे खुशी है कि मैं इसके बारे में जानता हूं, मैं कुछ अन्य साइटों के बारे में सोच सकता हूं जो इसके काम आएंगी।
चौकी

6

एक मॉड्यूल है जो ऐसा करता है, लेकिन मुझे नाम याद नहीं है। मुझे वास्तव में लगा कि मॉड्यूल ने जो तरीका अपनाया वह बहुत ही बोझिल था, इसमें बहुत से कोड थे जब वास्तविक महत्वपूर्ण कोड केवल कुछ अनुमति तर्क के साथ लिपटे एक लाइन था।

यह मेरे कोड का संस्करण है:

function MYMODULE_perm() {
  $perms[] = 'administer status of any content';

  foreach (node_get_types() as $type) {
    if (isset($type->type)) {
      $perms[] = 'administer status of any '. check_plain($type->type) .' content';
      $perms[] = 'administer status of own '. check_plain($type->type) .' content';
    }
  }

  return $perms;
}

function MYMODULE_form_alter(&$form, &$form_state, $form_id) {
  if ($form['#id'] == 'node-form' && $form_id == "{$form['#node']->type}_node_form" && _MYMODULE_access($form['#node']->type)) {
    if ($form['options']['#access'] == FALSE) {
      $form['options']['#access'] = TRUE;
    }
  }
}

function _MYMODULE_access($type) {
  return user_access('administer status of any content')
      || user_access('administer status of any ' . check_plain($type) . ' content')
      || user_access('administer status of own ' . check_plain($type) . ' content');
}

यह कुछ अतिरिक्त अनुमतियों को जोड़ता है जो आपको उपयोगकर्ताओं को अपनी स्वयं की या सभी सामग्री प्रकारों को प्रकाशित / अप्रकाशित करने की अनुमति देता है, और सभी सामग्री प्रकारों को सेट करता है कि आप कैसे चाहते हैं।


धन्यवाद, जो बहुत अच्छा लग रहा है, समझ में आता है। हालांकि उनकी अप्रकाशित सामग्री को देखने में सक्षम होने के बारे में क्या? यदि वे इसे देख नहीं सकते, तो इसे कैसे प्रकाशित करेंगे?
चुलकी

यह प्रभावित नहीं करना चाहिए कि, IIRC एक उपयोगकर्ता अपनी अन-प्रकाशित सामग्री देख सकता है कि क्या उसके पास 'व्यवस्थापक नोड्स' हैं या नहीं।
Decipher

3

अगर आप ड्रुपल 7 के लिए फिट होना चाहते हैं, तो मैं सिर्फ डिसीपर उत्तर को अपडेट करना चाहता हूं, मेरे लिए सबसे अच्छा तरीका है चुड़ैल।

/**
 * Implements hook_permission().
 */
function MYMODULE_permission() {  
  $perms = array(
    'administer status of any content' => array(
      'title' => t('Administer status for all content type'),
      'description' => t(''),
      'restrict access' => true
    ),
  );

  foreach (node_type_get_types() as $type) {
    if (isset($type->type)) {
      $perm_types = array(
        'administer status of any '. check_plain($type->type) .' content' => array(
          'title' => t('Administer status of any '. check_plain($type->type) .' content'),
          'description' => t(''),
        ),

        'administer status of own '. check_plain($type->type) .' content' => array(
          'title' => t('Administer status of own '. check_plain($type->type) .' content'),
          'description' => t(''),
        ),
      );
      $perms = array_merge($perms,$perm_types);
    }
  }

  return $perms;
}


function MYMODULE_form_alter(&$form, &$form_state, $form_id) {
  if (preg_match('/_node_form$/', $form_id) && _MYMODULE_access($form['#node']->type)) {
    if ($form['options']['#access'] == FALSE) {
      $form['options']['#access'] = TRUE;
    }
  }
}

function _MYMODULE_access($type) {
  return user_access('administer status of any content')
      || user_access('administer status of any ' . check_plain($type) . ' content')
      || user_access('administer status of own ' . check_plain($type) . ' content');
}

एक टाइपो है। $ perms_type को $ perm_types में बदलें - साथ ही किसी भी स्थिति की जाँच नहीं की गई है ..
rémy

0

आप ध्वज और नियम मॉड्यूल की शक्ति को मिलाकर इसे प्राप्त कर सकते हैं ।

  1. एक नया ध्वज प्रकाशित करें और उपयोगकर्ताओं को केवल अपनी सामग्री को ध्वजांकित करने की अनुमति दें।
  2. अगला, एक नया नियम जोड़ें जो एक नोड को ध्वजांकित होने पर ट्रिगर करता है और जो ध्वजांकित नोड को प्रकाशित करता है। इसी तरह, एक दूसरा नियम बनाएं जो नोड्स को अप्रकाशित करता है जो प्रकाशित के तहत अप्रकाशित हैं ।
  3. अंत में, उपयोगकर्ताओं को अपने स्वयं के अप्रकाशित नोड्स को देखने की अनुमति दें और नोड के पृष्ठों पर प्रकाशित लिंक जोड़ें ।

-1

सामग्री पहुँच मॉड्यूल आप क्या चाहते हैं कवर करना चाहिए।

यह मॉड्यूल आपको भूमिका और लेखक द्वारा सामग्री प्रकारों के लिए अनुमतियों को प्रबंधित करने की अनुमति देता है। यह आपको प्रत्येक सामग्री प्रकार के लिए कस्टम दृश्य निर्दिष्ट, संपादित करने और हटाने की अनुमति देता है। वैकल्पिक रूप से आप प्रति सामग्री एक्सेस सेटिंग्स को सक्षम कर सकते हैं, ताकि आप प्रत्येक सामग्री नोड के लिए पहुँच को अनुकूलित कर सकें।


1
एक अस्पष्ट जवाब के बिट। यदि यह निर्णायक के उत्तर के लिए बेहतर है, तो शायद आप इस दृष्टिकोण के लाभों के बारे में बता सकते हैं?
क्रिस कोहेन

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