如何在 Magento 中重新加载块?
Posted
技术标签:
【中文标题】如何在 Magento 中重新加载块?【英文标题】:How to reload block in Magento? 【发布时间】:2016-02-27 02:48:06 【问题描述】:我正在为 Magento 开发一个圣诞节模块。 每天都会在网站的索引页面上出现一个弹出窗口。 此弹出窗口将包含一张图片和一个链接。
为了加载弹出窗口,我定义了要使用的 css (module.phtml):
<?php
$today = explode(".",date("d.m.y"));
$month = $today[1];
$day = $today[0];
$file = 'POP UP '.$day.'.jpg';
$class = 'block block-AdventCalendar'.$day;
?>
<div class="<?php echo $class ?>">
</div>
CSS 文件 (app-base.css) 中的示例:
.block-AdventCalendar1
background-image: url('../images/popupAdvent/POP UP 1.jpg');
background-size: 100% 100%;
color: #fff;
margin: 0;
height:350px;
width :700px;
这段代码可以正常工作,但是当时间发生变化时,Magento 会加载错误的 CSS 类。 为了显示正确的图像,我必须每天清除 Magento 缓存。
但是,当我修改 phtml 文件中的某些内容时,更改会立即显示,只有内联 CSS 不会重新加载。
有人想强制 phtml 加载正确的 css 吗?
【问题讨论】:
【参考方案1】:问题不是由 CSS 引起的。 如果我更改它或 phtml,所有更改都是立即的。
只有 div 类保持不变
<div class="<?php echo $class ?>">
【讨论】:
【参考方案2】:您也可以尝试 javascript 替代方案:
<script>
var dateObj = new Date();
var month = dateObj.getUTCMonth() + 1; //months from 1-12
var day = dateObj.getUTCDate();
var element = document.getElementById('your_div_id');
if (element)
element.className += element.className ? ' block-AdventCalendar'+day : 'block-AdventCalendar'+day;
</script>
在要添加类的 div 之后添加它。另外,给你的 div 一个唯一的 ID (<div id="your_div_id">...</div>
)
【讨论】:
感谢亚历克斯的回答。我试过用JS,probème是一样的。所有 phtml 文件都重新加载,除了这一行,而缓存不为空。 这很奇怪。 Javascript 在浏览器中执行,缓存对它几乎没有影响:/【参考方案3】:尝试使用这个:
Mage::app()->cleanCache();
在代码加载后清除 Magento 缓存。
【讨论】:
以上是关于如何在 Magento 中重新加载块?的主要内容,如果未能解决你的问题,请参考以下文章
如何在类别产品列表底部的 magento 2.1.8 中移动静态块
Magento 2 - 如何在另一个 phtml 文件、xml 布局、静态块和 cms 页面中调用自定义 phtml 文件?