ti-enxame.com

Associação inesperada de tags pai

Estou usando o 3.3.0 e comecei a brincar com as tags. Notei que todas as tags criadas recentemente têm a tag Joomla como pai. Quando edito a tag, o menu suspenso Pai é definido como Nenhum; no entanto, se eu cancelar a publicação da tag do Joomla, as tags subsequentes também não serão publicadas (e não poderão ser publicadas até que eu publique a tag do Joomla). Esse comportamento é esperado?


Algumas capturas de tela

Componentes => Tags

Eu não publiquei a tag Joomla, que também não publica a maioria das minhas outras tags (estranhamente, não o Baking, embora essa tenha sido adicionada em um momento diferente das outras, o que me levou a acreditar que algo mudou nesse meio tempo). Se eu clicar no status do SciLab, ele não será alterado. Se eu alternar o status do Joomla, todos (exceto Baking) seguirão o exemplo.

enter image description here

Componentes => Tags => SciLab

Nenhum pai está definido. Aqui eu posso publicar a tag, e ela parece persistir até que eu alterne a tag do Joomla; O Joomla ainda está se comportando como o pai.

enter image description here

Componentes => Tags => Cozimento

Por que cozinhar não está compartilhando o destino de todas as minhas outras tags está além de mim.

enter image description here


Em resposta à resposta por @FFrewin

Aqui está uma captura de tela da minha tabela jos_tags. Parece que há problemas com os valores lft/rgt. Além disso, o Path mostra que o Joomla é o pai de todas as tags, mesmo que Baking não esteja se comportando como se tivesse um pai.

enter image description here

3
bobthechemist

Se não houver outros hacks no código que afetam as funções de salvamento do componente, esse problema me faz pensar que algo pode estar errado no Modelo de Conjunto Aninhado na tabela jos_tags .

Você precisará verificar suas tags db_table com uma ferramenta como phpmyAdmin , para ver esses valores e, talvez, se precisar de mais informações, poste aqui uma captura de tela de colunas da tabela de tags para uma investigação mais aprofundada.

Para obter mais informações, consulte este artigo muito bom que descreve o conceito Modelo de conjunto aninhado. Uma boa leitura para todos.

O diagrama Modelo de Conjunto Aninhado:

The Nested Set Model diagram


Sua tabela de tags do Joomla

Mas, resumidamente, se todas as suas tags forem as que vejo na captura de tela, você deve esperar algo semelhante à captura de tela que eu publico aqui.

O que você deve se importar mais com a minha captura de tela é o parent_id (é claro), os valores lft, rgt, level e path. right tags table for the question
Como você deseja que todas as suas tags sejam filhos da tag raiz (ou seja, sem outras tags como pai), elas devem estar todas definidas para level = 1 e parent_id = 1. Para os valores lft e rgt, você deve todas as suas tags devem ter números sem diferença maior que 1, entre os valores esquerdo/direito, enquanto ROOT deve ter o valor de lft definido como 0 e o direito definido como o número mais alto deste cálculo: "(número total de tags * 2 ) -1 ".

Geralmente, não há uma maneira fácil de lidar com isso para as com_tags. Se acontecer de você ter apenas algumas tags, você poderá editar os valores lft/rgt manualmente (é claro, depois de calculá-los). Se você possui um número extenso de tags, provavelmente precisará escrever um script php, que calculará e definirá esses valores corretamente.

Espero que isso ajude e não seja muito confuso.

Para ser mais específico - siga estas etapas:

Defina ROOT lft/rgt 0-13, Joomla lft/rgt como 1-2 baking 3-4 e continue assim até o último percurso da tag, que deve ser 11-12. Também remova do caminho o joomla e a parte da barra. Mas em qualquer caso - primeiro faça um backup do seu banco de dados.

2
FFrewin