Need Help Reordering Footer Layout in Dawn Theme

Need Help Reordering Footer Layout in Dawn Theme

Mehdiela1
Visitor
2 0 3

Hi everyone,
I'm customizing my store using the Dawn theme, and I’m facing a layout issue in the footer.

I would like the policy pages (like Terms & Conditions, Shipping Policy, etc.) to appear at the very bottom of the page, below everything else, including the email subscription form.

Right now, they’re displayed above the email signup section, and I can’t drag or reposition them from the theme editor. I’ve already removed the extra email subscription block that was showing twice, but I still want the policies to be moved lower for a cleaner layout.

I reached out to Shopify support, but even their specialist team couldn't assist, as they said it's outside their scope and suggested I ask here in the Community.

I haven’t made any code changes to the theme myself.

Any help or ideas would be greatly appreciated!

Thanks in advance,

Replies 4 (4)

TheUntechnickle
Shopify Partner
488 58 125

Hey @Mehdiela1,

The issue is that the policy links are currently inside the main copyright section. To move them below everything else, we need to relocate this code section and add some custom styling. I've prepared the necessary changes for you.

 

How to achieve this:

1. Edit the footer.liquid file

  1. Go to your Shopify admin
  2. Click on Online Store > Themes
  3. Click on Actions > Edit code for your active theme
  4. Under the Sections folder, locate and click on footer.liquid
  5. Replace the entire contents with the code I've provided in the attachment

{% comment %}theme-check-disable UndefinedObject{% endcomment %}
{{ 'section-footer.css' | asset_url | stylesheet_tag }}
{{ 'component-newsletter.css' | asset_url | stylesheet_tag }}
{{ 'component-list-menu.css' | asset_url | stylesheet_tag }}
{{ 'component-list-payment.css' | asset_url | stylesheet_tag }}
{{ 'component-list-social.css' | asset_url | stylesheet_tag }}

{%- style -%}
  .footer {
    margin-top: {{ section.settings.margin_top | times: 0.75 | round: 0 }}px;
  }

  .section-{{ section.id }}-padding {
    padding-top: {{ section.settings.padding_top | times: 0.75 | round: 0 }}px;
    padding-bottom: {{ section.settings.padding_bottom | times: 0.75 | round: 0 }}px;
  }

  @media screen and (min-width: 750px) {
    .footer {
      margin-top: {{ section.settings.margin_top }}px;
    }

    .section-{{ section.id }}-padding {
      padding-top: {{ section.settings.padding_top }}px;
      padding-bottom: {{ section.settings.padding_bottom }}px;
    }
  }
  
  /* New styles for policies section */
  .footer__policies-wrapper {
    text-align: center;
    margin-top: 2rem;
    padding-top: 1rem;
    width: 100%;
  }
{%- endstyle -%}

