Magento 버전 1.8.1.0을 사용하고 있습니다.
새 홈페이지를 만드는 데 사용할 새 사용자 정의 블록 모듈을 만들려고합니다.
- 네임 스페이스 : Crusader
- 모듈 : CLHomePage
- 블록 종류 : 십자군
- 직업 : Qwerty (테스트 중)
- 디자인 패키지 : 십자군
- 테마 : 기본
이것이 내가 지금까지 가진 것입니다.
\ app \ etc \ modules \ Crusader_All.xml
<?xml version="1.0"?>
<config>
<modules>
<Crusader_CLHomePage>
<active>true</active>
<codePool>local</codePool>
</Crusader_CLHomePage>
</modules>
</config>
\ app \ code \ local \ Crusader \ CL 홈페이지 \ etc \ config.xml
<?xml version="1.0"?>
<config>
<modules>
<Crusader_CLHomePage>
<version>0.0.1</version>
</Crusader_CLHomePage>
</modules>
<global>
<blocks>
<crusaderhome>
<class>Crusader_CLHomePage_Block</class>
</crusaderhome>
</blocks>
</global>
</config>
\ app \ code \ local \ Crusader \ CL 홈페이지 \ Block \ Qwerty.php
<?php
class Crusader_CLHomePage_Block_Qwerty extends Mage_Core_Block_Template
{
// Methods (optional)
}
?>
\ app \ design \ frontend \ crusader \ default \ layout \ local.xml
<?xml version="1.0" ?>
<layout>
<cms_index_index>
<reference name="content">
<block type="core/template" name="homepage" template="crusader/home.phtml">
<block type="crusaderhome/qwerty" name="homeads" as="homeads" template="crusader/homeads.phtml" />
</block>
</reference>
</cms_index_index>
</layout>
\ app \ design \ frontend \ crusader \ default \ template \ crusader \ home.phtml
<div id="home">
<p>Home Wrapper</p>
<?php echo $this->getChildHtml('homeads'); ?>
</div>
\ app \ design \ frontend \ crusader \ default \ template \ crusader \ homeads.phtml
<p>Adverts</p>
이제 위의 내용으로 제 홈 페이지에는 "홈 래퍼" home.phtml
만 표시 되므로의 내용 은 표시되지만의 내용은 표시되지 않습니다 homeads.phtml
.
나는의 블록 타입을 변경하는 경우 homeads
에 core/template
작동, 나는 모두 "홈 래퍼"과 "광고"를 참조하십시오. 그래서 문제가 새로운 블록 유형 (십자군 집이라고 함)에 대한 참조와 관련이 있음을 알고 있습니다.
내가 여기서 뭘 잘못하고 있니?
편집하다
답변에 대한 제안 후 다음과 같이 일부 파일을 업데이트했지만 여전히 작동하지 않습니다.
\ app \ etc \ modules \ Crusader_Home.xml
<?xml version="1.0"?>
<config>
<modules>
<Crusader_Home>
<active>true</active>
<codePool>local</codePool>
</Crusader_Home>
</modules>
</config>
\ app \ code \ local \ Crusader \ Home \ etc \ config.xml
<?xml version="1.0"?>
<config>
<modules>
<Crusader_Home>
<version>1.0.0</version>
</Crusader_Home>
</modules>
<global>
<blocks>
<crusader_home>
<class>Crusader_Home_Block</class>
</crusader_home>
</blocks>
</global>
</config>
\ app \ code \ local \ Crusader \ Home \ Block \ Qwerty.php
<?php
class Crusader_Home_Block_Qwerty extends Mage_Core_Block_Template
{
// Methods (optional)
}
?>
\ app \ design \ frontend \ crusader \ default \ layout \ local.xml (이전에 시도한 중첩 블록 대신 하나의 블록 만 사용하도록 단순화 됨)
<?xml version="1.0" ?>
<layout>
<cms_index_index>
<reference name="content">
<block type="crusader_home/qwerty" name="homepage" template="crusader/home.phtml" />
</reference>
</cms_index_index>
</layout>
\ app \ design \ frontend \ crusader \ default \ template \ crusader \ home.phtml
<p>Home</p>
그래서 나는 여전히 아무것도 보이지 않는 위치에 있습니다.
@FabianBlechschmidt에 의해 프롬프트가 표시되면 로그를 켰습니다. 이는 exception.log에 표시됩니다.
2014-04-09T14:04:54+00:00 ERR (3):
exception 'Mage_Core_Exception' with message 'Invalid block type: Crusader_Home_Block_Qwerty' in W:\stores\magento-dev\app\Mage.php:595
Stack trace:
#0 W:\stores\magento-dev\includes\src\__default.php(27744): Mage::throwException('Invalid block t...')
#1 W:\stores\magento-dev\includes\src\__default.php(27686): Mage_Core_Model_Layout->_getBlockInstance('crusader_home/q...', Array)
#2 W:\stores\magento-dev\includes\src\__default.php(27721): Mage_Core_Model_Layout->createBlock('crusader_home/q...', 'homepage')
#3 W:\stores\magento-dev\includes\src\__default.php(27488): Mage_Core_Model_Layout->addBlock('crusader_home/q...', 'homepage')
#4 W:\stores\magento-dev\includes\src\__default.php(27454): Mage_Core_Model_Layout->_generateBlock(Object(Mage_Core_Model_Layout_Element), Object(Mage_Core_Model_Layout_Element))
#5 W:\stores\magento-dev\includes\src\__default.php(27459): Mage_Core_Model_Layout->generateBlocks(Object(Mage_Core_Model_Layout_Element))
#6 W:\stores\magento-dev\includes\src\__default.php(13895): Mage_Core_Model_Layout->generateBlocks()
#7 W:\stores\magento-dev\includes\src\__default.php(11274): Mage_Core_Controller_Varien_Action->generateLayoutBlocks()
#8 W:\stores\magento-dev\includes\src\__default.php(11213): Mage_Cms_Helper_Page->_renderPage(Object(Mage_Cms_IndexController), 'home')
#9 W:\stores\magento-dev\app\code\core\Mage\Cms\controllers\IndexController.php(45): Mage_Cms_Helper_Page->renderPage(Object(Mage_Cms_IndexController), 'home')
#10 W:\stores\magento-dev\includes\src\__default.php(13969): Mage_Cms_IndexController->indexAction()
#11 W:\stores\magento-dev\includes\src\__default.php(18331): Mage_Core_Controller_Varien_Action->dispatch('index')
#12 W:\stores\magento-dev\includes\src\__default.php(17865): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http))
#13 W:\stores\magento-dev\includes\src\__default.php(20465): Mage_Core_Controller_Varien_Front->dispatch()
#14 W:\stores\magento-dev\app\Mage.php(684): Mage_Core_Model_App->run(Array)
#15 W:\stores\magento-dev\index.php(176): Mage::run('crusadergifts', 'store')
#16 {main}
무슨 일이 일어나고 있는지 어떤 아이디어 .. ??
편집 2
@Malachy 답을 찾았습니다 ... 그것은 컴파일러였습니다. 컴파일러를 비활성화했으며 현재 작동하는 것 같습니다.
exception 'Mage_Core_Exception' with message 'Invalid block type: Crusader_Home_Block_Qwerty'