我在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(虽然愿意学习),我需要帮助找到解决此问题的跨浏览器解决方案。
答案 0 :(得分: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);
代码中发生了什么:
$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
替换,依此类推。您可以根据需要定义任意数量的变量,只需知道变量需要按特定顺序排列。
答案 1 :(得分: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 ,您可以更改逻辑,根据客户的活动为客户推荐类别。
希望这会有所帮助。