簡體   English   中英

Drupal HOOK_views_pre_render對於$ views-> result的簡單更改不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM