Localizando todos os nós não referenciados por uma entrada de menu ou outro nó

8

Durante a criação do conteúdo de um site, acabamos com nós de conteúdo órfão que não estão vinculados a qualquer lugar. Eu gostaria de encontrar e examinar isso. Surpreendentemente, não consigo encontrar um módulo para isso.

Pequeno exemplo hipotético: estou construindo um site de folhetos. Alguém escreveu uma página "Contato", outra pessoa escreveu um "Sobre nós" e outra pessoa escreveu "Direções". A pessoa que escreveu "Direções" esqueceu de colocá-lo em um link de menu ou adicionar um link de "Sobre nós" a "Direções". Portanto, "Directions" fica órfão: não há links para ele. Eu gostaria de encontrar todos esses nós para descobrir o que fazer com eles.

Dan Halbert
fonte
Você está vendo esses nós quando está listando todos os nós?
BetaRide 12/02/2012
Sim. Não há nada de especial neles. Eles simplesmente ficam órfãos em termos de menus e links.
Dan Halbert
Existe uma razão pela qual você não pode excluí-los da página de conteúdo geral?
BetaRide 13/02/12
Não, mas esse não é o problema. De, digamos, todas as páginas básicas da página de conteúdo, quero saber quais são órfãs e quais não são. Vou olhar para os órfãos e ver se há algum conteúdo dentro que eu quero. Caso contrário, eu os excluirei. A questão é que não sei dizer quais são órfãos apenas olhando a lista. Por exemplo, um dos meus editores pode ter escrito, por exemplo, uma página "Contatos", mas esquecemos de colocá-la em um menu e, portanto, ela está inacessível no momento, a menos que você saiba o URL.
Dan Halbert
Você está interessado apenas nos módulos existentes ou gostaria de escrever um módulo personalizado se nenhum módulo fizer o que você está procurando?
kiamlaluno

Respostas:

3

Para links do sistema de menus:

As exibições de nós do menu se aproximam muito do que você solicita, mas precisa de alguma codificação .

Para links do corpo (campos) de nós:

O módulo Pesquisar salva referências entre os nós. Isso pode ser usado pelas visualizações para criar uma visualização "backlinks". Para o Drupal 5, havia um módulo separado para isso com algumas explicações adicionais, já que D6 (vistas 2/3) essa funcionalidade é incorporada no módulo visualizações.

Sumário

views + vbo + API do nó de menu + Exibições de nó de menu (+ filtro / patch personalizado ou Exibir com consulta personalizada )

s.Daniel
fonte
Isso é útil, embora não lide com links para nós do corpo (ou o que seja) de outros nós. Eu acho que é tão bom quanto eu vou conseguir - obrigado.
Dan Halbert
Opa, perdi essa parte. Adicionadas as informações ausentes agora.
precisa saber é o seguinte
4

Eu precisava disso para uma solicitação de clientes, então decidi tentar fazê-lo sem nenhum módulo adicional e empurrar meu MySQL um pouco. Foi assim que acabei.

Para maior clareza, isso fornecerá apenas uma lista de NIDs que NÃO possuem um item de menu associado.

Também adicionei uma cláusula WHERE para limitar os tipos de conteúdo, pois alguns tipos de conteúdo serão naturalmente excluídos devido à maneira como foram arquitetados.

SELECT n.nid, n.type, n.title, n.status
FROM node AS n
WHERE (n.type = 'article' OR n.type = 'page')
AND n.nid NOT IN (
  SELECT REPLACE(link_path, "node/", "") AS nid
  FROM menu_links
  WHERE SUBSTRING(link_path, 6, LENGTH(link_path)) REGEXP "^[0-9]+$" 
);
Simon Fryer
fonte
Ótima solução! +1 para nenhum novo módulo.
Sam152 01/09/2015
2

Você já experimentou o Views ? Você precisará criar uma exibição para os nós órfãos, o que dependeria de sua taxonomia e campos.

David Barratt
fonte
Estou procurando, digamos, nós de Página Básica que não tenham entrada de menu ou que não estejam vinculados a partir de nenhum outro nó. Eles não têm taxonomia. Não há nenhuma consulta do View que as encontre.
Dan Halbert
Fiquei com a impressão de que você poderia usar (não) a lógica no Views. Então, você poderia dizer algo como Nós, onde o campo taxonomia xyz está vazio.
David Barratt
Esses nós não têm campos de taxonomia. Eu só quero saber se eles estão acessíveis em um menu ou se estão vinculados a partir do conteúdo de algum outro nó (acessível).
Dan Halbert
2

Você pode realizar a parte do menu com bastante facilidade com uma consulta personalizada.

SELECT * 
FROM node
WHERE node.type = 'page'
AND node.nid NOT IN (
 SELECT nid
 FROM menu_node
)
ummdoriano
fonte