Есть ли способ получить заголовок текущей страницы по коду магазина или идентификатору?
Следующий код дает название текущей страницы, но в данный момент выбрано представление магазина, например http://example.com/it/shop.html Это итальянский магазин.
Контекст ~ / Model / Controller / Page.php
$title = Mage::getSingleton('core/layout')->getBlock('head')->getTitle();
Я пытаюсь найти способ получить заголовок текущей страницы по определенному коду магазина, например en
или же it
или идентификатор Это для того, чтобы всегда заставлять аналитику Segment.io page
позвоните на английский текст.
Вы пробовали код ниже?
$page = Mage::getModel('cms/page')->setStoreId(Mage::app()->getStore()->getId())->load('Page-Identifier');
$pageTitle = $page->getTitle();
В контексте phtml-файла, я думаю, вы можете переводить только такие строки:
$this->__($this->getLayout()->getBlock('head')->getTitle())
Если вы хотите использовать перевод из магазина, вы должны setTitle
где-то в блоке класса или контроллера …
Нет, по крайней мере, не так просто. Заголовок мог быть установлен где угодно, и он установлен как локализованная строка без какой-либо дополнительной информации.
Название устанавливается в пределах 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);
}
Название устанавливается в пределах 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()
и, как было сказано ранее, это слишком поздно, потому что он уже получает локализованную строку.
Кроме того, как вы можете видеть в примерах, иногда заголовок представляет собой переведенный текст с __()
а иногда это атрибут модели в контексте текущего представления магазина.