GoogleAnalyticsUniversal モジュールのエンタープライズ ブロックを拡張しようとしています。すべてうまくいきました。以下のように、レイアウト ファイルを介してカスタム テンプレートも追加しました。
<layout version="0.1.0">
<default>
<!-- Remove Mage_GoogleAnalytics -->
<remove name="google_analytics" />
<reference name="head">
<action method="addJs" ifconfig="google/analytics/active"><script>google/ga.js</script></action>
</reference>
<reference name="after_body_start">
<reference name="content">
<block type="Test_Googleanalyticsuniversal/Ga" name="google_analyticsuniversal" as="google_analyticsuniversal"
template="googleanalyticsuniversal/ga.phtml" />
</reference>
</reference>
</default>
</layout>
私のConfig.xmlとして:
<config>
<modules>
<Test_Googleanalyticsuniversal>
<version>0.0.1</version>
</Test_Googleanalyticsuniversal>
<depends>
<Enterprise_GoogleAnalyticsUniversal />
</depends>
</modules>
<global>
<helpers>
<enterprise_googleanalyticsuniversal>
<rewrite>
<data>Test_Googleanalyticsuniversal_Helper_Data</data>
</rewrite>
</enterprise_googleanalyticsuniversal>
</helpers>
<blocks>
<test_googleanalyticsuniversal>
<class>Test_Googleanalyticsuniversal_Block</class>
</test_googleanalyticsuniversal>
<enterprise_googleanalyticsuniversal>
<rewrite>
<ga>Test_Googleanalyticsuniversal_Block_Ga</ga>
</rewrite>
</enterprise_googleanalyticsuniversal>
</blocks>
</global>
<frontend>
<layout>
<updates>
<test_googleanalyticsuniversal>
<file>googleanalyticsuniversal.xml</file>
</test_googleanalyticsuniversal>
</updates>
</layout>
</frontend>
</config>
私のブロック Ga.php として:
class Test_Googleanalyticsuniversal_Block_Ga extends Enterprise_GoogleAnalyticsUniversal_Block_Ga
{
protected function _getContainerSnippet()
{
// Get the container ID.
$containerId = Mage::helper('googleanalyticsuniversal')->isTagManagerId();
// Render the container snippet JavaScript.
return "<noscript><iframe src=\"//www.googletagmanager.com/ns.html?id=".$containerId."\"
height=\"0\" width=\"0\" style=\"display:none;visibility:hidden\"></iframe></noscript>
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','".$containerId."');</script>\n";
}
/**
* Generate JavaScript for the data layer.
*
* @return string|null
*/
protected function _getDataLayer()
{
// Initialise our data source.
$data = array();
$data = $data;
// Enable modules to add custom data to the data layer
$data_layer = new Varien_Object();
$data_layer->setData($data);
$data = $data_layer->getData();
// Generate the data layer JavaScript.
if (!empty($data)) return "<script>dataLayer = [".json_encode($data)."];</script>\n\n";
else return '';
}
}
しかし、フロントエンドを実行すると、Exception.log に次のエラーが表示されます。
exception 'Mage_Core_Exception' with message 'Invalid block type: Mage_Test_Googleanalyticsuniversal_Block_Ga' in /var/www/tbstr-dev/html/app/Mage.php:595
Stack trace:
#0 /var/www/tbstr-dev/html/app/code/core/Mage/Core/Model/Layout.php(495): Mage::throwException('Invalid block t...')
#1 /var/www/tbstr-dev/html/app/code/core/Mage/Core/Model/Layout.php(437): Mage_Core_Model_Layout->_getBlockInstance('Alshaya_Googlea...', Array)
#2 /var/www/tbstr-dev/html/app/code/core/Mage/Core/Model/Layout.php(472): Mage_Core_Model_Layout->createBlock('Alshaya_Googlea...', 'google_analytic...')
#3 /var/www/tbstr-dev/html/app/code/core/Mage/Core/Model/Layout.php(239): Mage_Core_Model_Layout->addBlock('Alshaya_Googlea...', 'google_analytic...')
#4 /var/www/tbstr-dev/html/app/code/core/Mage/Core/Model/Layout.php(205): Mage_Core_Model_Layout->_generateBlock(Object(Mage_Core_Model_Layout_Element), Object(Mage_Core_Model_Layout_Element))
#5 /var/www/tbstr-dev/html/app/code/core/Mage/Core/Model/Layout.php(210): Mage_Core_Model_Layout->generateBlocks(Object(Mage_Core_Model_Layout_Element))
#6 /var/www/tbstr-dev/html/app/code/core/Mage/Core/Model/Layout.php(210): Mage_Core_Model_Layout->generateBlocks(Object(Mage_Core_Model_Layout_Element))
#7 /var/www/tbstr-dev/html/app/code/core/Mage/Core/Controller/Varien/Action.php(344): Mage_Core_Model_Layout->generateBlocks()
#8 /var/www/tbstr-dev/html/app/code/core/Mage/Catalog/controllers/CategoryController.php(148): Mage_Core_Controller_Varien_Action->generateLayoutBlocks()
#9 /var/www/tbstr-dev/html/app/code/core/Mage/Core/Controller/Varien/Action.php(418): Mage_Catalog_CategoryController->viewAction()
#10 /var/www/tbstr-dev/html/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(250): Mage_Core_Controller_Varien_Action->dispatch('view')
#11 /var/www/tbstr-dev/html/app/code/core/Mage/Core/Controller/Varien/Front.php(172): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http))
#12 /var/www/tbstr-dev/html/app/code/core/Mage/Core/Model/App.php(354): Mage_Core_Controller_Varien_Front->dispatch()
#13 /var/www/tbstr-dev/html/app/Mage.php(684): Mage_Core_Model_App->run(Array)
#14 /var/www/tbstr-dev/html/index.php(83): Mage::run('', 'store')
#15 {main}
ログでは、 as ...Mage
の前に余分なキーワードを追加しています。Test_Googleanalyticsuniversal_Block_Ga
Mage_Test_Googleanalyticsuniversal_Block_Ga
googleanalytics.xml のレイアウト ブロック タイプをさまざまな方法に変更してみました。しかし、何もうまくいきませんでした。誰でもこれについて私に提案できますか。