Magento получает название текущей страницы по идентификатору магазина или коду магазина

Есть ли способ получить заголовок текущей страницы по коду магазина или идентификатору?

Следующий код дает название текущей страницы, но в данный момент выбрано представление магазина, например http://example.com/it/shop.html Это итальянский магазин.

Контекст ~ / Model / Controller / Page.php

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

Я пытаюсь найти способ получить заголовок текущей страницы по определенному коду магазина, например en или же it или идентификатор Это для того, чтобы всегда заставлять аналитику Segment.io page позвоните на английский текст.

3

Решение

Вы пробовали код ниже?

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

$pageTitle = $page->getTitle();
1

Другие решения

В контексте phtml-файла, я думаю, вы можете переводить только такие строки:

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

Если вы хотите использовать перевод из магазина, вы должны setTitle где-то в блоке класса или контроллера …

0

Нет, по крайней мере, не так просто. Заголовок мог быть установлен где угодно, и он установлен как локализованная строка без какой-либо дополнительной информации.

Примеры

Страница категории

Название устанавливается в пределах 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() и, как было сказано ранее, это слишком поздно, потому что он уже получает локализованную строку.

Кроме того, как вы можете видеть в примерах, иногда заголовок представляет собой переведенный текст с __() а иногда это атрибут модели в контексте текущего представления магазина.

0
По вопросам рекламы [email protected]