- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我有一个电子商务网站,我想通过大量模板来展示我展示产品网格的方式。使用 DRY 原则,您将如何重用此代码并可能将参数传递到 block 中以在不同区域进行一些自定义? {embed} 是最佳选择吗?我可以看到类似的东西会产生很多不必要的开销。
最佳答案
我在客户网站上做了这件事。我在整个网站上重新使用了相同的产品网格,它是 100% DRY。我使用了 Stash 的 dev 分支并使用了新的嵌入功能。虽然常规嵌入始终是一种可行的选择,但 Stash 嵌入更高效、更强大。
真正的区别在于您如何传递变量以及何时解析嵌入。使用 stash embeds 可以在循环标签内使用,并且只解析一次数据。 (在循环的每次迭代中都会解析常规嵌入。)
这是我不久前在 Twitter 上为另一位用户发布的要点。
https://gist.github.com/2950536
请注意,该示例代表多个文件和代码块,或者我会在这里发布。 IMO,如果我把它贴在这里,它会让这篇文章难以阅读和阅读。本质上,它遵循修改后的模板部分方法。
有关模板部分的更多信息。
http://eeinsider.com/blog/ee-podcast-stash-template-partials/
但更直接地回答“如何用 Stash 替换嵌入变量?”的问题。该解决方案相当简单,并且基于“setter”和“getter”的核心编程概念。理论上,如果设置了一个变量,则可以在模板中的任何稍后位置检索它。诀窍是在解析 getter 之前设置变量。
{exp:stash:set}
{stash:page_content}
{exp:channel:entries channel="your-channel"}
{stash:your_var_1}Some value 1{/stash:your_var_1}
{stash:your_var_2}Some value 2{/stash:your_var_2}
{stash:your_var_3}Some value 3{/stash:your_var_3}
{stash:your_var_4}Some value 4{/stash:your_var_4}
{stash:embed name="your-template" process="start"}
{/exp:channel:entries}
{/stash:page_content}
{/exp:stash:set}
{stash:embed name="header" process="end"}
关于dry - 如何在 ExpressionEngine 中重用代码块并将参数传递给它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13042435/
我正在尝试在 ExpressionEngine 中输出 channel 条目的类别,以便我可以将它用作 HTML 元素上的 CSS 类 — 请参阅我在示例如下: {exp:channel:entrie
我有一大堆 EE 站点,一般来说垃圾邮件问题不大。但是,我关注的一个网站最近受到注册垃圾邮件的轰炸。这是一个流量极低的站点,有点被忽视,这意味着它运行的是旧版本的 EE。 我现在已将站点更新到最新的
我使用标准 Search Module 在我的 ExpressionEngine 站点中添加了搜索功能标签。但是,我偶尔会遇到此错误消息: 您只能每 15 秒搜索一次。 这似乎只在我注销时发生。 我想
在 EE 1 下,我能够破解源代码以允许我保留带有确切大小写的 url 标题。也就是说,我能够阻止它强制所有 url 标题为小写。 我需要在 EE 2 上复制相同的行为,但到目前为止我还没有完全掌握。
有没有办法知道哪些附加组件在 EE 控制面板的开发人员日志中创建消息,或者它基本上是一个消除过程? 示例消息: 第三方附加组件正在调用 $this->load->library('security')
我正在建立一个网站,员工将拥有自己的网站部分:example.com/jones、example.com/smith 等。jones 和 smith 是模板组,其中包含相同的模板(使用 Stash 和
所以自从我上次建立一个多语言网站已经两年了,我正在开始一个新的网站。 我建立的最后一个站点我使用了 biber 多语言模块,从那时起它似乎已经更改了名称,现在称为 Multi Language Sup
我刚刚意识到我有一个网站,在/member/register 上有默认的在线成员(member)资料表格 我不使用这些,而是使用 Zoo Visitor 的模板,我终究找不到可以禁用默认模板的地方
我完全不知道为什么在升级到 EE 2.5.3 后我的 EE 安装突然不允许某些标准 ?ACT 例如搜索 (?ACT=2)、发送联系表或注销 (?ACT=10)前端。 操作被重定向到主页。 升级后没有安
我使用 MSM 插件在两个不同的域名上运行两个 ExpressionEngine 站点。站点一包含所有系统文件等,站点二位于站点一的子文件夹中。我的问题是如何让站点 2 在 url 中没有它的 ind
我刚刚从 EE 1 升级到 EE 2,我正在努力应对一些变化。例如,EE 不再在其 url 上输出尾部斜杠这一事实使我的很多链接变得一团糟,我依赖于 EE 生成的 url + 附加段等结构。考虑到我网
我听说过关于这件事的好坏参半的事情。我知道当您坚持只在模板中启用 PHP 并解决问题时很容易。但是,它几乎总是会引入潜在的安全问题,并使您的模板无法启动。 在大多数使用 PHP 的情况下,用 PHP
如何在 ExpressionEngine 中输出条目的标题并将其显示在浏览器的标题栏中? 这是我页面标题的内容: Test Site 我需要让每个页面在浏览器的标题栏中
我想在不使用任何 PHP 的情况下在我的 ExpressionEngine 模板中使用一些存储的 cookie 值。 我当前的模板代码 {exp:channel:entries channel="fa
我正在开发一个使用 FreeMember 的网站处理用户注册、登录和个人资料更新。我们希望为用户提供一种在创建帐户时注册新闻通讯的方式,以及通过更新其 EE 个人资料来订阅(取消)订阅的选项。 是否有
我想在不使用任何 PHP 的情况下在我的 ExpressionEngine 模板中使用一些存储的 cookie 值。 我当前的模板代码 {exp:channel:entries channel="fa
我需要在 ExpressionEngine 中嵌入 jquery 文件。 我在主站点模板组下创建了模板js。 我知道 css 嵌入了以下标签: 对于 css,它的 {stylesheet=templ
我进行了一些搜索,但似乎找不到有关嵌入 channel entry tag pair 的任何信息。在另一个内。 当我在模板中尝试以下代码时,它打破了页面,我看到了开头 {reverse_related
我希望有一种方法可以将 Stash Context 与 Categories 一起使用,例如,如下所示: {exp:channel:entries channel="channel-name" dyn
我们的主客户端服务器运行 MySQL 5.0.96,但我们想升级到 5.1。我们正在运行几个较旧的 EE1.6 站点(不早于 1.6.7 iirc),其余的是 EE2.2+ 升级时是否会遇到任何陷阱/
我是一名优秀的程序员,十分优秀!