เหตุใดฉันจึงไม่สามารถลบเนื้อหาบางประเภทได้


19

ฉันมีเว็บไซต์ Drupal 7 และใต้เมนูประเภทเนื้อหามีเพียงบางประเภทเท่านั้นที่มีลิงก์ 'ลบ' ใต้คอลัมน์ 'การดำเนินงาน'

ประเภทเนื้อหาทั้งหมดมีลิงก์สำหรับ 'แก้ไข', 'จัดการฟิลด์' และ 'จัดการจอแสดงผล' แต่มีเพียงบางส่วนเท่านั้นที่มี 'ลบ' ในขณะที่คนอื่นไม่มี

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

เหตุใดเนื้อหาบางประเภทเท่านั้นที่มีการลบ

คำตอบ:


15

คุณสามารถลบประเภทเนื้อหาที่สร้างขึ้นด้วยตนเอง (ผ่านadmin/structure/types/add) เท่านั้น

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


5
ในกรณีที่ทุกคนยังอยู่ที่นี่ - ฉันมีประเภทเนื้อหาที่สร้างขึ้นโดยทางโปรแกรม แต่ยังคงแขวนอยู่รอบ ๆ เว็บไซต์ของฉันแม้ว่าฉันจะลบร่องรอยทั้งหมดของมันออกจากรหัสของเว็บไซต์แล้วยังมีรายการใน {menu_links } และ {menu_router} และสิ่งที่ชอบดังนั้นมันยังคงปรากฏในเมนู "สร้างเนื้อหา" และสิ่งที่ชอบ มีบางอย่างที่เลอะเทอะไปตลอดทาง มีวิธีใดที่ดีในการกำจัด short ของ (ugh) นี้แฮ็คฐานข้อมูลโดยตรงซึ่งฉันอยากจะไม่ทำจริงๆ?
Jim Miller

ผมมีปัญหาเดียวกัน. บนไซต์หลายไซต์ฉันส่งออกประเภทเนื้อหาด้วยความช่วยเหลือของฟีเจอร์และส่งออกไปยังเว็บไซต์อื่น ตอนนี้ฉันลบโมดูลที่เกี่ยวข้อง แต่ประเภทเนื้อหายังอยู่ที่นี่

3
คุณอาจจะมี แต่เพิ่งตรวจสอบ - คุณถอนการติดตั้งโมดูลเช่นเดียวกับการปิดการใช้งานพวกเขา?
user56reinstatemonica8

2
นี่เป็นวิธีการแก้
Aram Boyajyan

ฉันไม่รู้ว่าคำตอบนี้ถูกต้องก่อนหน้านี้หรือไม่ แต่แน่นอนว่ามันไม่ถูกต้องอีกต่อไปแล้วกับ Drupal 7.23 สามารถลบประเภทเนื้อหาได้ไม่ว่าจะสร้างอย่างไร
Kari Kääriäinen

30

ลบออกโดยไปที่ url /admin/structure/types/manage/content-machine-name/delete

content-machine-name เป็นชื่อเครื่องของประเภทเนื้อหาที่คุณต้องการลบ นอกจากนี้ตรวจสอบให้แน่ใจว่าคุณใช้เครื่องหมายขีดกลางในชื่อเครื่องแทนที่จะเป็นเครื่องหมายขีดเส้นใต้


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

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

อ้อ! เคล็ดลับนี้ยอดเยี่ยม ทำได้ดี.
Boriana Ditcheva

นี่คือวิธีการแก้ปัญหาที่แท้จริง :)
petergus

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

2

ดังที่ hpn พูดถึงคุณสามารถลบประเภทเนื้อหาที่สร้างขึ้นด้วยตนเองเท่านั้น

แต่บางครั้งสิ่งต่าง ๆ ไม่ราบรื่น ขั้นตอนต่อไปนี้ช่วยในการลบประเภทเนื้อหา คุณต้องสำรองฐานข้อมูลก่อนที่จะลองทำสิ่งนี้

[หากต้องการลบประเภทเนื้อหาที่สร้างขึ้น1 # 16 Nedjoแนะนำใน drupal.org:

  • ปิดใช้งานคุณสมบัติ บางครั้งฉันพบปัญหาเกี่ยวกับสิ่งนี้ - คุณสมบัติจะไม่ปิดใช้งาน ในกรณีนี้ให้ลบโค้ดโมดูลคุณลักษณะ
  • กำหนดชื่อเครื่องของประเภทเนื้อหาที่จะลบเช่น 'mytype'
  • ในฐานข้อมูลให้ย้อนกลับค่าตาราง node_type เป็นค่าดีฟอลต์ราวกับว่าชนิดเนื้อหาถูกสร้างขึ้นด้วยตนเองผ่าน UI:

mysql> UPDATE node_type SET module = 'node', custom = 1, modified = 1, locked = 0 WHERE type = 'mytype';

  • ล้างแคชเพื่อให้แน่ใจว่ามีการเปลี่ยนแปลงประเภทเนื้อหา
  • ผ่าน UI ที่ผู้ดูแลระบบ / โครงสร้าง / ประเภทลบประเภทเนื้อหา

ขั้นตอนข้างต้นคือสิ่งที่ช่วยฉันก่อนหน้านี้เมื่อฉันพบปัญหาเหล่านั้น


1

การปิดใช้งานโมดูลที่ให้ประเภทเนื้อหาควรเป็นขั้นตอนแรก หากประเภทเนื้อหามีให้ในสถานที่คุณจะต้องลบประเภทเนื้อหา

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

โปรดทราบว่าคุณสามารถปิดใช้งานโมดูลคุณลักษณะ (ผู้ดูแลระบบ / โมดูล) แม้ในขณะที่อินเทอร์เฟซฟีเจอร์ (ค่อนข้างโง่) โดยอ้างว่าไม่สามารถปิดการใช้งานโมดูลเนื่องจากความขัดแย้ง

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

<?php
/**
 * Remove unused features and content types.
 */
function example_update_7001() {
  // Delete one (spam) piece of wiki content.
  node_delete(2731);
  // Disable Feature modules.
  module_disable(array('commons_wikis_pages', 'commons_wikis', 'commons_posts'));
  // Delete content types.
  node_type_delete('wiki');
  node_type_delete('post');
}
?>
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.