javascript - Magento:需要跨浏览器 "Continue Shopping"(后退两次)按钮来重新加载当前类别页面

标签 javascript magento magento-1.7

我在 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);

代码中发生了什么:

  1. 获取类别
  2. 检查该类别是否存在,如果存在,则设置继续文本,如果不存在,则将其设置为空白值。 (使用PHP ternary operator)
  3. 在标准消息中包含 $continues 变量
  4. 向 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/

相关文章:

javascript - 正则表达式适用于 PCRE 和 Python,但不适用于 Javascript

nginx - 同时使用 Varnish 和 Nginx 缓存

php - Magento 从 php 刷新缓存

e-commerce - 如何在magento中调整媒体图像的大小?

magento - 在 Magento 中将子类别更改为根类别

javascript - Mobx Reactjs 对我不起作用(我无法注入(inject)我的商店)

javascript - 在 $.click 事件处理程序中重新定义它

javascript - 从 Javascript 中的对象返回值

magento - 如何更改 Magento 中媒体 URL 的默认图标

php - 如何从 Magento 扩展程序创建的自定义菜单中调用 Controller ?