Back to docs

Documentation

Footer configuration

Configure footer brand copy, contact email, social links, navigation columns, legal text, and copyright.

Article
PreviousNext

The web-nuxt footer is manifest-driven. Edit apps/web-nuxt/zship.app.json and keep the footer content inside the top-level footer object.

Do not hardcode footer copy, links, or legal text in LandingFooter.vue. The component should only render siteConfig.footer.

{
  "footer": {
    "brandDisplay": "logo-and-site-name",
    "contactEmail": "support@example.com",
    "description": [
      {
        "en": "Short product promise for the footer.",
        "zh-CN": "Localized footer promise."
      }
    ],
    "sections": [
      {
        "titleKey": "footer_section_product",
        "items": [
          {
            "labelKey": "nav_pricing",
            "to": "/pricing"
          }
        ]
      }
    ],
    "copyright": "(c) {year} {siteName}"
  }
}

Field reference

  • brandDisplay: controls brand rendering. Use logo-and-site-name, logo-only, or site-name-only.
  • contactEmail: footer-specific email. Set it to an empty string to hide the email row.
  • description: one or more footer description lines. Use localized objects when the public site supports multiple locales.
  • sections: navigation columns. Each section uses titleKey or label, and each item uses labelKey or label plus to.
  • disclaimer: legal or trademark text shown in the bottom row.
  • copyright: bottom-left copyright text. It supports {year}, {siteName}, and {brandName} tokens.

Launch checklist

  • Confirm footer.description no longer references the template if the product has been renamed.
  • Confirm footer.contactEmail reaches a real support mailbox.
  • Confirm every footer route exists.
  • Confirm external links open the expected brand accounts.
  • Confirm footer.disclaimer matches your legal and trademark policy.