Bom dia,
estou a tentar criar uma listagem de ultimas mas que não consigo relacionar com um field que existe no artigo principal.
Explicando melhor:
estou a ver um artigo num página e esse artigo tem um field com uma designação
exemplo:
Nome do Programa: XPTO
quando estou a visualizar esse artigo,
na coluna direita gostaria que me aparece-se todos os artigos que tenham o mesmo field XPTO, mas a verdade é que não estou a ver como.
Uma das soluções penso que é passar pelo url do artigo, mas mesmo no url o field é composto com outra estrutura. No url não aparece só o "XPTO", aparece "pXPTO".
Assim sendo, existe alguma forma de criar a listagem de ultimas a partir de um field do artigo principal.
Abraço e obrigado,

Comments
view contextual filter
a meu ver penso que é pelo contextual filter, através do PHP code. Todavia, parece que o PHP Code não funciona. Alguém sabe o porquê?
António Manuel Cardoso
Filtro por termos no node
O contextual filter de que precisas é o que se chama: "Content: Has taxonomy term ID". Nas opções do filtro, escolhe "Provide default value" e activa a opção "Load default filter from node page, that's good for related taxonomy blocks". Na lista, escolhe os termos por que queres filtrar.
Parece que não funciona
Quando escolho "Provide default value", qual é type que depois seleciono?
É que não está a funcionar?
Nota: o field que quero que relacione não passa no url, mas faz parte do artigo que estou a ver. Na coluna da direita é que depois vais aparecer todos os artigos que têm esse mesmo valor no field.
Abraços e obrigado.
António Manuel Cardoso
Type do filtro
O type de que precisas é o "taxonomy Term ID from URL". Apesar de não vir da URL, a view vai buscar os dados ao $node quando se liga a opção "Load default filter from node page, that's good for related taxonomy blocks".
Escolher o field
mas como é que escolho o field do node que pretendo?
António Manuel Cardoso
Não tens de escolher o field
Não tens de escolher o field, ele faz a associação pelos termos dos vocabulários seleccionados (suponho que internamente use o array $node->taxonomy, mas é mesmo só uma suposição).
mas a associação não é um termo
Bom dia torvall, mas eu não quero associar um termo, ou seja, o que pretendo associar não tem a ver com a taxonomia, mas sim um field que é preenchido com um nome/numero. Esse nome/numero não vem no url.
António Manuel Cardoso
Boas, Pelo que percebi, a
Boas,
Pelo que percebi, a minha abordagem seria a seguinte:
_get_related_content_type_A();_get_related_content_type_A();podes definir num módulo custom ou até mesmo no template.php do temafunction _get_related_content_type_A() {$nid = arg(1); // Vai buscar o 2o argumento da url, que neste caso é 'node/[nid]'
$node = node_load($nid); // Carregas o node para esta variavel
$value = $node->field_X['und'][0]['value']; // O ideal aqui seria usar o devel para ver exactamente onde esta localizado o valor do campo no node. Habitualmente terá esta hierarquia.
return $value
}
A ver se isto resulta para o teu caso.
Abraço
Atenção aos get arg...
Lerem argumentos directamente dos urls sem os "sanitizarem" é abrir brechas de segurança nos vossos sites...
Em vez disso, se tens um node, e se é um campo que queres obter o valor escolhes o devido campo como argumento e utilizas o php
<?phpif (arg(0) == 'node' && is_numeric(arg(1))) {
$node = node_load(arg(1));}
if (isset($node->field_exemplo['und'][0]['value'])) { return $node->field_exemplo['und'][0]['value'];
} else {
return FALSE;
}
?>
muda o field_exemplo para o nome do teu field
Desta forma fazes tudo internamente e com menor risco de segurança
Uma outra maneira de aceder
Uma outra maneira de aceder ao node actual, se não quiseres estar a usar args da url poderá ser:
$menu = menu_get_item();
$node = array_shift($menu['page_arguments']); // Node actual