外部JavaScriptファイルをMagentoに追加して、コードがすべてのフロントエンドページに含まれるようにする方法
JSファイルを「js」フォルダーのどこかに配置し、XMLレイアウトに次のように含めることができます。
<reference name="head">
<action method="addJs"><script>folder/file.js</script></action>
</reference>
お役に立てば幸いです。
編集:ブロックで行うこともできます:
protected function _prepareLayout()
{
$this->getLayout()->getBlock('head')->addJs('path/from/js/folder/to/your/file.js');
return parent::_prepareLayout();
}
問題なく外部JSを追加するには、これを使用します。
<reference name="head">
<block type="core/text" name="google.cdn.jquery">
<action method="setText">
<text>
<![CDATA[<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script><script type="text/javascript">jQuery.noConflict();</script>]]>
</text>
</action>
</block>
</reference>
Inchoo_Xternal 拡張機能を使用できます。そのため、次のようなことができます。
<layout version="0.1.0">
<default>
<reference name="head">
<action method="addItem"><type>external_css</type><name>http://developer.yahoo.com/yui/build/reset/reset.css</name><params/></action>
<action method="addItem"><type>external_js</type><name>http://yui.yahooapis.com/2.8.2r1/build/yahoo-dom-event/yahoo-dom-event.js</name><params/></action>
<action method="addExternalItem"><type>external_js</type><name>http://yui.yahooapis.com/2.8.2r1/build/imageloader/imageloader-min.js</name><params/></action>
<action method="addExternalItem"><type>external_css</type><name>http://yui.yahooapis.com/2.8.2r1/build/fonts/fonts-min.css</name><params/></action>
</reference>
</default>
<catalog_product_view>
<reference name="head">
<action method="removeItem"><type>external_css</type><name>http://developer.yahoo.com/yui/build/reset/reset.css</name><params/></action>
<action method="removeItem"><type>external_js</type><name>http://yui.yahooapis.com/2.8.2r1/build/yahoo-dom-event/yahoo-dom-event.js</name><params/></action>
<action method="removeExternalItem"><type>external_js</type><name>http://yui.yahooapis.com/2.8.2r1/build/imageloader/imageloader-min.js</name><params/></action>
<action method="removeExternalItem"><type>external_css</type><name>http://yui.yahooapis.com/2.8.2r1/build/fonts/fonts-min.css</name><params/></action>
</reference>
</catalog_product_view>
</layout>
ここ これに関する詳細情報を見つけることができます。
<block type="core/text" name="jquery">
<action method="setText">
<text>
<![CDATA[<script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.9/jquery.validate.min.js?ver=3.9.2"></script>]]>
</text>
</action>
</block>
以下を作成/編集します。
app/design/frontend/PATH/TO/YOURTHEME/layout/local.xml
そのように見せてください-自明であるべきです...
<!-- Add an EXTERNAL stylesheets -->
<action method="addLinkRel"><rel>stylesheet</rel><href>https://fonts.googleapis.com/css?family=Roboto+Condensed:300italic,400,300,700|Open+Sans:300italic,400,300</href></action>
<!-- Add an EXTERNAL javascript -->
<action method="addLinkRel"><rel>text/javascript</rel><href>https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js</href></action>
<!-- Add stylesheets from your local theme directory located in skin/frontend/ -->
<action method="addCss"><stylesheet>css/styles.css</stylesheet></action>
<!-- Add javascript from your local theme directory located in skin/frontend/ -->
<action method="addJs"><script>bootstrap.min.js</script></action>
2.1.7で正常に動作します
app/design/frontend/PATH/TO/YOURTHEME/layout/default_head_blocks.xml
<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<head>
<css src="css/bootstrap.min.css" />
<css src="css/YOUR.css" order="99" />
<link src="js/jquery.js" />
<link src="js/bootstrap.js" />
<link src="js/YOUR.js" />
</head>
</page>
スクリプトはWebサイトと同じドメインでホストされておらず、構成変数を使用して制御する必要があるため、上記の方法はどれも役に立ちませんでした。
これが私の解決策でした:
/** @var Mage_Core_Model_Layout $layout */
$layout = Mage::getSingleton('core/layout');
/** @var Mage_Core_Block_Text $block */
$block = $layout->createBlock('Mage_Core_Block_Text', $name);
$block->setText('<script type="text/javascript" src="'.$url.'"></script>');
/** @var Mage_Page_Block_Html_Head $head */
$head = $layout->getBlock('head');
$head->append($block);
controller_action_layout_generate_blocks_after
を観察するオブザーバーでこれを行いました
メソッド「addItem」および「link_rel」と入力して、page.xmlから外部cssファイルを追加します
<action method="addItem"><type>link_rel</type> <name>//vjs.zencdn.net/4.12/video-js.css</name><params>rel="stylesheet"</params></action>