仅为主页更改CSS | Shopify



我正在使用Shopify构建我的网站,我喜欢主页导航,但我想将其他页面的导航栏更改为100%宽度。由于它们共享相同的代码,我知道我必须构建一个if语句,我只是对Shopify不够熟悉,无法构建它。

{%if page.handle == "Home page"%}
.page-width {
margin: 0 auto;
padding-left: 15px;
padding-right: 15px;
}
{% endif %}

这是我使用的不起作用的代码。我只是想看看我是否能让if语句发挥作用,但我做不到。

在索引页面上,您没有一个"页面";对象

你可以试试这个:

{% if template.name == "index" %}
.page-width {
margin: 0 auto;
padding-left: 15px;
padding-right: 15px;
}
{% endif %}

它使用模板名称来检查它是否是索引页(主页(。

或者这个:

{% if request.path == "/" %}
.page-width {
margin: 0 auto;
padding-left: 15px;
padding-right: 15px;
}
{% endif%}

它使用URL的路径来检查它是否是索引页。

资产文件不知道您所在的页面

assets文件夹中的文件是静态资源,可以由服务器和浏览器强缓存。这意味着,每次请求assets文件夹中的资源时,服务器都会返回完全相同的文件。

这意味着资产文件不知道您网站上的任何动态信息,包括查看器所在的页面、他们正在查看的产品、购物车的内容等。您应该在资产文件中访问的唯一Liquid变量是主题的settings变量和翻译。

不过,有很多方法可以重新排列代码或网站结构以适应这种情况。一些想法包括:

  • 如果有很多规则适用于特定页面,请为这些规则创建一个资产文件,并在主题文件中使用条件检查包装该文件的包含内容

示例:

{% if template.name == 'index' %}
{{ 'index-styles.css' | asset_url | stylesheet_tag }}
{% endif %}
  • {{ template.name }}和/或{{ template.suffix }}作为类名或数据属性添加到<body>标记或某些其他高级标记中。然后,您可以很容易地为特定页面确定选择器的范围

示例:

HTML:
<body class="template-{{ template.name }}">`
CSS:
.template-index .page-width {

最新更新