购物车Magento的页面标题更改

时间:2012-04-10 16:39:23

标签: php magento magento-1.5

我需要更改购物车页面标题。但我找不到它。在哪里我应该改变它。所以任何帮助表示赞赏。

enter image description here

感谢

5 个答案:

答案 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)

以下是如何覆盖标题的简短示例。

Force title

您可以更改变量并覆盖指定 layout.xml 文件中的标题。

答案 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>