Eu tenho um módulo personalizado que está formatando a exibição de um campo de imagem, que pode aceitar vários valores. Gostaria de saber qual gancho devo usar para duplicar o primeiro valor do campo (por exemplo, "[imagem1]") e adicioná-lo de volta ao início da matriz ( array_unshift()
acho que) antes que o restante de minhas funções formate o exibição / tema do campo.
Então o que foi
- [imagem1]
- [imagem2]
- [imagem3]
torna-se
- [imagem1]
- [imagem1]
- [imagem2]
- [imagem3]
Vou então descrevê-los separadamente, mas acho que já tenho essa parte.
Atualmente hook_field_formatter_view()
, estou usando e tentei adicioná-lo ao início da $items
matriz na parte superior da função, mas isso não pareceu funcionar. Se eu imediatamente mostrar dprint_r()
o $items
array depois disso, mas apenas 3 itens serão exibidos; Estou assumindo que o número de campos seja determinado em outro lugar.
hook_field_formatter_view
mas ele é executado apenas uma vez por imagem.Respostas:
Você deseja que hook_field_formatter_prepare_view () . Observe que esse gancho opera em um grupo de entidades, não em um único.
Aqui está um trecho de trabalho. É necessário algum array-fu para não acabar escrevendo um loop feio de dez linhas, pois os deltas devem ser preservados lineares.
fonte
hook_field_formatter_view()
é onde seu código produz a saída mostrada ao usuário e, portanto, deseja uma matriz renderizável como valor de retorno. Portanto, apenas processe a primeira imagem duas vezes e forneça uma classe css diferente ou algo assim.Algo como:
Como
hook_field_formatter_view()
espera uma matriz renderizável e como matrizes renderizáveis são marcadas como renderizadas quando renderizadas, simplesmente fazer duas referências ao mesmo objeto fará com que uma seja renderizada, marcada como renderizada e, posteriormente, ignorada na próxima vez.fonte