<footer class="footer color-{{ section.settings.color_scheme }} gradient section-{{ section.id }}-padding">
  {%- liquid
    assign has_social_icons = true
    if settings.social_facebook_link == blank and settings.social_instagram_link == blank and settings.social_youtube_link == blank and settings.social_tiktok_link == blank and settings.social_twitter_link == blank and settings.social_pinterest_link == blank and settings.social_snapchat_link == blank and settings.social_tumblr_link == blank and settings.social_vimeo_link == blank
      assign has_social_icons = false
    endif

    if settings.brand_image == blank and settings.brand_headline == blank and settings.brand_description == blank
      assign brand_empty = true
    endif

    if section.blocks.size == 1 and section.blocks[0].type == 'brand_information' and brand_empty and has_social_icons == false and section.settings.newsletter_enable == false and section.settings.enable_follow_on_shop == false
      assign only_empty_brand = true
    endif
  -%}
  {%- if section.blocks.size > 0
    or section.settings.newsletter_enable
    or section.settings.show_social
    and has_social_icons == true
    or section.settings.enable_follow_on_shop
  -%}
    {%- unless only_empty_brand -%}
      <div class="footer__content-top page-width">
        {%- if section.blocks.size > 0 -%}
          {%- liquid
            if section.blocks.size == 9
              assign footer_grid_class = 'grid--3-col-tablet'
            elsif section.blocks.size > 6
              assign footer_grid_class = 'grid--4-col-desktop'
            elsif section.blocks.size > 4
              assign footer_grid_class = 'grid--3-col-tablet'
            endif
          -%}
          <div
            class="footer__blocks-wrapper grid grid--1-col grid--2-col grid--4-col-tablet {{ footer_grid_class }}{% if settings.animations_reveal_on_scroll %} scroll-trigger animate--slide-in{% endif %}"
            {% if settings.animations_reveal_on_scroll %}
              data-cascade
            {% endif %}
          >
            {%- for block in section.blocks -%}
              <div
                class="footer-block grid__item{% if block.type == 'link_list' %} footer-block--menu{% endif %}{% if settings.animations_reveal_on_scroll %} scroll-trigger animate--slide-in{% endif %}"
                {{ block.shopify_attributes }}
                {% if settings.animations_reveal_on_scroll %}
                  data-cascade
                  style="--animation-order: {{ forloop.index }};"
                {% endif %}
              >
                {%- if block.settings.heading != blank -%}
                  <h2 class="footer-block__heading inline-richtext">{{- block.settings.heading -}}</h2>
                {%- endif -%}

                {%- case block.type -%}
                  {%- when '@app' -%}
                    {% render block %}
                  {%- when 'text' -%}
                    <div class="footer-block__details-content rte">
                      {{ block.settings.subtext }}
                    </div>
                  {%- when 'link_list' -%}
                    {%- if block.settings.menu != blank -%}
                      <ul class="footer-block__details-content list-unstyled">
                        {%- for link in block.settings.menu.links -%}
                          <li>
                            <a
                              href="{{ link.url }}"
                              class="link link--text list-menu__item list-menu__item--link{% if link.active %} list-menu__item--active{% endif %}"
                            >
                              {{ link.title | escape }}
                            </a>
                          </li>
                        {%- endfor -%}
                      </ul>
                    {%- endif -%}
                  {%- when 'brand_information' -%}
                    <div class="footer-block__brand-info">
                      {%- if settings.brand_image != blank -%}
                        {%- assign brand_image_height = settings.brand_image_width
                          | divided_by: settings.brand_image.aspect_ratio
                        -%}
                        <div
                          class="footer-block__image-wrapper"
                          style="max-width: min(100%, {{ settings.brand_image_width }}px);"
                        >
                          {{
                            settings.brand_image
                            | image_url: width: 1100
                            | image_tag:
                              loading: 'lazy',
                              widths: '50, 100, 150, 200, 300, 400, 550, 800, 1100',
                              height: brand_image_height,
                              width: settings.brand_image_width
                          }}
                        </div>
                      {%- endif -%}
                      {%- if settings.brand_headline != blank -%}
                        <h2 class="footer-block__heading rte">{{ settings.brand_headline }}</h2>
                      {%- endif -%}
                      {%- if settings.brand_description != blank -%}
                        <div class="rte">{{ settings.brand_description }}</div>
                      {%- endif -%}
                      {%- if block.settings.show_social and has_social_icons -%}
                        {%- render 'social-icons', class: 'footer__list-social' -%}
                      {%- endif -%}
                    </div>
                  {%- when 'image' -%}
                    <div class="footer-block__details-content footer-block-image {{ block.settings.alignment }}">
                      {%- if block.settings.image != blank -%}
                        {%- assign image_size_2x = block.settings.image_width | times: 2 | at_most: 5760 -%}
                        <div
                          class="footer-block__image-wrapper"
                          style="max-width: min(100%, {{ block.settings.image_width }}px);"
                        >
                          <img
                            srcset="{{ block.settings.image | image_url: width: block.settings.image_width }}, {{ block.settings.image | image_url: width: image_size_2x }} 2x"
                            src="{{ block.settings.image | image_url: width: 760 }}"
                            alt="{{ block.settings.image.alt | escape }}"
                            loading="lazy"
                            width="{{ block.settings.image.width }}"
                            height="{{ block.settings.image.height }}"
                          >
                        </div>
                      {%- else -%}
                        {{ 'image' | placeholder_svg_tag: 'placeholder-svg placeholder' }}
                      {%- endif -%}
                    </div>
                {%- endcase -%}
              </div>
            {%- endfor -%}
          </div>
        {%- endif -%}

        <div
          class="footer-block--newsletter{% if settings.animations_reveal_on_scroll %} scroll-trigger animate--slide-in{% endif %}"
          {% if settings.animations_reveal_on_scroll %}
            data-cascade
          {% endif %}
        >
          {%- if section.settings.newsletter_enable -%}
            <div class="footer-block__newsletter">
              {%- if section.settings.newsletter_heading != blank -%}
                <h2 class="footer-block__heading inline-richtext">{{ section.settings.newsletter_heading }}</h2>
              {%- endif -%}
              {%- form 'customer', id: 'ContactFooter', class: 'footer__newsletter newsletter-form' -%}
                <input type="hidden" name="contact[tags]" value="newsletter">
                <div class="newsletter-form__field-wrapper">
                  <div class="field">
                    <input
                      id="NewsletterForm--{{ section.id }}"
                      type="email"
                      name="contact[email]"
                      class="field__input"
                      value="{{ form.email }}"
                      aria-required="true"
                      autocorrect="off"
                      autocapitalize="off"
                      autocomplete="email"
                      {% if form.errors %}
                        autofocus
                        aria-invalid="true"
                        aria-describedby="ContactFooter-error"
                      {% elsif form.posted_successfully? %}
                        aria-describedby="ContactFooter-success"
                      {% endif %}
                      placeholder="{{ 'newsletter.label' | t }}"
                      required
                    >
                    <label class="field__label" for="NewsletterForm--{{ section.id }}">
                      {{ 'newsletter.label' | t }}
                    </label>
                    <button
                      type="submit"
                      class="newsletter-form__button field__button"
                      name="commit"
                      id="Subscribe"
                      aria-label="{{ 'newsletter.button_label' | t }}"
                    >
                      <span class="svg-wrapper">
                        {{- 'icon-arrow.svg' | inline_asset_content -}}
                      </span>
                    </button>
                  </div>
                  {%- if form.errors -%}
                    <small class="newsletter-form__message form__message" id="ContactFooter-error">
                      <span class="svg-wrapper">
                        {{- 'icon-error.svg' | inline_asset_content -}}
                      </span>
                      {{- form.errors.translated_fields.email | capitalize }}
                      {{ form.errors.messages.email -}}
                    </small>
                  {%- endif -%}
                </div>
                {%- if form.posted_successfully? -%}
                  <h3
                    class="newsletter-form__message newsletter-form__message--success form__message"
                    id="ContactFooter-success"
                    tabindex="-1"
                    autofocus
                  >
                    <span class="svg-wrapper">
                      {{- 'icon-success.svg' | inline_asset_content -}}
                    </span>
                    {{- 'newsletter.success' | t }}
                  </h3>
                {%- endif -%}
              {%- endform -%}
            </div>
          {%- endif -%}

          {%- if shop.features.follow_on_shop? and section.settings.enable_follow_on_shop -%}
            <div class="footer__follow-on-shop">
              {{ shop | login_button: action: 'follow' }}
            </div>
          {%- endif -%}

          {%- if section.settings.show_social and has_social_icons -%}
            {%- render 'social-icons', class: 'footer__list-social' -%}
          {%- endif -%}
        </div>
      </div>
    {%- endunless -%}
  {%- endif -%}

  <div
    class="footer__content-bottom{% if settings.animations_reveal_on_scroll %} scroll-trigger animate--slide-in{% endif %}"
    {% if settings.animations_reveal_on_scroll %}
      data-cascade
    {% endif %}
  >
    <div class="footer__content-bottom-wrapper page-width">
      <div class="footer__column footer__localization isolate">
        {%- if section.settings.enable_country_selector and localization.available_countries.size > 1 -%}
          <localization-form>
            {%- form 'localization', id: 'FooterCountryForm', class: 'localization-form' -%}
              <div>
                <h2 class="caption-large text-body" id="FooterCountryLabel">{{ 'localization.country_label' | t }}</h2>
                {%- render 'country-localization', localPosition: 'FooterCountry' -%}
              </div>
            {%- endform -%}
          </localization-form>
        {%- endif -%}

        {%- if section.settings.enable_language_selector and localization.available_languages.size > 1 -%}
          <localization-form>
            {%- form 'localization', id: 'FooterLanguageForm', class: 'localization-form' -%}
              <div>
                <h2 class="caption-large text-body" id="FooterLanguageLabel">
                  {{ 'localization.language_label' | t }}
                </h2>
                {%- render 'language-localization', localPosition: 'FooterLanguage' -%}
              </div>
            {%- endform -%}
          </localization-form>
        {%- endif -%}
      </div>
      <div class="footer__column footer__column--info">
        {%- if section.settings.payment_enable -%}
          <div class="footer__payment">
            <span class="visually-hidden">{{ 'sections.footer.payment' | t }}</span>
            <ul class="list list-payment" role="list">
              {%- for type in shop.enabled_payment_types -%}
                <li class="list-payment__item">
                  {{ type | payment_type_svg_tag: class: 'icon icon--full-color' }}
                </li>
              {%- endfor -%}
            </ul>
          </div>
        {%- endif -%}
      </div>
    </div>
    <div class="footer__content-bottom-wrapper page-width{% if section.settings.enable_country_selector == false and section.settings.enable_language_selector == false %} footer__content-bottom-wrapper--center{% endif %}">
      <div class="footer__copyright caption">
        <small class="copyright__content"
          >&copy; {{ 'now' | date: '%Y' }}, {{ shop.name | link_to: routes.root_url -}}
        </small>
        <small class="copyright__content">{{ powered_by_link }}</small>
      </div>
    </div>
  </div>
  
  <!-- Moved policy links to a new section below everything else -->
  {%- if section.settings.show_policy -%}
    <div class="footer__policies-wrapper page-width">
      <ul class="policies list-unstyled">
        {%- for policy in shop.policies -%}
          {%- if policy != blank -%}
            <li>
              <small class="copyright__content"
                ><a href="{{ policy.url }}">{{ policy.title | escape }}</a></small
              >
            </li>
          {%- endif -%}
        {%- endfor -%}
      </ul>
    </div>
  {%- endif -%}
