Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Magento:在每个前端页面的头部添加链接_Php_Magento_Magento 1.9 - Fatal编程技术网

Php Magento:在每个前端页面的头部添加链接

Php Magento:在每个前端页面的头部添加链接,php,magento,magento-1.9,Php,Magento,Magento 1.9,我有一个模块,需要在前端的每个页面上都注入一个规范链接到。有办法吗?目前,考虑到我的模块不需要前端有自己的页面,也不需要任何控制器,我只在config.xml中设置了helper。现在,我的布局中确实有一个xml,但问题是我需要根据用户输入(在管理中)更改规范链接属性,所以xml不适合。是的,我确实可以打开前面的布局xml文件,然后替换我需要的内容,然后将新内容写回它,但我想首先检查是否有其他方法可以实现这一点。您可以在事件之前挂接核心块\u摘要\u准备\u布局,\u并使用Head块的addLi

我有一个模块,需要在前端的每个页面上都注入一个规范链接到
。有办法吗?目前,考虑到我的模块不需要前端有自己的页面,也不需要任何控制器,我只在config.xml中设置了helper。现在,我的布局中确实有一个xml,但问题是我需要根据用户输入(在管理中)更改规范链接属性,所以xml不适合。是的,我确实可以打开前面的布局xml文件,然后替换我需要的内容,然后将新内容写回它,但我想首先检查是否有其他方法可以实现这一点。

您可以在
事件之前挂接
核心块\u摘要\u准备\u布局,\u并使用Head块的addLinkRel方法添加链接标记

在config.xml中,您需要定义一个观察者,如下所示:

<events>
    <core_block_abstract_prepare_layout_before>
        <observers>
            <your_module>
                <class>Your_Module_Model_Observer</class>
                <method>addCanonicalLink</method>
            </your_module>
        </observers>
    </core_block_abstract_prepare_layout_before>
</events>

您可以在
事件之前连接到
core\u block\u abstract\u prepare\u layout\u,并使用Head block的addLinkRel方法添加链接标记

在config.xml中,您需要定义一个观察者,如下所示:

<events>
    <core_block_abstract_prepare_layout_before>
        <observers>
            <your_module>
                <class>Your_Module_Model_Observer</class>
                <method>addCanonicalLink</method>
            </your_module>
        </observers>
    </core_block_abstract_prepare_layout_before>
</events>

无法完全理解你的愿望你在说模板制作吗?你是什么意思?我不是说模板制作。我只想将
注入每个页面
,在那里
foobar
将从数据库中提取。我不太明白您的愿望您在谈论模板制作吗?您是什么意思?我不是说模板制作。我只想将
注入到每个页面
,其中
foobar
将从数据库中提取。假设我的模块是Foo/Bar(公司/模块),我是否使用
Foo\u Bar\u Model\u Observer
?这是正确的。使用该类名,observer文件的路径应为Foo/Bar/Model/observer.phpy您只能通过这种方式将rel和href属性添加到
标记中。只要在你之前的评论中读到你想要标题和类型属性。在我的布局文件中,我使用了setText,我能在观察者中也使用它吗?不,
page/html\u head
块没有setText方法。你需要一个
核心/文本
。但是,addItem方法将适合您的需要。只需将addLinkRel调用替换为:
$block->addItem('link\u rel','http://your-url,rel=“canonical”type=“Your type”title=“Your title”)假设我的模块是Foo/Bar(公司/模块),我是否使用
Foo\u Bar\u Model\u Observer
?这是正确的。使用该类名,observer文件的路径应为Foo/Bar/Model/observer.phpy您只能通过这种方式将rel和href属性添加到
标记中。只要在你之前的评论中读到你想要标题和类型属性。在我的布局文件中,我使用了setText,我能在观察者中也使用它吗?不,
page/html\u head
块没有setText方法。你需要一个
核心/文本
。但是,addItem方法将适合您的需要。只需将addLinkRel调用替换为:
$block->addItem('link\u rel','http://your-url,rel=“canonical”type=“Your type”title=“Your title”)
$canonical = $block->getLayout()->createBlock('core/text')
    ->setText('<link rel="canonical" href="http://your-url.com">')
$block->append($canonical);