Як змінити єдине спеціальне значення поля у поданнях?


11

Я маю представлення з полем Global: Користувацький текст, який модифікується як посилання. Я хочу змінити маркери заміни для генерації цього посилання залежно від значення іншого поля.

Спробував змінити це в moque_views_pre_render, але я не можу знайти спосіб це зробити.

У mock_views_post_render є два масиви:

$view->style_plugin->render_tokens
$view->style_plugin->row_tokens

які містять згенеровані посилання для кожного рядка, але вони відсутні в pre_render, і змінити їх у post_render не працює.

Я також намагався зробити це в template_preprocess_views_view_fields, але для цього конкретного перегляду ця функція не спрацьовує (для інших переглядів це), і я не знаю чому.

Відповіді:


16
function hook_views_pre_render(&$view) {

  switch ($view->name) {
    case 'YOUR_VIEW_NAME':
      //  override the global custom text field value
      $view->field['nothing']->options['alter']['text'] = 'My custom text';
    break;
  }
}

Перевірте посилання, щоб отримати докладніші відомості Як програмно вставляти значення у глобальне спеціальне текстове поле переглядів?

додати nid як поле для перегляду та використовувати це поле для умови, ви можете додати умову наступним чином: if ($nid == '124') { $view->field['nothing']->options['alter']['text'] = $nid}

Простий спосіб - створити нове поле field_waga, яке матиме field_waga_1 як нове ім'я, якщо ви перейдете на перегляд, а потім зможете змінити мітку та замінити це поле зі своїм власним значенням

if($view->result[0]->field_waga[0]['raw']['value'] == '10') {
//here you can create the field to act as custom text field and enter the custom //value
$view->result[0]->field_waga_1[0]['#markup'] = 'alter';
}

Це рішення змінює кожне поле на "Мій власний текст", я не бачу можливості змінити лише вибрані поля та змінити посилання (якщо поле модифіковане для відображення як посилання) таким чином. На жаль, я не можу використовувати функцію preprocess_views_view_fields (), яка згадується у наданому вами посиланні, оскільки з невідомої (для мене;) причини цієї функції не запускається для цього конкретного подання.
dmk.it

ви можете додати умову таким чином: якщо ($ nid == '124') {$ view-> поле ['нічого'] -> параметри ['alter'] ['text'] = $
nid

перевірити оновлену відповідь
суворий

Додано умову таким чином: якщо ($ view-> результат [0] -> field_waga [0] ['raw'] ['value'] == '10') {$ view-> field ['нічого'] - > параметри ['alter'] ['text'] = 'ALTER'; } Якщо в першому рядку є значення "10", ніж усі поля "нічого" не має значення "ALTER". На жаль, не тільки перші, але й усі ряди. Я думаю, що це глобальна зміна, і її не можна використовувати для обраних рядків.
dmk.it

1
Не просто додайте field_waga, який у вас уже є, використовуючи поле add, а потім використовуйте це поле як власне поле для введення своїх спеціальних значень
жорстокий

0

Як оновлення до вищевказаної відповіді, мені довелося встановити "alter_text" на TRUE, щоб це працювало, наприклад:

function hook_views_pre_render(&$view) {

  switch ($view->name) {
    case 'YOUR_VIEW_NAME':
    //  override the global custom text field value
    $view->field['nothing']->options['alter']['text'] = 'My custom text';
    $view->field['nothing']->options['alter']['alter_text'] = TRUE;

    break;
  }
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.