skip to Main Content

I want to put a capital letter at the beginning of each word in the variable {{ article.author }} thanks to the script at the bottom of the page which works because I am fetching the variable with capital letters in the console.

enter image description here

But I don’t poorly understand the variable is displayed in uppercase on the site.

Name of author in uppercase

For CSS : enter image description here

Do you have an idea ?

{%- if article and article != empty -%}
  {%- liquid
    assign ratio = 1
    if media_aspect_ratio != nil
      assign ratio = media_aspect_ratio
    endif
  -%}
  <div class="card-wrapper underline-links-hover">
    {% comment %} <article aria-labelledby="Article-{{ article.id }}"> {% endcomment %}
    <div class="card article-card
      card--{{ settings.card_style }}
      {% if media_height and media_height != 'adapt' %} article-card__image--{{ media_height }}{% endif %}
      {% if article.image and show_image %} card--media{% else %} card--text{% endif %}
      {% if settings.card_style == 'card' %} color-{{ settings.card_color_scheme }} gradient{% endif %}
      {% if settings.card_style == 'card' and media_height == nil and article.image == empty or show_image == false %} ratio{% endif %}"
      style="--ratio-percent: {{ 1 | divided_by: ratio | times: 100 }}%;"
    >
      <div class="card__inner {% if settings.card_style == 'standard' %} color-{{ settings.card_color_scheme }} gradient{% endif %}{% if article.image and show_image or settings.card_style == 'standard' %} ratio{% endif %}" style="--ratio-percent: {{ 1 | divided_by: ratio | times: 100 }}%;">
        {%- if show_image == true and article.image -%}
          <div class="article-card__image-wrapper card__media">
            <div class="article-card__image media media--hover-effect" {% if section.settings.media_height == 'adapt' %} style="padding-bottom: {{ 1 | divided_by: article.image.aspect_ratio | times: 100 }}%;"{% endif %}>
              {% comment %}theme-check-disable ImgLazyLoading{% endcomment %}
              <img
                srcset="{%- if article.image.src.width >= 165 -%}{{ article.image.src | image_url: width: 165 }} 165w,{%- endif -%}
                  {%- if article.image.src.width >= 360 -%}{{ article.image.src | image_url: width: 360 }} 360w,{%- endif -%}
                  {%- if article.image.src.width >= 533 -%}{{ article.image.src | image_url: width: 533 }} 533w,{%- endif -%}
                  {%- if article.image.src.width >= 720 -%}{{ article.image.src | image_url: width: 720 }} 720w,{%- endif -%}
                  {%- if article.image.src.width >= 1000 -%}{{ article.image.src | image_url: width: 1000 }} 1000w,{%- endif -%}
                  {%- if article.image.src.width >= 1500 -%}{{ article.image.src | image_url: width: 1500 }} 1500w,{%- endif -%}
                  {{ article.image.src | image_url }} {{ article.image.src.width }}w"
                src="{{ article.image.src | image_url: width: 533 }}"
                sizes="(min-width: {{ settings.page_width }}px) {{ settings.page_width | minus: 100 | divided_by: 2 }}px, (min-width: 750px) calc((100vw - 130px) / 2), calc((100vw - 50px) / 2)"
                alt="{{ article.image.src.alt | escape }}"
                class="motion-reduce"
                {% unless lazy_load == false %}loading="lazy"{% endunless %}
                width="{{ article.image.width }}"
                height="{{ article.image.height }}"
              >
              {% comment %}theme-check-enable ImgLazyLoading{% endcomment %}
            </div>
          </div>
        {%- endif -%}
        <div class="card__content">        
          <div class="card__information">
            <h3 class="card__heading{% if show_excerpt %} h2{% endif %}">
              <a href="{{ article.url }}" class="full-unstyled-link">
                {{ article.title | truncate: 50 | escape }}
              </a>
            </h3>
            <div class="article-card__info caption-with-letter-spacing h5">
              {%- if show_date -%}
                <span class="circle-divider">{{ article.published_at | time_tag: '%d/%m/%Y' }}</span>
              {%- endif -%}
              {%- if show_author -%}
                <span id="blog_author">{{ article.author }}</span>
              {%- endif -%}
            </div>
            {%- if show_excerpt -%}
              {%- if article.excerpt.size > 0 or article.content.size > 0 -%}
                <p class="article-card__excerpt rte-width">
                  {%- if article.excerpt.size > 0 -%}
                    {{ article.excerpt | strip_html | truncatewords: 30 }}
                  {%- else -%}
                    {{ article.content | strip_html | truncatewords: 30 }}
                  {%- endif -%}
                </p>
              {%- endif -%}
              <div class="article-card__footer">
                {%- if article.comments_count > 0 and blog.comments_enabled? -%}
                  <span>{{ 'blogs.article.comments' | t: count: article.comments_count }}</span>
                {%- endif -%}
              </div>
            {%- endif -%}
          </div>
          {%- if show_badge -%}
            <div class="card__badge {{ settings.badge_position }}">
              <span class="badge color-background-1">{{ 'blogs.article.blog' | t }}</span>
            </div>
          {%- endif -%}
        </div>
      </div>
      <div class="card__content">
        <div class="card__information">
          <h3 class="card__heading{% if show_excerpt %} h2{% endif %}">
            <a href="{{ article.url }}" class="full-unstyled-link">
              {{ article.title | truncate: 50 | escape }}
            </a>
          </h3>
          <div class="article-card__info caption-with-letter-spacing h5">
            {%- if show_date -%}
              <span class="circle-divider">{{ article.published_at | time_tag: '%d/%m/%Y' }}</span>
            {%- endif -%}
            {%- if show_author -%}
              <span id="blog_author">{{ article.author }}</span>
            {%- endif -%}
          </div>
          {%- if show_excerpt -%}
            {%- if article.excerpt.size > 0 or article.content.size > 0 -%}
              <p class="article-card__excerpt rte-width">
                {%- if article.excerpt.size > 0 -%}
                  {{ article.excerpt | strip_html | truncatewords: 30 }}
                {%- else -%}
                  {{ article.content | strip_html | truncatewords: 30 }}
                {%- endif -%}
              </p>
            {%- endif -%}
            <div class="article-card__footer">
              {%- if article.comments_count > 0 and blog.comments_enabled? -%}
                <span>{{ 'blogs.article.comments' | t: count: article.comments_count }}</span>
              {%- endif -%}
            </div>
          {%- endif -%}
        </div>
        {%- if show_badge -%}
          <div class="card__badge {{ settings.badge_position }}">
            <span class="badge color-background-1">{{ 'blogs.article.blog' | t }}</span>
          </div>
        {%- endif -%}  
      </div>
    </div>
  </div>
{%- endif -%}


