我在 magento 产品页面的添加到购物车成功消息中添加了一个“继续购物”按钮。我的想法是用一个简单的方法,在历史中退一步,回到产品范畴。我最初尝试过这个:
onclick="window.history.go(-1); return false;"
这在 Chrome 和 Safari 中完美运行,但仅使 FF 用户恢复到一种状态。我尝试使用其他 js 方法,但在浏览器之间总是出现这种故障。
<a href="javascript: window.history.go(-1);">
<a href="javascript: history.back(-2);">
我没有使用 AJAX 加载项目,不了解 History.js(尽管愿意学习),并且我需要一些帮助来找到解决此问题的跨浏览器解决方案。
最佳答案
此语法应该可以满足您的需求。
$category = Mage::helper('catalog/data')->getCategory();
$continues = ($category ? $this->__(' or <a href="%s">continue shopping</a>', $category->getUrl()) : '');
$message = $this->__('%s was added to your shopping cart. Click to <a href="/checkout/cart/" id="itemAdder" class="addSuccess">View Your Cart</a>%s.', Mage::helper('core')->escapeHtml($product->getName()), $continues);
$this->_getSession()->addSuccess($message);
代码中发生了什么:
- 获取类别
- 检查该类别是否存在,如果存在,则设置继续文本,如果不存在,则将其设置为空白值。 (使用PHP ternary operator)
- 在标准消息中包含 $continues 变量
- 向 session 添加成功消息。
$this__('Text here %s', $variable) 的快速解释
Magento 使用此功能主要进行文本翻译。
您看到使用的 %s
实际上被传递到函数中的变量替换。
例如,假设您有以下内容:$this__('Hello, my name is %s', $name)
在本例中,如果 $name = 'John';
,输出将为 Hello, my name is John
您也可以定义多个变量。所以如果你有:
$this__('你好,我的名字是 %s,我是 %s', $name, $jobtitle)
和 $name = 'John'
和 $jobtitle = 'Farmer'
,输出将是:
你好,我叫约翰,我是一名农民。
%s
按照变量定义的顺序替换。因此,%s
的第一个实例将被第一个变量 $name
替换,第二个实例将被 $jobtitle
替换,依此类推。您可以根据需要定义任意多个变量,只需知道变量需要按特定顺序即可。
关于javascript - Magento:需要跨浏览器 "Continue Shopping"(后退两次)按钮来重新加载当前类别页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19669417/