gpt4 book ai didi

php - 仅在 Widget 页面上加载样式表

转载 作者:行者123 更新时间:2023-12-04 14:42:40 25 4
gpt4 key购买 nike

如何仅在包含自定义 Widget 的页面上将样式表动态加载到 Magento 的“head”部分?

对于我的脚本,我这样做:

if($this->getLayout()->getBlock('namespace_module_scripts')==false) {
$block = $this->getLayout()
->createBlock('core/template', 'namespace_module_scripts')
->setTemplate('namespace/module/scripts.phtml');
$this->getLayout()->getBlock('before_body_end')->insert($block);
}

这是我的 Widget block 类中 _prepareLayout() 的当前内容。我尝试对样式使用相同的方法,将 before_body_end 换成 head,这对于放置 Widget 实例或手动将 block 放置在我的布局 xml 中非常有用,但是当插入页面内容中的内联小部件头部部分似乎先于小部件呈现,因此我的样式模板无法插入到头部 block 中。

我(希望如此)的临时解决方案是在我的布局 xml 中的每个页面上加载样式。有更好的方法吗?

最佳答案

看起来你是 SOL,你通过

{{widget...}}}

标签。与实例或直接通过包布局 XML 更新文件添加实例不同,Magento 似乎可以动态呈现这些 block 。也就是说,直到在 CMS 内容 block 上调用 toHtml 时,Magento 才会实例化 {{widget...}} block 。到那时头部 block 已经呈现,并且以编程方式操纵它不再有任何效果。

这是我会采用的方法。听起来添加 javascript 仍然有效(这是有道理的,因为 CMS 内容 block 将在 before_body_end block 之前呈现。)查看 loading CSS files via Javascript 的技术。 (旧链接,如果你想要 web 2ish 的东西,请谷歌搜索)。这样你就可以添加一个可以添加 CSS 文件的 javascript block 。这样,您的所有代码仍然局限于小部件,并且您仍然可以验证 html 输出。这是一种很常见的技术。

其他方法包括

  1. 刚刚将您的样式添加到文档中。糟糕的 HTML 实践等等(风格不在头脑中),但你不会是第一个这样做的人。

  2. 有一个 block 总是添加到头部,并且包含条件渲染逻辑。在呈现之前,让它检查您的小部件的布局对象(通过类型)或者让它检查此请求是否针对 CMS 页面,以及是否检查 CMS 页面的内容是否有指令({{widget ...}}) 用于呈现您的小部件。如果任一为真,则呈现 CSS 链接。如果不是,则不会呈现链接。

关于php - 仅在 Widget 页面上加载样式表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5224306/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com