<script>
    const elmBlogAuthor = document.getElementById("blog_author");
    const oldName = elmBlogAuthor.innerText;
    const newName = oldName.toLowerCase().replace(/bw/g, chr => chr.toUpperCase());
    elmBlogAuthor.innerText = newName; // update the element contents

    console.log(oldName, "->", newName);
</script>

2

Answers


  1. You never update the actual element contents:

    <script>
    var span = document.getElementById("blog_author").innerText.toLowerCase().replace(/b(w)/g, x => x.toUpperCase());
      console.log(span);
    </script>
    

    The code above takes the contents of #blog_author. The text (not the element) is then modified and stored in the span variable, but the text contents of #blog_author is never updated.

    To solve this issue you should reassign the text to the element.

    <script>
    const elmBlogAuthor = document.getElementById("blogAuthor");
    const oldName = elmBlogAuthor.innerText;
    const newName = oldName.toLowerCase().replace(/bw/g, chr => chr.toUpperCase());
    elmBlogAuthor.innerText = newName; // update the element contents
    
    console.log(oldName, "->", newName);
    </script>
    
    Login or Signup to reply.
  2. If I understand well, author var is encoded with caps in Liquid data source.

    I’d say something like that should work (not tested):

    {% liquid
        assign author = article.author | downcase
        assign author_parts = author | split:' '
        for part in author_parts
            echo part | capitalize | append: ' '
        endfor
    %}
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search