Я хочу изменить название страницы в magento. В моем app/design/frontend/default/customPackage/template/page/html/head.phtml
существуют строки, управляющие всем заголовком страницы (что я хочу просто изменить название страницы каталога)
<title> <?php if ($current_product = Mage::registry('current_product')) { echo substr($current_product->getName() . " - " . Mage::helper('core')->currency($current_product->getFinalPrice(), true, false),0,69); } else { echo substr(str_replace("- Products","",$this->getTitle()),0,100); } ?></title>
но я не хочу изменять непосредственно из head.phtml в app/design/frontend/default/customPackage/template/page/html
, вместо этого я хочу заменить этот head.phtml
другим head.phtml
в моем собственном модульном tempate files.Let, скажем, сделайте это app/design/frontend/default/customPackage/template/catalog/html/head.phtml
вместо этого
Чтобы ответить на ваш вопрос, в основном нам нужно найти, где page/html/head.phtml
файл page/html/head.phtml
. Ответ находится в файлах макета, более конкретно в page.xml
. Местоположение: app/design/frontend/<your_package>/<your_theme>/layout/page.xml
. Внутри этого файла под дескриптором <default>
вы можете видеть
<default translate="label" module="page"> <label>All Pages</label> <block type="page/html" name="root" output="toHtml" template="page/3columns.phtml"> <block type="page/html_head" name="head" as="head"> <action method="addJs"><script>prototype/prototype.js</script></action> <action method="addJs"><script>lib/ccard.js</script></action> <action method="addJs"><script>prototype/validation.js</script></action> <action method="addJs"><script>scriptaculous/builder.js</script></action> ------- </block> --------- </block> </default>
где
<default>
известен как обработчик компоновки. Блоки, которые попадают под этот обработчик, будут отображаться на каждой странице в пурпуре.
block page/html
– ваш корневой блок. Это родительский блок всех остальных блоков. На странице должен быть только один корневой блок. Вы можете ссылаться на этот блок, используя его имя root
в своих файлах макета, чтобы изменить что-либо внутри этого блока.
block page/html_head
– это блок, на который ссылается ваш вопрос. Этот блок используется для хранения раздела <head />
вашей страницы (с точки зрения дерева html). Вы можете видеть, что magento загружает некоторые из своих основных javascripts и css внутри этого блока.
Но page/html_head
не задан ни одним шаблоном, как вы уже видели. Тогда как page/html/head.phtml
подошла к просмотру ??? Он должен располагаться где-то в пурпуре. Итак, давайте перейдем к внутренней стороне этого блока, где определены все его блочные методы. Местоположение файла: app/code/core/Mage/Page/Block/Html/Head.php
. Да, мы это узнали.
class Mage_Page_Block_Html_Head extends Mage_Core_Block_Template { /** * Initialize template * */ protected function _construct() { $this->setTemplate('page/html/head.phtml'); } ------ }
Итак, Magento установил шаблон для блока page/html_head
, _construct()
метод _construct()
. Измените его в своем месте шаблона
protected function _construct() { $this->setTemplate('app/design/frontend/default/customPackage/template/catalog/html/head.phtml'); }
поprotected function _construct() { $this->setTemplate('app/design/frontend/default/customPackage/template/catalog/html/head.phtml'); }
Теперь он установит расположение блока page/html_head
в ваш собственный файл шаблона.
Если вы хотите, чтобы файл блока также был не затронут, вы можете переписать этот файл блока с помощью собственного модуля. В файле config.xml вы должны использовать это
<config> <global> <blocks> <page> <rewrite> <html_head>Namespace_Modulename_Block_Html_Head</html_head> </rewrite> </page> </blocks> </global> </config>
и вы должны определить файл блока в app/code/local/Namespace/Moduleame/Block/Html/Head.php
<?php class Namespace_Modulename_Block_Html_Head extends Mage_Page_Block_Html_Head { protected function _construct() { $this->setTemplate('app/design/frontend/default/customPackage/template/catalog/html/head.phtml'); } }
по<?php class Namespace_Modulename_Block_Html_Head extends Mage_Page_Block_Html_Head { protected function _construct() { $this->setTemplate('app/design/frontend/default/customPackage/template/catalog/html/head.phtml'); } }
Таким образом, основные файлы не затронуты, и вы можете изменить путь к шаблону.