</footer>

{% schema %}
{
  "name": "t:sections.footer.name",
  "blocks": [
    {
      "type": "@app"
    },
    {
      "type": "link_list",
      "name": "t:sections.footer.blocks.link_list.name",
      "settings": [
        {
          "type": "inline_richtext",
          "id": "heading",
          "default": "t:sections.footer.blocks.link_list.settings.heading.default",
          "label": "t:sections.footer.blocks.link_list.settings.heading.label"
        },
        {
          "type": "link_list",
          "id": "menu",
          "default": "footer",
          "label": "t:sections.footer.blocks.link_list.settings.menu.label"
        }
      ]
    },
    {
      "type": "brand_information",
      "name": "t:sections.footer.blocks.brand_information.name",
      "settings": [
        {
          "type": "paragraph",
          "content": "t:sections.footer.blocks.brand_information.settings.paragraph.content"
        },
        {
          "type": "checkbox",
          "id": "show_social",
          "default": true,
          "label": "t:sections.footer.blocks.brand_information.settings.show_social.label",
          "info": "t:sections.footer.blocks.brand_information.settings.show_social.info"
        }
      ]
    },
    {
      "type": "text",
      "name": "t:sections.footer.blocks.text.name",
      "settings": [
        {
          "type": "inline_richtext",
          "id": "heading",
          "default": "t:sections.footer.blocks.text.settings.heading.default",
          "label": "t:sections.footer.blocks.text.settings.heading.label"
        },
        {
          "type": "richtext",
          "id": "subtext",
          "default": "t:sections.footer.blocks.text.settings.subtext.default",
          "label": "t:sections.footer.blocks.text.settings.subtext.label"
        }
      ]
    },
    {
      "type": "image",
      "name": "Image",
      "settings": [
        {
          "type": "image_picker",
          "id": "image",
          "label": "Image"
        },
        {
          "type": "range",
          "id": "image_width",
          "min": 50,
          "max": 550,
          "step": 5,
          "unit": "px",
          "label": "Width",
          "default": 100
        },
        {
          "type": "select",
          "id": "alignment",
          "label": "Alignment",
          "options": [
            {
              "value": "",
              "label": "Left"
            },
            {
              "value": "center",
              "label": "Center"
            },
            {
              "value": "right",
              "label": "Right"
            }
          ],
          "default": "center"
        }
      ]
    }
  ],
  "settings": [
    {
      "type": "color_scheme",
      "id": "color_scheme",
      "label": "t:sections.all.colors.label",
      "default": "scheme-1"
    },
    {
      "type": "header",
      "content": "t:sections.footer.settings.header__1.content",
      "info": "t:sections.footer.settings.header__1.info"
    },
    {
      "type": "checkbox",
      "id": "newsletter_enable",
      "default": true,
      "label": "t:sections.footer.settings.newsletter_enable.label"
    },
    {
      "type": "inline_richtext",
      "id": "newsletter_heading",
      "default": "t:sections.footer.settings.newsletter_heading.default",
      "label": "t:sections.footer.settings.newsletter_heading.label"
    },
    {
      "type": "header",
      "content": "t:sections.footer.settings.header__9.content"
    },
    {
      "type": "checkbox",
      "id": "enable_follow_on_shop",
      "default": true,
      "label": "t:sections.footer.settings.enable_follow_on_shop.label",
      "info": "t:sections.footer.settings.enable_follow_on_shop.info"
    },
    {
      "type": "checkbox",
      "id": "show_social",
      "default": true,
      "label": "t:sections.footer.settings.show_social.label",
      "info": "t:sections.footer.settings.show_social.info"
    },
    {
      "type": "checkbox",
      "id": "enable_country_selector",
      "default": true,
      "label": "t:sections.footer.settings.enable_country_selector.label",
      "info": "t:sections.footer.settings.enable_country_selector.info"
    },
    {
      "type": "checkbox",
      "id": "enable_language_selector",
      "default": true,
      "label": "t:sections.footer.settings.enable_language_selector.label",
      "info": "t:sections.footer.settings.enable_language_selector.info"
    },
    {
      "type": "checkbox",
      "id": "payment_enable",
      "default": true,
      "label": "t:sections.footer.settings.payment_enable.label"
    },
    {
      "type": "checkbox",
      "id": "show_policy",
      "default": true,
      "label": "t:sections.footer.settings.show_policy.label",
      "info": "t:sections.footer.settings.show_policy.info"
    },
    {
      "type": "header",
      "content": "t:sections.all.spacing"
    },
    {
      "type": "range",
      "id": "margin_top",
      "min": 0,
      "max": 100,
      "step": 4,
      "unit": "px",
      "label": "t:sections.footer.settings.margin_top.label",
      "default": 0
    },
    {
      "type": "header",
      "content": "t:sections.all.padding.section_padding_heading"
    },
    {
      "type": "range",
      "id": "padding_top",
      "min": 0,
      "max": 100,
      "step": 4,
      "unit": "px",
      "label": "t:sections.all.padding.padding_top",
      "default": 36
    },
    {
      "type": "range",
      "id": "padding_bottom",
      "min": 0,
      "max": 100,
      "step": 4,
      "unit": "px",
      "label": "t:sections.all.padding.padding_bottom",
      "default": 36
    }
  ],
  "default": {
    "blocks": [
      {
        "type": "link_list"
      },
      {
        "type": "text"
      }
    ]
  }
}
{% endschema %}​

