在这篇博客中,我们将通过简单地以特定方式命名它们来介绍组织,搜索和过滤CMS块的强大方法。
规则,目标和基本结构
让我们为命名结构建立一些规范,Magento CMS块标题的命名规范必须满足以下要求(无特定顺序):
- 它必须是通用的,适用于所有CMS块
- 每个块必须具有唯一的标题
- 用户必须能够有效地过滤块,并始终找到他们正在寻找的东西,而不需要盲目猜测或其他浪费时间的方法
- 它必须适用于香草Magento(CE或EE),它不能依赖于任何扩展
- 用户应该立即知道块的位置和目的是什么
从各种流行的命名约定中获得灵感,并遵循这些要求,我为CMS块标题提出了以下命名结构。
[标签]网站名称 - 商店视图 - 模板参考 - 布局位置 - 组件名称 - 组件变体
带下划线的组件表示命名CMS块时所需的参数,其余参数是可选的。
请注意,您可以使用任何您喜欢并且适合您项目的格式,所提出的结构只是一个建议的命名结构。
在我们开始分别研究命名结构的每个部分之前,下面是CMS块标题的示例,它遵循命名规则,并且只使用必需的(下划线)部分:
Global – Footer – Social Media Links
仔细研究每个组件
[标签](可选)
它可以用来标记特定块的特定原因,标记应该用作名称的临时部分,直到请求的操作发生或标记在新代码部署之后过时。
例子:
值 | 描述 |
[没有价值] | CMS块未标记 |
删除 | 标记为删除并等待最终批准。 |
编辑 | 请求编辑(内容,代码或设计)。 |
BUG票号 | 此CMS块包含故障单中详细说明的问题或错误,或者在故障单号中定义的任务是可选的。 |
过时-ID | 与带有标签[NEW]的块的id配对,它标记了新的CMS块,在最近的部署中,该块已被更新版本的CMS块(具有重大更改)替换,但在代码还原的情况下尚未删除。验证部署后可以将其删除。 |
NEW-ID | 与带有[OUTDATED]标记的块的id配对,它标记了新版本的CMS块,当新代码部署到站点时,它将替换过时的块。 |
网站名称(可选)
指Magento结构中可以找到CMS块的网站名称。
例子:
值 | 描述 |
[没有价值] | 只有一个网站 |
多 | 可以在多个网站中找到阻止 |
[商店名称] | 阻止只能在特定网站中找到 |
商店视图名称(可选)
在Magento结构中可以看到CMS块的存储视图,它也可以引用i18n来标识不同语言的相同块。
例子:
值 | 描述 |
[没有价值] | 网站没有多个商店视图 |
多 | 可以在多个商店视图中找到块(多语言) |
恩 | 英语 |
德 | 德国的语言 |
模板参考(必填)
指页面名称。
例子:
值 | 描述 |
全球 | 全局范围,组件出现在所有页面上 |
多 | 组件显示或2页或更多页,但不是所有页 |
分类页面 | Magento类别 |
产品页面 | Magento产品页面 |
主页CMS | 主页CMS页面 |
关于我们CMS | 关于我们CMS页面 |
布局位置(必填)
在Magento页面布局中的位置。
例子:
值 | 描述 |
多 | 组件出现在页面上的多个容器中 |
内容 | 主要内容,主要容器 |
边栏左侧 | 左侧边栏容器 |
边栏右边 | 右侧边栏容器 |
头 | 网站标题 |
页脚 | 网站页脚 |
组件名称(必填)
CMS块的自定义名称,用于描述CMS块的角色。
例子:
组件名称值 |
销售横幅 |
尺码指南 |
类别说明 |
组件变化(仅在特定条件下需要)
现有CMS块的变体,如果CMS块是不同版本或现有块的迭代,则为必需。
例子:
组件名称值 | 组件变体值 | 描述 |
组件名称 | [无价值]或常规 | 没有变化,基本组件 |
销售横幅 | 夏天,假日,黑色星期五 | 各种销售横幅 |
尺码指南 | 鞋子,衬衫,裤子 | 尺码指南适合各种服装 |
类别说明 | 配件,包,腰带 | 类别页面CMS块 |
对于块标识符,我们必须采用不同但更简单的方法来命名它们。我们不希望对块标识符使用与块标题相同的命名格式,因为标识符的概念不会改变以避免完全重构代码。我建议使用以下格式的标识符来跟上结构化名称格式:
COMPONENT_NAME-component_variation
概念证明和例子
使用提供的命名格式,让我们为一些默认的Magento 1 CMS块转换一些块标题!
默认Magento 1块标题 | 新标题 |
页脚链接公司 | 全球 - 页脚 - 公司链接 |
页脚链接SM | 全球 - 页脚 - 社交媒体链接 |
类别登陆页面 | 分类页面 - 内容 - 主页 |
类别登陆页面主块 | 类别页面 - 内容 - 主要块 |
Cookie限制通知 | 全球 - 标题 - Cookie限制通知 |
新标题 | 新块标识符 |
全球 - 页脚 - 公司链接 | company_links正规 |
全球 - 页脚 - 社交媒体链接 | social_media_links正规 |
分类页面 - 内容 - 主页 | 家正规 |
类别页面 - 内容 - 主要块 | main_block正规 |
全球 - 标题 - Cookie限制通知 | cookie_restriction_notice正规 |
看起来好多了,不是吗?查看所有可以查看CMS块标题的信息!我们只需查看块标题即可立即知道该块在网站上的位置,它在页面上的位置,内容和角色。现在,这不是很棒吗?但是这种命名结构的真正力量和目的是过滤块。
按块标题过滤CMS块
现在我们为CMS块创建了新的命名格式并为它们提供了更有意义的标题,让我们看看在搜索特定块或特定块组时这种命名结构的效果如何。
重要的是要注意Magento 1和Magento 2中按块标题搜索的差异.Magento 1在搜索单词方面非常严格,你必须输入块标题的确切部分,在Magento 2中我们有一个更宽松的搜索将搜索由空白空间分隔的每个单词或由空白空格分隔的引号中的每组单词。
出于测试目的,我在Magento 1和Magento 2中创建了20个空的CMS块(如图所示),并且我给他们随机的块标题,我可以考虑按照建议的命名格式,并且按照建议的命名格式给他们各自的块标识符。
示例 - 方案1
标记CMS块的常规检查(列出所有标记的CMS块 - 错误,删除请求,编辑请求等)
即使没有适用于所有CMS块的关键字,我们也无法通过搜索过滤所有标记的块(即使我们可以搜索单个标记,例如“[DELETE]”)。我们可以通过按升序对CMS块标题进行排序,使标记块显示在CMS块列表的第一位,而不是搜索每个单独的标记,而是使标记的块显示在列表的顶部。
示例 - 方案2
列出可能出现在特定页面上的所有CMS块(例如,产品页面)
让我们假设我们正在寻找我们在产品页面上看到的块。听起来很简单。我们只需输入“产品页面”,对吧?
但是如果该块是“全局”还是“多个”呢?我们应该使用特定于页面的参数搜索块,如果我们没有使用特定于页面的参数找到它,则将搜索范围扩大到“多个”或“全局”块。我们还可以将此搜索与关于布局位置“内容”或“侧边栏左侧”的信息结合起来,以便在过滤时获得更好的结果。所有这些都可以使用CMS Block Admin页面中提供的vanilla Magento过滤功能来完成。我们还可以在Magento 2中使用改进的过滤功能,在一次搜索中获得所有结果。
最后,我们最终得到了我们正在寻找的结果。通过这种方式,我们可以获得产品页面上显示的所有可能块的列表(不包括标有“Multi”的块,这些块可能会也可能不会出现在产品页面上)。
在CMS块中搜索特定存储中的CMS块,特定存储视图(语言)和页面布局中的特定部分时,应用相同的方法。
示例 - 方案3
列出具有特定变体的所有CMS块(例如,列出所有假日CMS块)。
在命名CMS块变体时也必须有规则以允许更轻松的过滤。在这种情况下,如果我们在所有CMS块假期变体中都包含变体名称“Holiday”,我们只需要通过关键字“Holiday”搜索CMS块,以仅显示假日CMS块。
示例 - 方案4
使用更新的CMS块(例如社交媒体链接)部署改进的页面元素(例如页脚)。
在进行任何代码部署之前,我们需要将更新的CMS块移动到页脚社交媒体链接,并为其添加标签[NEW-id],其中包含原始社交媒体链接块的ID。在代码部署之后和验证部署成功之后,我们需要使用标签[OUTDATED-id]更新原始社交媒体链接块标题和新块的id。几天之后,如果不需要代码恢复并且不再使用该块,则可以安全地为其指定[DELETE]标签或将其删除。
您可能遇到的一些问题的答案
来吧,你的项目中是否有可能拥有那么多CMS块?
是! 根据个人经验,我参与了拥有CMS块数量的项目,从较小项目的几十个CMS块到常规项目的大约一百个块,最后到长期的一千多个 CMS块。大型项目。
为什么模板参考的“全局”和“多”值?有什么意义?
“全局”是指在Magento布局中定义为默认的元素,并且不会删除网站上任何页面的元素。“Multi”是指在Magento布局中定义为默认值但在Magento布局中至少从一个页面中删除的元素。
实际的例子是仅在结账页面上删除过多(并且分散注意力)的标题元素,以确保客户完全专注于结账表单。在这种情况下,您需要在删除的CMS块名称中使用“Multi”。
为什么不直接获得解决此问题的扩展程序?
为什么不呢。去吧。这被认为是一种开箱即用的免费替代品,并使用香草Magento功能。所需要的只是在创建和管理CMS块的人之间建立协调和建立规则。
在重构时编辑许多块标题会变得乏味!
Magento 2允许从CMS块列表中快速更改CMS块(如更改块标题),尽管这种方法需要在Magento 1中打开CMS块,这是与Magento 2相比的额外步骤,但其好处远大于偶然的不便。