Warm tip: This article is reproduced from stackoverflow.com, please click
shopify shopify-template

Shopify adding .text-link class to button when .btn is only class defined

发布于 2020-04-23 11:57:35

While customizing a Shopify page, I've added a dynamic button with the class of only

{% if section.settings.button_label != blank and section.settings.button_link != blank %}
         <a href="{{ section.settings.button_link }}" class="btn">
           {{ section.settings.button_label | escape }}
         </a>
{% endif %}

However, when the page loads, it has now appended .text-link to my button classes, overriding the styling of the button.

    a.btn.text-link {
      -webkit-appearance: none;
    background-color: #2c2d36;
    background-image: none;
    border: 1px solid transparent;
    border-bottom: 1px solid #2c2d36;
    border-radius: 0;
    box-sizing: border-box;
    color: #fff;
    cursor: pointer;
    display: inline-block;
    font-family: Futura,sans-serif;
    font-size: .8125em;
    font-weight: 700;
    letter-spacing: .1em;
    line-height: 1.42;
    margin: 0;
    padding: 8px 10px;
    text-align: center;
    text-decoration: none;
    text-transform: uppercase;
    transition: background-color .4s ease-out;
    user-select: none;
    vertical-align: middle;
    white-space: normal;
    width: auto;
    }

Anyone have a sense of where I should be looking to stop this from appending to my single class?

Link: https://shop.creekretreat.com/pages/services (Group of buttons on first image/text section)

Thanks in advance, much appreciated.

K

Questioner
Kyle H.
Viewed
17
drip 2020-02-09 01:26

There is a JS function in your theme.js which is doing this:

theme.styleTextLinks = function() {
  $('.rte').find('a:not(:has(img))').addClass('text-link');
};

This function is called in the theme.init method:

theme.init = function() {
  theme.initCache();
  theme.setBreakpoints();
  theme.fitNav();
  theme.cartInit();
  theme.afterCartLoad();
  theme.checkoutIndicator();
  theme.returnLink();
  theme.styleTextLinks(); <----- here
  ......

You will need to update the JS to fit your needs or remove this logic all together.