2. Add custom CSS

  1. While still in the theme editor, under the Assets folder, locate and click on section-footer.css
  2. Add the CSS code I've provided at the end of this file
/* Add these styles to section-footer.css */

.footer__policies-wrapper {
  width: 100%;
  text-align: center;
  margin-top: 2rem;
  border-top: solid 0.1rem rgba(var(--color-foreground), 0.08);
  padding-top: 1.5rem;
}

.footer__policies-wrapper .policies {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 1rem;
}

.footer__policies-wrapper .policies li {
  display: inline-flex;
  justify-content: center;
  align-items: center;
}

.footer__policies-wrapper .policies li::before {
  display: none;
}

@media screen and (max-width: 749px) {
  .footer__policies-wrapper {
    padding-left: calc(4rem / var(--font-body-scale));
    padding-right: calc(4rem / var(--font-body-scale));
  }
}​

If you need any clarification or have any issues implementing these changes, please don't hesitate to reach out. I'm here to help!


Best regards,

Shubham | Untechnickle

Helping for free: hello@untechnickle.com


Don't forget to say thanks, it'll make my day - just send me an email! 


Get Revize for Free | Let your shoppers edit orders post-purchase | Get Zero Support Tickets | #1 Order Editing + Upsell App

Mehdiela1
Visitor
2 0 3

