es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Etiqueta de control de repetidor Elementor desde una etiqueta de control de selección

Tengo un controlador REPEATER que tiene un control SELECT que se utiliza para seleccionar una página de WordPress. Quiero asegurarme de que la etiqueta del repetidor sea el título de la página. Mi script devuelve un objeto Javascript en lugar del título de la página. Aquí está mi código:

$page_list = \CoreElementorExtensions::coreget_pages();

$page_list_json = json_encode($page_list);

$repeater->add_control(
    'posts_pages',
    [
        'label' => esc_html__('Pages', 'core'),
        'type' => Controls_Manager::SELECT,
        'options' => $page_list,
        'label_block' => true,
        'multiple' => false,
    ]
);

$this->add_control(
    'core_page_list',
    [

        'label' => __('Content', 'core'),
        'type' => Controls_Manager::REPEATER,
        'fields' => $repeater->get_controls(),
        'title_field' => "<# let labels = #>{$page_list_json}<# ;> // Ahora las etiquetas están disponibles para Javascript
            <# let key = '{{ posts_pages }}'; >
            <# let label = labels[key]; #>
            <#= label #>",
    ]
);

El {{{ label }}} devuelve { "11": "Título de la página", "22": "Título de la página 2" } 8888, los 8888 en realidad es el <code>'{{ posts_pages }}'</code> en el valor <code>the_field</code> que estaba intentando usar como CLAVE para acceder al objeto Js devuelto anteriormente.

No estoy muy familiarizado con la plantilla underscorejs.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para asegurarse de que la etiqueta repetidora sea el título de la página, es necesario modificar el código de la plantilla en el 'title_field' del método add_control.

    En lugar de devolver el objeto Javascript, se puede utilizar la plantilla underscore.js para acceder al título de la página en función del valor seleccionado en el control de selección.

    Aquí tienes un ejemplo de cómo puedes modificar el código de la plantilla:

    "{{ _.each(posts_pages, function(value, key) { }}"
    + "<# if (key == thisIndex) { #>"
    + "{{{ value }}} "
    + "<# } #>"
    + "{{ }); }}"
    

    Este código recorrerá el objeto posts_pages y comprobará si la clave actual (key) es igual a thisIndex (el índice del elemento repetidor actual). Si coinciden, devolverá el value de la página seleccionada, que debería ser el título de la página.

    Puedes reemplazar el código existente del campo title_field con este código y probarlo. Avísanos si tienes algún problema o pregunta.

Comments are closed.