Я хочу изменить название страницы в 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'); } }
Таким образом, основные файлы не затронуты, и вы можете изменить путь к шаблону.