最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

Magento 1 - add inline javascript to product page via layout update xml code - Stack Overflow

programmeradmin5浏览0评论

Hi i want to use google analytics's AB-Testing engine. Therefore i have to add a javascript-snippet to single product pages.

My intend was to add it in the description or short-description. It is working, but it is insufficient, because the script makes a redirect, which means the page loads half and then is redirected.

Google says i should add the script in the head-tag. Is it possible to insert the script as "custom layout update" here:

i could imagine something like

<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>alert('hello')</script></action>
            </block>
        </block>
</default>

Hi i want to use google analytics's AB-Testing engine. Therefore i have to add a javascript-snippet to single product pages.

My intend was to add it in the description or short-description. It is working, but it is insufficient, because the script makes a redirect, which means the page loads half and then is redirected.

Google says i should add the script in the head-tag. Is it possible to insert the script as "custom layout update" here:

i could imagine something like

<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>alert('hello')</script></action>
            </block>
        </block>
</default>
Share Improve this question edited Jul 19, 2018 at 9:52 Gerard de Visser 8,0509 gold badges53 silver badges62 bronze badges asked May 28, 2014 at 8:12 wutzebaerwutzebaer 14.9k20 gold badges105 silver badges178 bronze badges
Add a comment  | 

2 Answers 2

Reset to default 23

It's cleaner to load the javascript from file. You do not necessarily need all that blocks but can do it like:

<default translate="label" module="page">   
    <reference name="head">
        <action method="addJs"><script>path/to/script.js</script></action>
    </reference>
</default>

Path is relative path from js folder in magento root.

To add javascript to xml directly (which I do not recommend) you can use CDATA, like:

<reference name="head">
    <block type="core/text" name="your.block.name">
        <action method="setText">
            <text><![CDATA[<script type="text/javascript">alert('hello');</script>]]></text>
        </action>
    </block>
</reference>

my solution was to extend the head block:

<?php
class Company_Modulename_Block_Html_Head extends Mage_Page_Block_Html_Head {
    public function addInlineJs($name)
    {
        $this->addItem('inlinejs', $name);
        return $this;
    }

    public function getCssJsHtml()
    {
        $html = parent::getCssJsHtml();

        foreach ($this->_data['items'] as $item) {
            if($item['type']=='inlinejs') {
                $html .= sprintf('<script type="text/javascript">%s</script>' . "\n", $item['name']);
            }
        }

        return $html;
    }
}

now i can use it like that

<reference name="head">
       <action method="addInlineJs"><script>alert('cool');</script></action>
</reference>
发布评论

评论列表(0)

  1. 暂无评论