0

我在 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(尽管愿意学习),我需要一些帮助来找到解决此问题的跨浏览器解决方案。

4

2 回答 2

1

此语法应该可以满足您的需要。

$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 三元运算符
  3. 在标准消息中包含 $continues 变量
  4. 将成功消息添加到会话。

快速解释$this__('Text here %s', $variable)

Magento 使用此功能进行大部分文本翻译。

你看到使用的%s实际上被传递给函数的变量所取代。

例如,假设你有这个:$this__('Hello, my name is %s', $name)

在这种情况下,如果$name = 'John';,输出将是Hello, my name is John

您也可以定义多个变量。因此,如果您有:
$this__('Hello, my name is %s and I am a %s', $name, $jobtitle)

$name = 'John'$jobtitle = 'Farmer'输出将是:
Hello, my name is John and I am a Farmer.

以定义变量的%s顺序替换。所以第一个实例%s将被第一个变量$name替换,第二个被替换$jobtitle,依此类推。您可以根据需要定义任意数量的变量,只需知道变量需要按特定顺序排列即可。

于 2013-10-31T15:09:11.483 回答
1

正如评论中所讨论的,我只是为我的提议提供了一个粗略的例子。

一旦客户访问产品类别页面,我想将类别ID保存到会话中,这意味着该逻辑可以在产品类别页面或其块中实现。(推荐后者,但确实需要写一个模块并覆盖原来的块。)我的示例将直接在template/catalog/category/view.phtml中实现(默认主题)。

$_category_id = $_category->getId();
Mage::getModel('core/session')->set('last_visit_category_id', $_category_id);

然后,当您执行 AJAX 添加到购物车操作或重定向到购物车页面时:

$_category_id = Mage::getModel('core/session')->get('last_visit_category_id');
$_category = Mage::getModel('catalog/category')->load($_category_id);

让我们将上述代码块称为getRecommendCategory,您可以更改逻辑以根据客户的活动为客户推荐类别。

希望这可以帮助。

于 2013-11-05T07:23:23.023 回答