Görünümlerde tekli özel alan değeri nasıl değiştirilir?


11

Bağlantı olarak değiştirilmiş Global: Özel Metin alanı ile bir görünüm var. Başka bir alanın değerine bağlı olarak, bu bağlantıyı oluşturmak için değiştirme jetonlarını değiştirmek istiyorum.

Bunu hook_views_pre_render'da değiştirmeyi denedim ama bunu yapmanın bir yolunu bulamıyorum.

Hook_views_post_render öğesinde iki dizi vardır:

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

her satır için oluşturulmuş bağlantılar içerir, ancak bunlar pre_render'da mevcut değildir ve post_render'da değiştirmek işe yaramaz.

Ben de template_preprocess_views_view_fields bunu yapmaya çalıştım ama bu belirli görünüm için bu işlevi (diğer görünümler için) ateş değil ve neden bilmiyorum.

Yanıtlar:


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;
  }
}

Daha fazla ayrıntı için bağlantıyı kontrol edin Genel özel metin görünüm alanına programlı olarak değerler nasıl eklenir?

görünümünde nid olarak alan ekleyin ve aşağıdaki gibi koşul ekleyebilirsiniz için koşul için bu alanı kullanın: if ($nid == '124') { $view->field['nothing']->options['alter']['text'] = $nid}

Basit bir yol, görünümü kontrol ederseniz yeni bir alan olarak field_waga_1 olan yeni bir field_waga alanı oluşturmaktır ve daha sonra etiketi değiştirebilir ve bu alanı özel değerinizle geçersiz kılabilirsiniz

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';
}

Bu çözüm her alanı 'Özel metnim' olarak değiştirir, yalnızca seçilen alanları değiştirme ve bu şekilde bir bağlantıyı (alan bir bağlantı olarak görüntülenecek şekilde değiştirilirse) değiştirme seçeneğini göremiyorum. Maalesef, sağladığınız bağlantıda belirtilen bir preprocess_views_view_fields () işlevini kullanamıyorum, çünkü bilinmeyen (benim için;)) bu nedenle bu işlev bu özel görünüm için tetiklenmedi.
dmk.it

aşağıdaki gibi koşul ekleyebilirsiniz: if ($ nid == '124') {$ view-> field ['hiçbir şey'] -> seçenekler ['alter'] ['metin'] = $ nid}
harshal

güncellenmiş cevabı kontrol et
harshal

Bu şekilde koşul eklendi: if ($ view-> sonuç [0] -> field_waga [0] ['raw'] ['değer'] == '10') {$ view-> alan ['hiçbir şey'] - > seçenekler ['alter'] ['metin'] = 'ALTER'; } İlk satırda tüm alanlardan '10' değeri varsa 'hiçbir şey' değeri 'ALTER' değerine sahiptir. Sadece ilk değil, tüm satırlar maalesef. Bence bu küresel bir değişim ve seçilen sıralar için kullanılamaz.
dmk.it

1
Hayır, yalnızca add alanını kullanarak daha önce sahip olduğunuz bir field_waga ekleyin ve ardından özel değerlerinizi girmek için bu alanı özel alan olarak kullanın
harshal

0

Yukarıdaki cevaba bir güncelleme olarak, bunun çalışması için 'alter_text' değerini TRUE olarak ayarlamam gerekiyordu, örneğin:

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;
  }
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.