สิทธิ์“ ดูเนื้อหาที่ไม่ได้เผยแพร่” สำหรับผู้ที่ไม่ได้เป็นผู้เขียน


18

ฉัน googled เล็กน้อยเพื่อดูว่ามีวิธีการระดับสิทธิ์ในการอนุญาตให้ผู้ใช้ที่เข้าสู่ระบบ (แต่ไม่ใช่ผู้ดูแลระบบ) ดูเนื้อหาที่ไม่ได้เผยแพร่ (ทำเครื่องหมายด้วยคลาส CSS โหนดที่ไม่ได้เผยแพร่) ดูเหมือนว่าจะถูกกำหนดเวลาไว้สำหรับ 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

ใช่ฉันควรได้กล่าวถึงคุณอาจต้องการ 'เนื้อ' ขึ้นเล็กน้อย :) ดีใจที่ได้ช่วย
Clive

สิ่งที่ยอดเยี่ยมอีกครั้งไคลฟ์ นี่เป็นการแก้ปัญหาของฉันเช่นกันเพื่อ จำกัด การเข้าถึงโหนดด้วยคำศัพท์อนุกรมวิธานที่แน่นอน !!!
Uwe

1
รหัสคือ "ดูเนื้อหาใด ๆ อย่างไม่มีเงื่อนไข" ไม่เคยตรวจสอบเพื่อดูว่าโหนดถูกเผยแพร่หรือไม่ หรือถ้าบทบาทได้รับอนุญาตให้ดูเนื้อหาในตอนแรก
JM01

6

ฉันลองรหัสด้านบนครั้งแรกซึ่งยอดเยี่ยม แต่หลังจากให้สิทธิ์ในเนื้อหาที่ไม่ได้เผยแพร่กับบทบาทแล้วบทบาทนั้นยังไม่สามารถดูเนื้อหาที่ไม่ได้เผยแพร่ในมุมมองได้และนี่จะเป็นประโยชน์อย่างมากสำหรับบทบาทบรรณาธิการ ...

ฉันจะแก้ไขได้โดยใช้โมดูลview_unpublished


ฉันติดตั้งปลั๊กอินนี้ & แทนที่จะแก้ปัญหาของฉันมันไม่ได้ & ทำให้เนื้อหาทั้งหมดไม่แสดงสำหรับกลุ่มผู้ดูแลระบบที่กำหนดเองที่ฉันทำ
mohamad salama

ฉันขอโทษที่คุณมีพฤติกรรมเช่นนี้ ฉันเคยใช้งานมาระยะหนึ่งแล้วและไม่เคยมีบทบาทดังกล่าวมาก่อน (ถ้าคุณหมายถึงกลุ่มผู้ดูแลระบบของคุณคือบทบาท) คุณสามารถโพสต์ปัญหาในDOแล้ว
Kojo

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 โมดูล view_unpublished ที่แนะนำโดย Kojo เป็นวิธีแก้ปัญหาที่ง่ายและรวดเร็ว


0

วิธีแก้ไขที่ง่ายและสมเหตุสมผลคือการใช้แฟล็ก 'เลื่อนไปที่หน้าเพจ' บนโหนด

หากคุณไม่มีการใช้งานอื่นสำหรับการตั้งค่าสถานะนี้ให้กรองมุมมองของคุณใน 'เลื่อนไปที่ Frontpage' เครื่องมือแก้ไขเนื้อหาของคุณสามารถทำงานบนโหนดก่อนที่จะได้รับการเลื่อนตำแหน่ง (โดยใช้ลิงก์โดยตรง) แต่จะยังไม่ปรากฏแก่ผู้เยี่ยมชมไซต์

เราได้รับแรงบันดาลใจจากวิธี 'วิดีโอที่ไม่แสดง' ของ Youtube


0

หากคุณต้องการเพียงเพื่อดูเนื้อหาในมุมมองที่ปิดการใช้งานSQL rewritingในQuery Settingsภายใต้Otherใน Views UI

สิ่งนี้ใช้ได้กับฉันเพราะฉันต้องการให้ผู้ใช้สามารถยกเลิกการเผยแพร่เนื้อหาที่ไม่ได้เผยแพร่เท่านั้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.