기능을 제거한 후 기능 컨텐츠 유형을 삭제할 수 없습니다


답변:


15

해결책

hook_uninstall()FEATURE_NAME.install 파일에서를 사용 하고 컨텐츠 유형의 상태를 변경하여 시스템은 파일이 잠금 해제 된 사용자 정의 컨텐츠 유형이라고 생각합니다.

나는 이것을 d.org에도 게시했습니다 .

<?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();

}

그러면 해당 컨텐츠 유형에 대해 "삭제"단추가 나타나므로 관리자에서 삭제할 수 있습니다.

이것이 누군가를 돕기를 바랍니다!


1
명확히하기 위해 콘텐츠 유형이 삭제되지는 않습니다. 콘텐츠 유형 목록 페이지에서 '삭제'링크를 사용할 수 있습니다. 감사합니다 @ Ivanhoe123!
doub1ejack

1
또한 기능 모듈이 활성화되어있는 동안이 작업을 수행 할 수 없었지만 비활성화 및 제거 (드 러쉬 사용) 후에 아름답게 작동했습니다. 바로 가기 :이 함수의 내용을 / devel / php에 놓아 devel 모듈을 사용하십시오. 프로그래밍 방식으로 컨텐츠 유형을 삭제하려면 node_type_delete($ctype); for 루프에서 쿼리 뒤에 추가하십시오 .
doub1ejack

그 코드에 감사드립니다. 이 코드를 본 후 phpMyAdmin을 사용하여 데이터베이스를 편집하고 "node_type"테이블을 편집했습니다. 그런 다음 삭제하려는 contect 유형을 찾아 "Custom"값을 "1"로 설정했습니다. 그리고 드루팔 행정부에서 삭제했습니다.
ANDiTKO

2
mysql> UPDATE node_type SET custom = 1, locked = 0 WHERE type = '<content type machine name>';
Marco Lazzeri

@MarcoLazzeri의 솔루션은 나를 위해 완벽하게 작동했으며 기능 모듈을 제거하기 위해 업데이트하는 것보다 훨씬 낫습니다.
도넛

11

나에게 해결책은 콘텐츠 유형 페이지에 "삭제"링크가 없기 때문에 삭제 페이지를 수동으로로드하는 것이 었습니다. 이렇게하려면 다른 컨텐츠 유형의 삭제 페이지와 동일한 URL 구조를 따라 URL을 직접 구성하면됩니다.

관리자 / 구조 / 유형 / 관리 / YOUR_CONTENT_TYPE_MACHINE_NAME / 삭제

그러면 컨텐츠 유형 삭제 확인 페이지가 표시되어 컨텐츠 유형을 삭제할 수있었습니다.

참고로 Drupal.org에서이 스레드를 참조하십시오.

https://drupal.org/node/1055460#comment-7297680

문안 인사,

cm


방금 마지막에 디스플레이 내용 유형 링크를 변경하여 문제없이 내용 유형을 삭제할 수있었습니다. 이 솔루션은 작동합니다!
cateye

참고 :이 작업을 수행하기 전에 기능 .info파일 을 편집 하고 내용 유형을 제거해야 실제로 삭제됩니다.
Duncanmoo

3

위의 방법은 분류법을 삭제하지는 않지만 모듈을 비활성화 및 제거한 후 다음을 추가하여 얻을 수 있습니다.

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

1

개발 사이트의 데이터베이스에 직접 도움이되는 또 다른 솔루션입니다. 항상 데이터베이스를 백업해야합니다.

수동 기능을 통해 생성 된 콘텐츠 형식 삭제하려면 무엇 # 16 Nedjo이 제안은 다음과 같다 :

  • 기능을 비활성화하십시오. 때때로이 문제가 발생하여 기능이 비활성화되지 않습니다. 이 경우 기능 모듈 코드를 제거하십시오.
  • 삭제할 컨텐츠 유형의 기계 이름 (예 : 'mytype')을 결정하십시오.
  • 데이터베이스에서 컨텐츠 유형이 UI를 통해 수동으로 작성된 것처럼 node_type 테이블 값을 기본값으로 되 돌리십시오.

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

  • 컨텐츠 유형 변경이 가능하도록 캐시를 지우십시오.
  • admin / structure / types의 UI를 통해 컨텐츠 유형을 삭제하십시오.

0

admin_menu module 을 사용하는 경우 컨텐츠 유형 페이지에 표시되지 않더라도 풀다운 메뉴 구조 / 콘텐츠 유형 / [콘텐츠 유형 이름] / 삭제에 삭제 링크가 계속 표시됩니다.

더 이상이 컨텐츠 유형에 대한 다른 참조가없는 경우이 삭제 링크를 사용하는 것이 안전하다고 말하고 싶습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.