गैर-लेखक के लिए "अप्रकाशित सामग्री देखें" अनुमति


18

यदि यह लॉग-इन (लेकिन गैर-व्यवस्थापक) उपयोगकर्ता अप्रकाशित सामग्री (सीएसएस नोड-अप्रकाशित वर्ग के साथ चिह्नित) को देखने की अनुमति देने के लिए अनुमति-स्तर का तरीका है, तो मैं यह देखने के लिए थोड़ा सा googled। यह केवल Drupal 8 के लिए निर्धारित प्रतीत होता है। लेकिन हो सकता है कि कोई काम करने के लिए पर्याप्त चतुर था?

मेरी एक भूमिका है जिसका नाम Content Editorसभी अप्रकाशित सामग्री को देखने में सक्षम होना चाहिए, चाहे वे लेखक हों या न हों।

जवाबों:


17

यदि आप बहुत छोटे कस्टम मॉड्यूल लिख रहे हैं तो आप ऐसा करने के लिए hook_permission()और इसके संयोजन का उपयोग कर सकते हैं hook_node_access():

function MYMODULE_permission() {
  return array(
    'unconditionally view unpublished content' => array(
      'title' => t('Unconditionally View Unpublished Content'),
      'restrict access' => TRUE
    )
  );
}

function MYMODULE_node_access($node, $op, $account) {
  // We're only bothered about the 'view' operation at the moment
  if ($op == 'view') {
    // If the user has access to our new permission, let 'em at it
    if (user_access('unconditionally view unpublished content', $account)) {
      return NODE_ACCESS_ALLOW;
    }
  }

  // For everything else let the system decide.
  return NODE_ACCESS_IGNORE;
}

कोई भी भूमिका जिसे आप नई अनुमति देते हैं, उसे अब किसी भी नोड को देखने में सक्षम होना चाहिए, चाहे वह प्रकाशित हो या न हो।


सुरक्षा को थोड़ा मजबूत करने के लिए हालांकि मैंने जोड़ा && user_access('administer nodes')ताकि यह सामग्री बनाने के अधिकारों पर निर्भर हो। अब यह "बिना शर्त" नहीं है। उदाहरण के लिए धन्यवाद!
Artur

हाँ मैंने कहा जाना चाहिए था आप 'गोमांस' यह थोड़ा :) मदद के लिए खुश करने के लिए चाहते हो सकता है
क्लाइव

महान सामान फिर से, क्लाइव। यह मेरे एक मुद्दे को हल करता है और साथ ही साथ एक निश्चित वर्गीकरण अवधि के साथ नोड्स तक पहुंच को प्रतिबंधित करता है !!!
उवे

1
कोड वास्तव में "किसी भी सामग्री को बिना शर्त देखें" है। यह कभी नहीं देखता कि नोड प्रकाशित हुआ है या नहीं। या अगर भूमिका को पहली जगह में सामग्री को देखने की अनुमति है।
JM01

6

मैंने पहली बार ऊपर दिए गए कोड की कोशिश की, जो बहुत अच्छा है। लेकिन एक भूमिका के लिए अप्रकाशित सामग्री पर अधिकार देने के बाद, वह भूमिका अभी भी विचारों में अप्रकाशित सामग्री नहीं देख सकती है, और यह कुछ संपादकों की भूमिकाओं के लिए बहुत उपयोगी हो सकती है ...

मैंने इसे मॉड्यूल view_unpublished का उपयोग करके हल किया ।


मैंने इस प्लगइन को स्थापित किया और अपने मुद्दे को हल करने के बजाय, यह सभी सामग्री को कस्टम व्यवस्थापक समूह के लिए प्रदर्शित नहीं किया, जो मैंने बनाया था।
मौहम्मद सलामा

अच्छा मुझे खेद है कि आपका ऐसा व्यवहार था। मैं इसे कुछ समय के लिए उपयोग कर रहा हूं और कभी भी किसी भूमिका के साथ इस तरह की पीबी नहीं थी (यदि आपका मतलब है कि आपका व्यवस्थापक समूह एक भूमिका है)। आप तब DO में इश्यू में पोस्ट कर सकते हैं ।
कोजो

3

मैं इसके लिए रिविजनिंग मॉड्यूल का उपयोग करता हूं । स्थापना के बाद, यह प्रत्येक सामग्री प्रकार के लिए निम्नलिखित अनुमतियाँ बनाता है:

  • सामग्री प्रकार : स्वयं की सामग्री के संशोधन देखें

  • सामग्री प्रकार : किसी की सामग्री के संशोधन देखें

  • सामग्री प्रकार : स्वयं की सामग्री के संशोधन प्रकाशित करें

  • सामग्री प्रकार : किसी की सामग्री के संशोधन प्रकाशित करें

मेरे संपादकों को किसी की सामग्री के संशोधन देखने की अनुमति देकर, वे अन्य उपयोगकर्ताओं द्वारा बनाए गए या संशोधित किए गए सभी नोड्स को एक्सेस और प्रकाशित करने में सक्षम हैं।


1

यह वही है जिसे मैंने बनाया है ...।

यह प्रत्येक नोड प्रकार के लिए 'किसी भी सामग्री की अनुमति देखें' बनाता है। नोड मॉड्यूल क्या करता है यह बहुत अधिक है, लेकिन अतिरिक्त विकल्प जोड़ता है।

/**
 * Implements hook_permission().
 */
function MODULE_permission() {
  $perms = array();
  foreach (node_permissions_get_configured_types() as $type) {
    $info = node_type_get_type($type);
    $perms += array(
      "view $type content" => array(
        'title' => t('%type_name: View any content', array('%type_name' => $info->name)),
      )
    );
  }
  return $perms;
}

/**
 * Implements hook_node_access().
 */
function MODULE_node_access($node, $op, $account) {
  $type = is_string($node) ? $node : $node->type;

  if (in_array($type, node_permissions_get_configured_types())) {
    if ($op == 'view' && user_access('view ' . $type . ' content', $account)) {
      return NODE_ACCESS_ALLOW;
    }
  }

  return NODE_ACCESS_IGNORE;
}

1

वहाँ Drupal 7 और Drupal 8 के लिए एक मॉड्यूल है:

View_unpublished

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


0

आधिकारिक प्रशासन गाइड का संदर्भ : https://drupal.org/node/1106606 Kojo द्वारा सुझाए गए मॉड्यूल view_unpublished एक त्वरित और आसान समाधान है।


0

एक सरल, उचित कार्य, नोड्स पर 'प्रमोशन टू फ्रंटपेज' झंडे का उपयोग करना है।

यदि आपके पास इस ध्वज का कोई अन्य उपयोग नहीं है, तो 'प्रचारित मुखपृष्ठ' पर अपने विचारों को फ़िल्टर करें। आपका सामग्री संपादक प्रचारित होने से पहले नोड पर काम कर सकता है (एक सीधा लिंक का उपयोग करके)। लेकिन यह संभावित रूप से साइट आगंतुकों को दिखाई नहीं देगा।

हमें Youtube के 'असूचीबद्ध वीडियो' दृष्टिकोण से प्रेरणा मिली।


0

आप केवल एक दृश्य में सामग्री, अक्षम देखने के लिए की जरूरत है SQL rewritingमें Query Settingsनीचे Otherदृश्य यूआई में।

यह मेरे लिए काम करता है क्योंकि मैं केवल उपयोगकर्ताओं को अप्रकाशित सामग्री को अनफ्लैग करने में सक्षम होना चाहता हूं।

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