Estou começando a usar este formulário para acessar dados no meu módulo. (Veja o comentário nº 1 ).
$node->field_test[$node->language][0]['value']
Eu pensei que parecia uma solução muito boa, mas mais abaixo nessa mesma pergunta eu encontrei o seguinte :
Não assuma que 'und' é para campos de entidades sem idioma, é também para campos que não são traduzíveis e sem o módulo de conversão de entidades que é todos os campos. Além disso, existem diferenças entre as várias versões 7.x do Drupal.
Melhor usar afield_get_items()
função que classificará para você sob qual código de idioma os dados são armazenados.
E agora não sei se o que estou usando pode quebrar algo na estrada.
entity_metadata_wrapper()
foi preterida? Tentei chamar isso no meu módulo e obtiveFatal error: Call to undefined function entity_metadata_wrapper()
- também fiz uma pesquisa de fontes na minha instalação do Drupal 7.12 no Dreamweaver e obtive 0 resultados em qualquer outro lugar do código!$node->field_name[LANGUAGE_NONE][0]['value'] = 'foo';
é realmente a maneira mais eficiente.Para leitura, você sempre deve poder usar field_get_items () , que escolherá o idioma correto para você e também verificará se o campo possui algum valor.
Infelizmente, a API do campo é muito limitada no 7.x, não há como obter, por exemplo, o primeiro item do campo, nem se atreva a perguntar sobre obter o valor com uma única chamada de função ... E não há field_set_items ( ) contraparte.
Então, sim, módulo entidade API faz fornecer uma API mais agradável com a desvantagem de que ele também vem com um pouco de sobrecarga (basicamente converte cada valor único de objetos de mensagens publicitárias que têm toneladas de informações de propriedade aninhada matrizes anexados a eles). Tentar despejar um wrapper de entidade geralmente não oferece nada ou uma parede de matrizes ilegíveis.
fonte
fonte