web-dev-qa-db-fra.com

Comment insérer des valeurs dans le champ de texte personnalisé global des vues par programme?

Comment puis-je insérer par programme des valeurs dans le champ de texte personnalisé Global à partir des vues. J'ai essayé d'utiliser la variable $ views à partir des hook_views_pre_render (& $ views) et my_theme_name_process_function (& $ vars) mais je n'ai pas réussi à obtenir la valeur? Lorsque j'essaie un champ simple, je peux insérer du HTML dans le balisage par programme.

$view = view Object
(
    [db_table] => views_view
    [base_table] => node
    [base_field] => nid
    [name] =>view_name
    [vid] => 3
    [description] => 
    [tag] => default
    [human_name] => view_name
    [core] => 7
    [api_version] => 
    [disabled] => 
    [editing] => 
    [args] => Array
    (
        )

    [use_ajax] => 
    [result] => Array

  [result] => Array
        (
            [0] => stdClass Object
                   [field_field_final_ort] => Array
                            (
                                [0] => Array
                                    (
                                        [rendered] => Array
                                            (
                                                     ['#markup'] => YES     

Je souhaite également modifier la valeur du champ de texte personnalisé GLOBAL à l'aide de l'objet vues, mais il n'y a pas un tel tableau pour le champ de texte personnalisé global.
Comment changer cela?

Mon code était

function my_themename_process_views_view_field(&$vars) {

  if ($vars['view']->name == 'view_name') {
foreach( $vars['view']->result as $key => $value) { 
$value->field_name[0]['rendered']['#markup'] = '';
}

}

Je veux appliquer ce code similaire pour le champ de texte personnalisé global mais il n'y a pas de suxh disponible dans le tableau de résultats

Comment puis-je modifier les valeurs de chaque ligne de la valeur globale du champ de texte personnalisé? La réponse donnée ci-dessous donne les mêmes valeurs pour chaque ligne.

6
harshal

Vous devriez pouvoir le faire avec hook_views_pre_render () . Veuillez essayer le code suivant:

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

Si la valeur globale du texte personnalisé doit être différente pour chaque résultat d'affichage, vous pouvez la configurer à l'aide de modèles de remplacement.

enter image description here

Afin d'insérer par programme des valeurs dans le champ de texte personnalisé global, vous pouvez utiliser template_preprocess_views_view_fields ()

function YOUR_THEME_preprocess_views_view_fields(&$vars) {
  $view = $vars['view'];

  foreach ($view->field as $id => $field) {

    // The global custom text content
    $vars['fields']['nothing']->content = 'Some global custom text content';

    // change the global custom text content depend on result (node id)
    if ($vars['row']->nid == 10) $vars['fields']['nothing']->content = 'CHANGED';
  }
}
14
Jack-PL