ฉันจะให้ผู้ใช้ยกเลิกการเผยแพร่และเผยแพร่เนื้อหาของตนเองได้อย่างไร


30

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

คำตอบ:


20

วิธีการแบบ UI ที่ฉันใช้ในบางไซต์คือโมดูลตัวเลือก Override Nodeเพิ่มการอนุญาตที่คล้ายกับที่คำตอบอื่น ๆ ของฉันให้ไว้


ดูเหมือนจะเป็นวิธีที่ง่ายที่สุด ... และตอนนี้ก็ใช้ได้สำหรับฉันแล้ว ขอบคุณ!
Chaulky

นี่คือสิ่งที่ดีที่สุดที่คุณสามารถอนุญาตให้เผยแพร่และเหนียวโดยไม่ต้องโหนบริหาร :)
อเล็กซ์เวเบอร์

ดูเหมือนโมดูลที่ยอดเยี่ยมในการจัดการกับปัญหานี้
zilverdistel

20

เราใช้โมดูลเผยแพร่เนื้อหาเสมอ มันเพิ่มจำนวนสิทธิ์ที่ละเอียดและแท็บเผยแพร่ / ยกเลิกการเผยแพร่บนโหนด

โมดูลนี้

  • เปิดใช้งานการเผยแพร่และยกเลิกการอนุญาตอย่างละเอียด:
    • ทั่วโลก (ยกเลิก / เผยแพร่เนื้อหาใด ๆ )
    • ต่อ "node type" (ยกเลิก / เผยแพร่เนื้อหาใด ๆ [nodetype])
    • ต่อผู้ใช้ (ยกเลิก / เผยแพร่เนื้อหา [nodetype] ของตัวเอง
  • เพิ่มแท็บ "Publish / Unpublish" ในหน้าโหนดสำหรับการคลิกเดียว / ยกเลิกการเผยแพร่
  • ตีแผ่เผยแพร่ / ยกเลิกการเผยแพร่ลิงก์ไปยังมุมมองของคุณทำให้ง่ายต่อการปรับปรุงเวิร์กโฟลว์สำหรับผู้ตรวจทานบรรณาธิการและผู้เผยแพร่
  • มีน้ำหนักเบาและจะเป็น

9

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

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


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

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');
}

ซึ่งเพิ่มสิทธิ์พิเศษบางอย่างที่อนุญาตให้คุณอนุญาตให้ผู้ใช้เผยแพร่ / ยกเลิกการเผยแพร่ประเภทเนื้อหาของตนเองหรือทั้งหมดและประเภทเนื้อหาทั้งหมดกำหนดวิธีที่คุณต้องการ


ขอบคุณที่ดูดีสวยเหมาะสม แล้วความสามารถในการดูเนื้อหาที่ไม่ได้เผยแพร่ของพวกเขาล่ะ? หากพวกเขาไม่สามารถดูได้จะเผยแพร่ได้อย่างไร
Chaulky

ไม่ควรส่งผลกระทบต่อ IIRC ผู้ใช้สามารถดูเนื้อหาที่ไม่ได้เผยแพร่ของพวกเขาหรือไม่ว่ามี 'การจัดการโหนด'
ถอดรหัส

3

ฉันต้องการอัปเดตคำตอบถอดรหัสถอดรหัสแม่มดให้ฉันวิธีที่ดีที่สุดถ้าคุณไม่ต้องการเพิ่มโมดูลอื่นเพื่อให้เหมาะกับ Drupal 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. ถัดไปเพิ่มกฎใหม่ที่เรียกใช้เมื่อโหนดถูกตั้งค่าสถานะและที่เผยแพร่โหนดที่ถูกตั้งค่าสถานะ ในทำนองเดียวกันการสร้างกฎข้อที่สองที่ unpublishes โหนดซึ่งอยู่ภายใต้การ unflagged เผยแพร่
  3. สุดท้ายให้สิทธิ์แก่ผู้ใช้เพื่อดูโหนดที่ไม่ได้เผยแพร่ของตนเองและเพิ่มลิงค์เผยแพร่ไปยังหน้าของโหนด

-1

เข้าถึงเนื้อหาโมดูลควรจะครอบคลุมสิ่งที่คุณต้องการ

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


1
คำตอบที่คลุมเครือ หากนี่เป็นคำตอบที่ดีกว่าของ Decipher คุณอาจอธิบายรายละเอียดเกี่ยวกับประโยชน์ของวิธีนี้ได้หรือไม่?
Chris Cohen

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