Problema de taxonomia

Events happening in the community are now at Drupal community events on www.drupal.org.
bmateus's picture

Olá a todos.

Tenho um problema que à partida é simples, mas está a partir-me a cabeça no Drupal 7.

Criei um Content Type específico, que contém, além doutros, um field "Category", onde se insere Terms de taxonomia no vocabulário "Category".
Esse vocabulário "Category" tem vários níveis, com termos avós, pais e filhos.

Quando estou a editar um nodo desse tipo de conteúdo, consigo perfeitamente seleccionar um termo "X", filho de pai "P" e neto de avô "A". Quando o nodo é gravado, a informação está perfeitamente guardada.

Mas o que não percebo é como mostrar a linhagem completa no nodo, pois apenas me mostra o termo "X".
O que preciso de mostrar é:

A > P > X

Tal como os breadcrumbs, portanto não deve ser difícil, mas não consigo encontrar o que fazer nem como o fazer.
Inclusive estou a tentar alterar o field com field--field_category.tpl.php, mas não sei como fazer para "descobrir" os termos avo, pai e filho para os mostrar.

Alguém sabe como? Ando a ler o a taxonomia do API do D7, mas ainda sou demasiado noob para perceber onde tenho de alterar o código para o transformar no que quero.

Comments

Easy way out

perusio's picture

Usa um panel e escolhe mostrar toda a hierarquia como links :)

Panels embroncou...

bmateus's picture

Estava a tentar a tua solução, mas o panels deu-lhe de maluca.

Apareceu isto quando tento criar uma selection rule:

An AJAX HTTP error occurred.
HTTP Result Code: 400
Debugging information follows.
Path: http://www.vilavitaparcgallery.com/v3/ctools/context/ajax/access/add/pag...
StatusText: Bad Request
ResponseText:
400 Bad Request
Bad Request
Your browser sent a request that this server could not understand.

Acho que o caminho ficou mal formado (%2A). Tentei em Chrome, FF5 e Safari.

Ideias? Está actualizado com a versão Alpha3.

<< I tried others - still returned to Drupal. >>

Usa as versões dev

perusio's picture

do Panels e do CTools. Com essas funciona.

Algumas sugestões

camorim's picture

Olá

Há coisas nada simpáticas no Drupal, e esta é uma delas. O modo taxonomia não faz isto de bandeja.

  1. A forma mais simples de resolver o problema e recomendo-ta se puderes, é permitires na criação do teu field Term reference no content type que sejam introduzidos mais que um termo, tendo de haver o cuidado de selecionar o parent e o child pretendidos.

  2. No Views, chamar o Taxonomia termo: pai nas relações. Entretanto, incluir o term reference: name na área fields duas vezes, um com a relação, outro sem relação. No primeiro caso, apresenta o termo parent, no segundo, o termo child Depois com o css, coloca-os todos inline ou destaques diferentes.

Estive a ver a API e o mais diretamente relacionado é: taxonomy_get_parent, taxonomy_get_parents_all, taxonomy_get_childs, dependendo da base de partida.

Espero que não seja problemático permitir mais que um termo na criação do nó, senão segue para o views. Vou entretanto vendo se existe uma forma otimizada de o fazer...

Dar a volta...

bmateus's picture

Antes de mais, obrigado a todos.

Bem, acabei por dar a volta de outra forma, usando um pouco da sugestão da camorim.

Como estou a utilizar o módulo Hierchical Select para a edição da taxonomia com hierarquia, activei a opção "multi-terms", e seleciono individualmente o termo pai, o filho e o final. (tenho de fazer a assignação 3 vezes, uma para cada termo).

Assim já consigo ver (e selecionar num menu) a hierarquia.
Apesar do problema manter-se se apenas seleciono o termo final, e da solução ser deselegante (se fosse um cliente não ia gostar, né?), funciona.

Mais tarde tentarei perceber porque tenho de assignar os 3 niveis. Se conseguir arranjar forma de indicar que cada nível também é um termo, fico safo.

Obrigado pela ajuda.

<< I tried others - still returned to Drupal. >>

Gerar um código

bmateus's picture

Continuando com a taxonomia, e utilizando a mesma taxonomia acima descrita, gostaria de criar um código automático que fosse preenchido num campo do nodo. Por exemplo, para um nodo classificado sob os termos "hierarquizados"

ALOJAMENTO X (nivel1) > Localização Y (nivel 2) > Descritivo Z (nivel 3)

e em que

ALOJAMENTO = ACC
Localização Y = LOY
Descritivo Z = DEZ

o nodo preenchia automaticamente um campo com o resultado final ACC-LOY-DEZ-01 (01 é um número inteiro com serialização automática para items da mesma classificação - portanto se existir outro código alfabetico igual).

Como acham que seria a melhor forma de fazer isto?
Eu pensei em criar um campo extra no type da taxonomia do vocabulário necessário.
Assim, pelo menos consigo definir os códigos abreviados necessários para cada termo.

O campo no content type dos nodos que preciso também é simples, mas o seu preenchimento automático é que não.

Devo:

  • usar um trigger ou semelhante, para chamar código php, quando estou a criar um nodo
  • ou devo usar um Computed field?
  • ou é melhor fazer mesmo um módulo, pois vai dar água pela barba?

Aceitam-se sugestões :)

<< I tried others - still returned to Drupal. >>