Magento通过商店id或商店代码获取当前页面标题


Magento get current page title by store id or store code

有没有办法通过商店代码或id获取当前页面标题?

以下代码给出了当前页面的标题,但属于当前选择的商店视图,例如http://example.com/it/shop.html这是意大利商店视图。

上下文为~/Model/Controller/Page.php

$title = Mage::getSingleton('core/layout')->getBlock('head')->getTitle();

我正试图找出通过特定商店代码(如enit或id(获取当前页面标题的方法。这是为了始终强制Segment.io analytics page调用英文文本。

您尝试过以下代码吗??

  $page = Mage::getModel('cms/page')->setStoreId(Mage::app()->getStore()->getId())->load('Page-Identifier');
    $pageTitle = $page->getTitle();

不,至少没那么容易。标题可以设置在任何位置,并且它被设置为本地化字符串,没有任何附加信息。

示例

类别页面

标题设置在Mage_Catalog_Block_Category_View块中

if ($headBlock = $this->getLayout()->getBlock('head')) {
    $category = $this->getCurrentCategory();
    if ($title = $category->getMetaTitle()) {
        $headBlock->setTitle($title);
    }

产品页面

标题设置在Mage_Catalog_Block_Product_View块中

$headBlock = $this->getLayout()->getBlock('head');
if ($headBlock) {
    $product = $this->getProduct();
    $title = $product->getMetaTitle();
    if ($title) {
        $headBlock->setTitle($title);
    }

CMS页面

标题设置在Mage_Cms_Block_Page块中

$head = $this->getLayout()->getBlock('head');
if ($head) {
    $head->setTitle($page->getTitle());

购物车

标题设置在Mage_Checkout_CartController中(这次不是块!(

$this
    ->loadLayout()
    ->_initLayoutMessages('checkout/session')
    ->_initLayoutMessages('catalog/session')
    ->getLayout()->getBlock('head')->setTitle($this->__('Shopping Cart'));

等等,等等

不幸的是,没有一点可以挂钩,您必须单独处理所有情况

唯一常见的方法是Mage_Page_Block_Html_Head::setTitle(),如前所述,这太晚了,因为它已经获得了本地化的字符串。

此外,正如您在示例中看到的,有时标题是__()的翻译文本,有时它是当前商店视图上下文中模型的属性。

在PHTML文件的上下文中,我认为您只能翻译如下字符串:

$this->__($this->getLayout()->getBlock('head')->getTitle())

如果要使用存储视图转换,则应该在块类或控制器中的某个位置使用setTitle