Hi there,

Thank you so much — I’m infinitely grateful for your help and for preparing everything so clearly! 🙏
That being said, I have to admit I’m not very comfortable making these changes myself. I’m a bit worried I might mess something up or break the layout by accident.

If you’re willing and able, I’d be more than happy to give you access so you could make the changes directly. Let me know if that’s something you’d be okay with.

Thanks again for your support!

TheUntechnickle
Shopify Partner
488 58 125

Hey @Mehdiela1,

Of course, we'd love to implement this for you! We'll create a theme copy and add the changes there, once you're satisfied we can publish it.

You can share your collaborator code on our email below, we'll get started right away.

Shubham | Untechnickle

Helping for free: hello@untechnickle.com


Don't forget to say thanks, it'll make my day - just send me an email! 


Get Revize for Free | Let your shoppers edit orders post-purchase | Get Zero Support Tickets | #1 Order Editing + Upsell App

Moeed
Shopify Partner
7450 2017 2472

Hey @Mehdiela1 

 

Welcome to Shopify Community! Can you share your Store URL so I can have a look on it? Also, if you have password enabled then please share the password as well. Your cooperation would be greatly appreciated.

 

Best Regards,
Moeed

- Need a Shopify Specialist? Chat on WhatsApp

- Get a quick Shopify quote – Click here!

- Custom Design | Advanced Coding | Store Modifications