[英]Drupal HOOK_views_pre_render not working for simple change of $views->result
好幾天來,我的小自定義模塊都找不到問題了,我希望有個聰明,友善的人可以發現我的問題;)
因此,我正在創建一個在特定視圖類型上運行的簡單模塊,該視圖包含圖像,圖像具有alt標簽,我想使用url別名修改這些alt標簽,並將其粘貼在alt標簽的末尾。
我已經成功地在$ view數組中找到了數據,並且如上所述遍歷了所有圖像實例,並知道這樣做是有效的,因為我已經將它們打印到了頁面上。
但是,它並沒有更新實際頁面上的視圖,alt標簽保持不變...請原諒我的無知,因為我正在學習PHP,而多維鍵控數組也需要花費一些時間。
那么,alt標簽(對象)的變量是什么? 我認為這是錯誤的,但是無論如何..這個變量是..
$view->result[0]->_field_data['nid']['entity']->field_image_front_menu['und'][0]['alt']
...正在被更改,該函數內部的一切似乎都很好,我已經嘗試過
return $view
但無濟於事。
這是我的全部代碼
<?php
function image_alt_tag_alter_views_pre_render(&$view) {
if ($view->name == "we_print_for_menu") {
$path = arg(0) . "/" . arg(1);
$alias = drupal_get_path_alias($path);
// loops through index in array to change each alt tag
for ($i = 0; $i < count($view->result); ++$i) {
$view->result[$i]->_field_data['nid']['entity']->field_image_front_menu['und'][0]['alt'] = $view->result[$i]->_field_data['nid']['entity']->field_image_front_menu['und'][0]['alt'] . $alias;
}
return $view;
?>
<?php
function image_alt_tag_alter_views_post_execute(&$view) {
global $user;
if ($view->name == "we_print_for_menu") {
path = arg(0) . "/" . arg(1);
$alias = drupal_get_path_alias($path);
dsm($view);
for ($i = 0; $i < count($view->result); ++$i) {
$amended_alt = $view->result[$i]->_field_data['nid']['entity']->field_image_front_menu['und'][0]['alt'] . " " . $alias;
$view->result[$i]->_field_data['nid']['entity']->field_image_front_menu['und'][0]['alt'] = $amended_alt;
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.