ปัญหา
ถอนการติดตั้งคุณลักษณะที่สร้างเนื้อหาประเภทกลองลิงก์ "ลบ" admin/structure/types
ในที่
ถอนการติดตั้งคุณลักษณะที่สร้างเนื้อหาประเภทกลองลิงก์ "ลบ" admin/structure/types
ในที่
คำตอบ:
การใช้hook_uninstall()
ไฟล์ใน FEATURE_NAME.install และเปลี่ยนสถานะของประเภทเนื้อหาดังนั้นระบบจึงคิดว่าเป็นประเภทเนื้อหาที่ปลดล็อคและกำหนดเอง
<?php
/**
* Implements hook_uninstall().
*/
function FEATURE_NAME_uninstall() {
// List custom content types added by this feature
$custom_ctypes = array(
'blog',
);
// Go through each and unlock the content type
foreach ($custom_ctypes as $ctype) {
db_query("UPDATE {node_type} SET `custom` = 1, locked = 0 WHERE type = :ctype", array(':ctype' => $ctype));
}
// Clean Drupal cache; this is necessary for the "Delete" link to appear
// next to the content type created by the feature.
drupal_flush_all_caches();
}
นี่จะทำให้ปุ่ม "ลบ" ปรากฏขึ้นสำหรับประเภทเนื้อหานั้นดังนั้นคุณสามารถลบออกจากผู้ดูแลระบบได้
หวังว่านี่จะช่วยใครซักคน!
node_type_delete($ctype);
หลังจากเคียวรีใน for for วนซ้ำ
mysql> UPDATE node_type SET custom = 1, locked = 0 WHERE type = '<content type machine name>';
สำหรับฉันทางออกคือการโหลดหน้าลบด้วยตนเองเนื่องจากไม่มีลิงก์ "ลบ" ในหน้าประเภทเนื้อหา ในการทำเช่นนี้คุณเพียงแค่สร้าง URL ด้วยตัวเองโดยทำตามโครงสร้าง URL เดียวกับหน้าลบสำหรับประเภทเนื้อหาอื่น:
ผู้ดูแลระบบ / โครงสร้าง / ประเภท / จัดการ / YOUR_CONTENT_TYPE_MACHINE_NAME / ลบ
สิ่งนี้นำมาสู่หน้ายืนยันการลบประเภทเนื้อหาซึ่งทำให้ฉันสามารถลบประเภทเนื้อหาได้
สำหรับการอ้างอิงดูหัวข้อนี้ใน Drupal.org:
https://drupal.org/node/1055460#comment-7297680
ความนับถือ,
@cmsdave
.info
ไฟล์ของคุณสมบัติและลบประเภทเนื้อหาจากนั้นจะลบจริง
วิธีการข้างต้นไม่ได้ลบ taxonomies แต่สามารถทำได้โดยการผนวกต่อไปนี้หลังจากปิดการใช้งานและถอนการติดตั้งโมดูล:
// Delete taxonomies.
$machine_names = array('taxonomy_a', 'taxonomy_b');
foreach ($machine_names as $machine_name) {
$taxonomy = taxonomy_vocabulary_machine_name_load($machine_name);
taxonomy_vocabulary_delete($taxonomy->vid);
}
โซลูชันอื่นที่ทำงานให้ฉันโดยตรงกับฐานข้อมูลในไซต์การพัฒนาของฉัน อย่าลืมสำรองฐานข้อมูลของคุณเสมอ
หากต้องการลบประเภทเนื้อหาที่สร้างโดยฟีเจอร์ # 16 สิ่งที่ Nedjoแนะนำคือสิ่งต่อไปนี้:
- ปิดใช้งานคุณสมบัติ บางครั้งฉันพบปัญหาเกี่ยวกับสิ่งนี้ - คุณสมบัติจะไม่ปิดใช้งาน ในกรณีนี้ให้ลบโค้ดโมดูลคุณลักษณะ
- กำหนดชื่อเครื่องของประเภทเนื้อหาที่จะลบเช่น 'mytype'
- ในฐานข้อมูลให้ย้อนกลับค่าตาราง node_type เป็นค่าดีฟอลต์ราวกับว่าชนิดเนื้อหาถูกสร้างขึ้นด้วยตนเองผ่าน UI:
mysql> UPDATE node_type SET module = 'node', custom = 1, modified = 1, locked = 0 WHERE type = 'mytype';
- ล้างแคชเพื่อให้แน่ใจว่ามีการเปลี่ยนแปลงประเภทเนื้อหา
- ผ่าน UI ที่ผู้ดูแลระบบ / โครงสร้าง / ประเภทลบประเภทเนื้อหา
หากคุณใช้โมดูล admin_menuคุณจะยังคงเห็นลิงก์ลบในเมนูแบบเลื่อนลงโครงสร้าง / ประเภทเนื้อหา / [ชื่อประเภทเนื้อหา] / ลบแม้ว่าจะไม่ปรากฏในหน้าประเภทเนื้อหาก็ตาม
ฉันจะบอกว่ามันค่อนข้างปลอดภัยที่จะใช้ลิงค์ลบนี้หากคุณมั่นใจว่าไม่มีการอ้างอิงอื่น ๆ ประเภทเนื้อหานี้อีกต่อไป