Исключение Magento "Mage_Core_Exception" с сообщением "Недопустимый тип блока
Я пытаюсь расширить корпоративный блок модуля 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}
В лог добавляется доп Mage
Ключевое слово перед Test_Googleanalyticsuniversal_Block_Ga
как Mage_Test_Googleanalyticsuniversal_Block_Ga
...
Я попытался изменить тип блока макета в googleanalytics.xml многими разными способами. Но ничего не получилось. Так может кто-нибудь подсказать мне об этом.