drupal 7 – ¿Cómo modificar los valores de los campos en una página de visualización?

Pregunta:

Estoy tratando de alterar los valores de campo en la visualización de una página. Puedo obtener los valores de campo fácilmente usando field_get_items () , pero dependiendo de los valores de otros campos, es posible que deba manipular el texto y / o mostrarlo en función de la lógica de PHP en mi archivo de plantilla. Estoy tratando de hacerlo usando hook_page_alter () o hook_preprocess_HOOK () .

No puedo modificar el texto cuando la página se muestra usando hook_page_alter() o hook_preprocess_HOOK() . Puedo confirmar que esas 2 funciones están funcionando y que puedo extraer los valores de la base de datos ( $page['content'] ), pero no puedo anular la variable para configurarlos. Por ejemplo:

function standard_submission_page_alter(&$page) {
    $node = menu_get_object();
    $page['content']['system_main']['nodes'][$node->nid]['field_title_nickname']['#items'][0]['value'] = 'A new nickname title!';
}

function standard_submission_preprocess_page(&$vars) {
    $vars['node']->field_title_nickname['und'][0]['value'] = 'A new nickname title 2x';
}

¿Alguna idea sobre por qué mi alteración de este valor de campo de texto field_title_nickname no se acepta ni se muestra? Sigue volviendo a lo que estaba originalmente en la base de datos.

Respuesta:

Si necesito manipular el texto y / o la visualización en función de alguna lógica de PHP, lo haría usando hook_node_view () en un módulo personalizado, no en un archivo de plantilla.

function MYMODULE_node_view($node, $view_mode = 'full', $langcode = NULL) {
    if( $view_mode == 'full' ){
        if( some conditions here ){
            $node->content['field_title_nickname'] = array(
                '#markup' => '<div>A new nickname title 2x</div>'
            );
        }
    }
}

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top

web tasarım