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.

¿Cómo puedo poner en minúscula un array de etiquetas de un artículo que está en bucle en código líquido de Shopify?

Estoy intentando iterar sobre los artículos en un blog para ver si el artículo.tags contiene alguno de los valores en taggs, donde taggs es un array que será proporcionado por el usuario. Quiero obtener un array de artículos relacionados por etiqueta.

A continuación se muestra mi código de ejemplo:

{% assign taggs = "Camiseta,bolso,cartera,bandolera" | split: "," %}
{%- assign length = b_s.related_article_blog_count | plus: 0 -%}
  {% capture fourthtag %}{{ taggs[3] | downcase }}{% endcapture %}
    <div class="jj-post-content">
      <div class="item">
        {%- for article in blogs[blog].articles limit: length -%}
          {% if article.tags contains fourthtag %}
            <a href="{{ article.url }}">
              <div class="jj-title">{{ article.title }}</div>
            </a>
          {%- endif -%}
        {%- endfor -%}
       </div>
      </div>

Cuando ejecuto el código, no se muestra ningún resultado. Pero cuando convertí las etiquetas del artículo a minúsculas, obtuve todos los artículos filtrados como se esperaba. Dado que muchos de los usuarios pueden no estar creando etiquetas en minúsculas, necesito una forma de convertir a minúsculas el article.tags dentro del bucle.

Intenté {% capture atc %}{{ article.tags | downcase }}{% endcapture %} antes del bucle, pero no funcionó.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para convertir a minúsculas las article.tags del bucle, puedes utilizar el filtro downcase en cada etiqueta y luego verificar si el array resultante de etiquetas contiene alguno de los valores del array taggs utilizando el método intersect.

    Aquí está el código modificado:

    {% assign taggs = "Camiseta,bolso,cartera,bolso de mano" | split: "," %}
    {%- assign length = b_s.related_article_blog_count | plus: 0 -%}
      <div class="jj-post-content">
        <div class="item">
          {%- for article in blogs[blog].articles limit: length -%}
            {% assign article_tags = article.tags | split: "," %}
    
            {% if article_tags | map: 'downcase' | intersect: taggs | size > 0 %}
              <a href="{{ article.url }}">
                <div class="jj-title">{{ article.title }}</div>
              </a>
            {%- endif -%}
          {%- endfor -%}
         </div>
        </div>      
    

    En el código modificado, article.tags se divide en un array de etiquetas utilizando el filtro split. Luego, en este array de etiquetas, se utiliza el filtro map para aplicar el filtro downcase en cada etiqueta. El array resultante se verifica luego para obtener la intersección con el array taggs utilizando el método intersect. Si la intersección tiene algún elemento, entonces se considera que el artículo está relacionado y se muestra su título y URL.

Comments are closed.