我需要更改购物车页面标题。但我找不到它。在哪里我应该改变它。所以任何帮助表示赞赏。
感谢
答案 0 :(得分:5)
更改XML将无效,因为标题由控制器在app / code / core / Mage / Checkout / controllers / CartController.php设置。
$this
->loadLayout()
->_initLayoutMessages('checkout/session')
->_initLayoutMessages('catalog/session')
->getLayout()->getBlock('head')->setTitle($this->__('Shopping Cart'));
修改核心文件绝不是一个好主意,而重写控制器可能会很乏味。因此,更改此位置的正确和最快的位置是位于app / locale / YOUR_LANGUAGE / Mage_Checkout.csv的翻译文件。如果您在相关目录中没有此文件,则可以创建它并只添加以下行:
"Shopping Cart","NEW TITLE HERE"
如果你有文件,那么只需编辑该行,确保你的新标题遵循原始标题和逗号,并用双引号括起来。
答案 1 :(得分:2)
正确的做法是,在结账控制器上进行覆盖,非常简单。 第一: 添加一个包含两个子目录的新模块:控制器等。 myNameSpace对象/结帐/控制器 myNameSpace对象/结帐/等
然后,在etc目录中添加文件:CartController.php,其中包含下一个内容:
require_once 'Mage/Checkout/controllers/CartController.php';
class Mynamespace_Checkout_CartController extends Mage_Checkout_CartController
{
public function indexAction()
{
$cart = $this->_getCart();
if ($cart->getQuote()->getItemsCount()) {
$cart->init();
$cart->save();
if (!$this->_getQuote()->validateMinimumAmount()) {
$minimumAmount = Mage::app()->getLocale()->currency(Mage::app()->getStore()->getCurrentCurrencyCode())
->toCurrency(Mage::getStoreConfig('sales/minimum_order/amount'));
$warning = Mage::getStoreConfig('sales/minimum_order/description')
? Mage::getStoreConfig('sales/minimum_order/description')
: Mage::helper('checkout')->__('Minimum order amount is %s', $minimumAmount);
$cart->getCheckoutSession()->addNotice($warning);
}
}
// Compose array of messages to add
$messages = array();
foreach ($cart->getQuote()->getMessages() as $message) {
if ($message) {
// Escape HTML entities in quote message to prevent XSS
$message->setCode(Mage::helper('core')->escapeHtml($message->getCode()));
$messages[] = $message;
}
}
$cart->getCheckoutSession()->addUniqueMessages($messages);
/**
* if customer enteres shopping cart we should mark quote
* as modified bc he can has checkout page in another window.
*/
$this->_getSession()->setCartWasUpdated(true);
Varien_Profiler::start(__METHOD__ . 'cart_display');
$this
->loadLayout()
->_initLayoutMessages('checkout/session')
->_initLayoutMessages('catalog/session')
->getLayout()->getBlock('head')->setTitle($this->__('Here it go the new title!!!!'));
$this->renderLayout();
Varien_Profiler::stop(__METHOD__ . 'cart_display');
}
}
然后是config.xml文件:
<config>
<modules>
<Mynamespace_Checkout>
<version>0.1.0</version>
</Mynamespace_Checkout>
</modules>
<frontend>
<routers>
<checkout>
<args>
<modules>
<mynamespace_sales before="Mage_Checkout">Mynamespace_Checkout</mynamespace_sales>
</modules>
</args>
</checkout>
</routers>
</frontend>
最后,模块激活器:app / etc / modules / Mynamespace_Checkout.xml
<config>
<modules>
<Mynamespace_Checkout>
<active>true</active>
<codePool>local</codePool>
</Mynamespace_Checkout>
</modules>
</config>
这是在Magento Enterprise 1.13中测试的。
问候
答案 2 :(得分:1)
答案 3 :(得分:1)
标题实际上是在该页面的XML中设置的。您应该打开app/design/frontend/packagename/themename/layout/
目录中的checkout.xml文件,并将此代码放在XML中的节点内:
<reference name="head">
<action method="setTitle"><title>My New Checkout Title</title></action>
</reference>
默认情况下,如果未明确指定页面标题,我相信它会抓取与句柄关联的标签(现在标签是“购物车”,这就是您获得该标题的原因)。
以下是我的代码:
<checkout_cart_index translate="label">
<label>Shopping Cart</label>
<remove name="right"/>
<remove name="left"/>
<!-- Mage_Checkout -->
<reference name="head">
<action method="setTitle"><title>My New Checkout Title</title></action>
</reference>
<reference name="root">
<action method="setTemplate"><template>page/1column.phtml</template></action>
</reference>
<!-- More Below -->
</checkout_cart_index>
还有一点需要注意的是,您还可以在local.xml
中进行这些更改(这是我建议的)。 local.xml
文件将加载所有其他XML文件,并且您对该文件的更改将覆盖布局目录中的任何其他XML文件。可以找到一个非常好的教程here。
答案 4 :(得分:0)
试试这个:
<reference name="head">
<action method="setTitle"><title>My New Checkout Title</title></action>
</reference>