¿Por qué no puedo eliminar ciertos tipos de contenido?


19

Tengo un sitio de Drupal 7 y, en el menú Tipos de contenido, solo ciertos tipos tienen un enlace "eliminar" en la columna "Operaciones".

Todos los tipos de contenido tienen los enlaces para 'editar', 'administrar campos' y 'administrar visualización', pero solo algunos tienen 'eliminar', mientras que otros no.

Verifiqué mis permisos para mi usuario, y lo tengo Administer content types, pero parece ser un permiso global para todos los tipos de contenido, por lo que todavía no entiendo por qué algunos se pueden eliminar mientras que otros no.

¿Por qué solo ciertos tipos de contenido tienen una operación de eliminación?

Respuestas:


15

Solo puede eliminar los tipos de contenido que se crean manualmente (a través de admin/structure/types/add).

Los tipos de contenido que no tienen un enlace de eliminación se crean mediante programación mediante módulos instalados y se eliminarán después de que los desinstale .


55
En caso de que alguien todavía esté aquí, tengo un tipo de contenido que se creó mediante programación, pero que aún está pendiente de mi sitio, incluso después de haber eliminado todos los rastros del código del sitio, todavía hay entradas para él en {menu_links } y {menu_router} y similares, por lo que sigue apareciendo en los menús de "crear contenido" y similares. Evidentemente, algo se ha estropeado en el camino; ¿Hay alguna buena manera de deshacerse de este corto (ugh) directamente pirateando la base de datos, que REALMENTE me gustaría no hacer?
Jim Miller

Tengo el mismo problema. En un sitio múltiple, exporté un tipo de contenido con la ayuda de Funciones y lo exporté a otro. Ahora eliminé los módulos relacionados, pero el tipo de contenido todavía está aquí.

3
Probablemente lo haya hecho, pero solo comprobando: ¿ha desinstalado los módulos y simplemente los ha desactivado ?
user56reinstatemonica8


No sé si esta respuesta ha sido correcta anteriormente, pero ciertamente ya no es correcta con Drupal 7.23. Los tipos de contenido se pueden eliminar, independientemente de cómo se crearon.
Kari Kääriäinen

30

Bórralos yendo a la url /admin/structure/types/manage/content-machine-name/delete

content-machine-name es el nombre de la máquina del tipo de contenido que desea eliminar. Además, asegúrese de usar guiones en el nombre de la máquina en lugar de guiones bajos.


1
¡Impresionante, esto funcionó muy bien! Instalé Enterprise Blog y Enterprise FAQ hace un tiempo, pero terminé sin usarlos. La pantalla Tipos de contenido no ofrecía la opción de eliminar esos tipos de contenido, por lo que su método fue un alivio.
hockey2112

1
No esperaba que esto funcionara, pero funcionó maravillosamente. Excelente para eliminar los tipos de contenido agregados mediante el Módulo de características.
Citricguy 01 de

¡Sí! Este consejo fue increíble. Funciona bien.
Boriana Ditcheva

Esta es la solución real :)
petergus

Sin embargo, esto funciona si el enlace "eliminar" no aparece de forma natural, significa que podría no ser seguro eliminarlo. Una vez que no haya tipos de contenido que lo usen, ni dependencias, ni contenido en caché, ni variables y características que lo estén usando, aparecerá el enlace. Por lo tanto, aconsejo usar esto con precaución.
Christia

2

Como mencionó hpn, solo puede eliminar los tipos de contenido que se crean manualmente.

Pero a veces las cosas no salen bien. Los siguientes pasos han ayudado a eliminar tipos de contenido. Necesita hacer una copia de seguridad de la base de datos antes de intentar esto.

[Para eliminar manualmente un tipo de contenido que se creó 1 # 16 Nedjo sugiere en drupal.org:

  • Deshabilita la función. A veces he tenido problemas con esto: una función no se deshabilitará. En este caso, elimine el código del módulo de funciones.
  • Determine el nombre de máquina del tipo de contenido que se va a eliminar, por ejemplo, 'mytype'.
  • En la base de datos, revierta los valores de la tabla node_type a los valores predeterminados como si el tipo de contenido se creara manualmente a través de la interfaz de usuario:

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

  • Borrar cachés para garantizar que el cambio de tipo de contenido esté disponible.
  • A través de la interfaz de usuario en admin / structure / types, elimine el tipo de contenido.

Los pasos anteriores es lo que me ha ayudado antes cuando encontré esos problemas.


1

Deshabilitar el módulo que proporciona el tipo de contenido debería ser el primer paso. Si el tipo de contenido fue proporcionado por una función, aún deberá eliminar el tipo de contenido.

Para una característica bien hecha, la capacidad de eliminar un tipo de contenido vendrá después de que la característica esté deshabilitada. Esto es preferible a eliminar un tipo de contenido de debajo de una característica, ya que la funcionalidad actual o las actualizaciones futuras de esa característica pueden requerir el tipo de contenido.

Tenga en cuenta que puede deshabilitar los módulos de funciones (admin / modules) incluso cuando la interfaz de Funciones está (bastante tontamente) alegando que no puede deshabilitar un módulo debido a conflictos.

Y si no desea hacer nada a través de la interfaz, y solo quiere hacer código, aquí hay un ejemplo de un enlace de actualización que deshabilitará las Funciones de Wiki y Publicaciones de Commons y luego eliminará los tipos de contenido que proporcionan.

<?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');
}
?>
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.