我需要更改购物车页面标题。但我找不到它。我应该在哪里改变它。所以任何帮助表示赞赏。
谢谢
更改 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"
如果您确实有该文件,则只需编辑该行,确保您的新标题遵循原始标题和逗号并用双引号引起来。
正确的方法是覆盖结帐控制器,非常简单。首先:添加一个带有两个子目录的新模块:controllers 等 Mynamespace/Checkout/controllers Mynamespace/Checkout/etc
然后,在 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 中测试的。
问候
标题实际上是在该页面的 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>
另一件事要提的是,您还可以在 a 中进行这些更改local.xml
(这是我推荐的)。该local.xml
文件将加载所有其他 XML 文件,并且您对该文件的更改将覆盖布局目录中的任何其他 XML 文件。一个很好的教程可以在这里找到。
试试这个 :
<reference name="head">
<action method="setTitle"><title>My New Checkout Title</title></action>
</reference>