วิธีปิดการใช้งานตัวเลือก 'เลื่อนเป็นหน้าแรก' และ 'ติดหนึบ'?


14

สองวิธีที่เป็นไปได้ที่ฉันได้สำรวจ:

ใช้hook_form_alterเพื่อยกเลิกการตั้งค่าทั้งสองตัวเลือกในแบบฟอร์มการแก้ไขโหนด แต่ในหน้าเนื้อหาหลักของผู้ดูแลระบบตัวเลือกยังคงปรากฏอยู่ในเมนูแบบเลื่อนลง 'ตัวเลือกการอัปเดต'

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

คำตอบ:


16

มี 3 สถานที่ซึ่งตัวเลือกเหล่านี้สามารถมองเห็นได้:

  • ในผู้ดูแลระบบ / โครงสร้าง / ประเภท / จัดการ / บทความสำหรับประเภทเนื้อหา "บทความ"

    ภาพหน้าจอ

  • บน node / 2 / edit สำหรับโหนดที่มี ID เท่ากับ 2

    ภาพหน้าจอ

  • บนผู้ดูแลระบบ / เนื้อหาระหว่าง "ตัวเลือกการอัพเดท"

    ภาพหน้าจอ

หากคุณต้องการลบตัวเลือกออกจากหน้าการตั้งค่า / หน้าการจัดการคุณจะต้องแก้ไขตัวสร้างฟอร์มต่อไปนี้:

node_admin_nodes()เป็นตัวสร้างรูปแบบสำหรับภาพรวมการดูแลโหนดในผู้ดูแลระบบ / เนื้อหาซึ่งรวมถึงฟิลด์ "ตัวเลือกการอัพเดท" ที่ช่วยให้ผู้ใช้ที่มีสิทธิ์ที่เหมาะสมในการส่งเสริม / ลดระดับโหนดจากหน้าแรกและเพื่อให้โหนดเหนียว ฟิลด์แสดงการดำเนินการของโหนดทั้งหมดที่นำมาใช้โดยโมดูล ในรายการของการดำเนินงานที่ได้รับกับ$operations = module_invoke_all('node_operations')การดำเนินงานเหล่านั้นจะเป็นตัวแทนจาก$operations['promote'], $operations['demote'], และ$operations['sticky']$operations['unsticky']


13

นี่คือโมดูลที่กำหนดเองที่ฉันเขียนสำหรับ Drupal 7 ที่ลบ "เลื่อนไปยังหน้าแรก" และ "ติดที่ด้านบนของรายการ" บนโหนดเพิ่ม / แก้ไขแบบฟอร์มประเภทเนื้อหาเพิ่ม / แก้ไขแบบฟอร์มและผู้ดูแลระบบ / เนื้อหาแบบเลื่อนลง โมดูลนี้ไม่ได้เปลี่ยนแปลงการตั้งค่าฐานข้อมูลใด ๆ ดังนั้นมันจะไม่เปลี่ยนแปลงเนื้อหาที่มีอยู่คุณสามารถปิดการใช้งานและรับตัวเลือกของคุณกลับมาและทุกอย่างจะทำงานเหมือนที่เคยทำมาก่อน

วางรหัสนี้ลงใน hide_sticky_promote.module และสร้างไฟล์ hide_sticky_promote.info ที่สอดคล้องกันเปิดใช้งานโมดูลและวอลลาห์ไม่เหนียวเหนอะหนะและส่งเสริมช่องทำเครื่องหมายหรือการเลือกแบบเลื่อนลง

/**
 * Remove sticky/promote entirely from add and edit content type forms.
 *
 * Implements hook_form_FORM_ID_alter().
 */
function hide_sticky_promote_form_node_type_form_alter(&$form, &$form_state, $form_id) {
  // Remove sticky/promote entirely from add and edit content type forms.
  $options = array('promote', 'sticky');
  foreach ($options as $key) {
    unset($form['workflow']['node_options']['#options'][$key]);    
  }
}

/**
 * Remove sticky/promote entirely from node/X/edit & node/X/add forms.
 * 
 * Implements hook_form_BASE_FORM_ID_alter().
 */
function hide_sticky_promote_form_node_form_alter(&$form, &$form_state, $form_id) {
  $options = array('promote', 'sticky');
  foreach ($options as $key) {
    $form['options'][$key]['#access'] = FALSE;
  }
}

