5

私が作成しているモジュールの問題は、それが一種の JavaScript スニペットを生成することです。そのため、アクションを使用してそれを HTML のセクションにフックすることはできません。なぜなら、アクションには JS ファイルが必要だからです (私が間違っている場合は修正してください)違う)。タグに JavaScript スニペットを挿入するには、どのような方法がありますか? ブロックを使用することを考えていましたが、ブロックの後に何を追加すればよいかわかりません。これはすべてのテーマで機能することを考慮する必要があります。

4

3 に答える 3

8

ストックヘッドのテンプレートは

template/page/html/head.phtml

そのファイルを自分のテーマにコピーするのが、javascript を頭に入れる最も簡単な方法です。

ただし (開発者の観点から)、このテンプレートには次の行が含まれています。

<?php echo $this->getChildHtml() ?>

about リンクは、ブロックのすべての子ブロックを出力します。したがって、head ブロックに子ブロックを追加することもできます。

<layouts>
    <default> <!-- does this to all pages — use specific layout handles to target a page -->
        <reference name="head"> <!-- get a reference to the existing head block -->
            <block type="core/text" name="simple_example_javascript_block"> <!-- append a simple text block, probably better to use a new template block -->
                <action method="setText"> <!-- set our new block's text -->
                    <text><![CDATA[
                    <script type="text/javascript">
                        alert("foo");
                    </script>
                    //]]></text>
                </action>
            </block>
        </reference>
    </default>
</layouts>

上記の XML は単純なcore/textブロックを使用して、JavaScript をすべての Magento ページに追加します。から動作しlocal.xmlます。他の場所で動作するはずです。これを行うためのより良い方法が頭に浮かぶはずです(たとえば、テンプレートブロック)

于 2012-07-26T17:59:09.417 に答える
1

Alan Storm のソリューションは機能しますが、スクリプトまたは HTML データをテンプレート ファイルに含めて、XML から分離したい場合があります。

<?xml version="1.0"?>
<layouts>
    <default>
        <reference name="before_head_end">
            <block type="page/html_head" output="toHtml" name="some_name" template="some_name/head.phtml" />
        </reference>
    </default>
</layouts>
于 2013-03-02T23:06:08.870 に答える
-1

これは恥ずかしいハックですが、Alan Storm が指摘したように、これは adminhtml では機能しないので、コード/ファイルを最小限に抑えようとする精神で、magento をハックしましたが、これは私のために機能しています笑

$layout = Mage::app()->getLayout();
$headBlock = $layout->getBlock('head');

$headBlock->addLinkRel('blank', '" />
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
    <script type="text/javascript">jQuery.noConflict();</script>
<link rel="blank" href="');
于 2013-07-10T14:32:28.027 に答える