/**
 * Remove some sticky/promote update options on admin/content.
 *
 * Implements hook_form_FORM_ID_alter().
 */
function hide_sticky_promote_form_node_admin_content_alter(&$form, &$form_state, $form_id) {
  $options = array('demote', 'promote', 'sticky', 'unsticky', );
  foreach ($options as $key) {
    unset($form['admin']['options']['operation']['#options'][$key]);
  }
}

หรือคว้ามันจากที่นี่ในรูปแบบโมดูล: https://github.com/StudioZut/hide-sticky-promote


3

ใช้สิ่งต่อไปนี้:

/**
 * Implements hook_form_alter().
 * This is remove the promote to frontpage, and make sticky options from node edit pages
 */
function alter_drupal_form_alter(&$form, &$form_state, $form_id) {
  if (strpos($form_id, '_node_form') !== FALSE) {
    unset($form['options']['sticky']);
    unset($form['options']['promote']);
  }

  if (strpos($form_id, 'node_admin_content') !== FALSE) {
    //$opt[''] = '- Select -';
    $opt['publish'] = 'Publish selected content'; 
    $opt['unpublish'] = 'Unpublish selected content'; 
    $opt['delete'] = 'Delete selected content'; 
    $opt['pathauto_update_alias'] = 'Update URL alias'; 
    $form['admin']['options']['operation']['#options'] = $opt;


    // print_r($form['admin']['options']['operation']['#options']);
  }
}

2

ใน Drupal 8 คุณสามารถปิดการใช้งานตัวเลือกต่อประเภทเนื้อหา:

/admin/structure/types/manage/page/form-display

ฟิลด์ "ฟอร์มการดำเนินการจำนวนมากของโหนด" ต้องถูกแก้ไขในมุมมองเนื้อหาผู้ดูแลระบบเพื่อลบการดำเนินการที่เกี่ยวข้องออกจาก / admin / เนื้อหา

/admin/structure/views/view/admin_content

หากต้องการรักษาตัวเลือกการส่งเสริมประเภทเนื้อหาไว้สำหรับการใช้งานกับมุมมองที่กำหนดเองตัวอย่างเช่นมุมมอง "frontpage" ที่สร้างหน้าแรกขึ้นมานั้นสามารถแก้ไขได้ด้วย

/admin/structure/views/view/frontpage

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


1

คุณสามารถปิดการใช้งาน 'เลื่อนไปที่หน้า' โดยการแก้ไขประเภทเนื้อหา หากต้องการซ่อนและ / หรือตัวเลือก 'ติดหนึบ' การแก้ไขและอื่น ๆ ให้ดูโมดูลJammerสำหรับ Drupal 7


0

เหตุใดจึงไม่สร้างพื้นที่เทมเพลตที่แตกต่างกันซึ่งจะปรากฏเฉพาะในหน้าแรกและลบพื้นที่ ['เนื้อหา'] ในหน้านั้น

องค์ประกอบในแบบฟอร์มสามารถซ่อนได้โดยใช้ css หรือด้วย hook_preprocess_form ()


0

ฉันใช้โมดูล "เลื่อนระดับปิดการใช้งาน"สำหรับสิ่งนี้

มันสร้างตัวควบคุมที่การกำหนดค่า -> การเขียนเนื้อหา -> เลื่อนการปิดการใช้งานที่ให้รายการที่เลือกของประเภทเนื้อหาทั้งหมดของคุณ Ctrl / รายการเลือกหลายรายการในรายการเพื่อลบตัวเลือกการประชาสัมพันธ์ทั้งหมด


0
function HOOK_form_node_form_alter(&$form, FormStateInterface $form_state) {
  if (isset($form['promote'])) {
    unset($form['promote']);
  }

  if (isset($form['sticky'])) {
    unset($form['sticky']);
  }
}

มันต้องการเพียงข้างต้น


-1

ฉันสงสัยว่าคุณสามารถติดตั้งhook_node_presaveและตั้งค่าเป็น 0 ซึ่งจะแทนที่วิธีที่เป็นไปได้ในการตั้งค่าเหล่านี้

คุณสามารถลองhook_form_alterใช้แบบฟอร์มที่ใช้ในหน้าผู้ดูแลระบบนั้นและลบตัวเลือกเหล่านั้นออก

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