【发布时间】:2011-09-09 08:07:31
【问题描述】:
我正在努力在我的客户仪表板上创建一个新的非常简单的部分。像 www.mymagentosite.com/customer/rid 之类的东西(rid 只包括静态链接)。但是,当我尝试访问 www.mymagentosite.com/customer/rid 时,我总是得到一个 404 Magento 页面(日志文件中没有异常或系统消息)
我错过了什么?
谢谢
到目前为止我所做的是:
-在/app/code/local/Mage/Customer/Block/Account/Dashboard/Rid.php下新建一个Block
class Mage_Customer_Block_Account_Dashboard_Rid extends Mage_Core_Block_Template
{
public function getCustomer()
{
return Mage::getSingleton('customer/session')->getCustomer();
}
}
-在/app/code/local/Mage/Customer/controllers/RidController.php下新建一个控制器
class Mage_Customer_RidController extends Mage_Core_Controller_Front_Action
{
protected function _getSession()
{
return Mage::getSingleton('customer/session');
}
public function preDispatch()
{
parent::preDispatch();
if (!Mage::getSingleton('customer/session')->authenticate($this)) {
$this->setFlag('', 'no-dispatch', true);
}
}
public function indexAction()
{
if (count($this->_getSession()->getCustomer()->getAddresses())) {
$this->loadLayout();
$this->_initLayoutMessages('customer/session');
$this->_initLayoutMessages('catalog/session');
$block = $this->getLayout()->getBlock('rid');
if ($block) {
$block->setRefererUrl($this->_getRefererUrl());
}
$this->renderLayout();
} else {
$this->getResponse()->setRedirect(Mage::getUrl('*/*/new'));
}
}
}
-在/app/code/local/Mage/Customer/Helper/Rid.php下新建一个helper
class Mage_Customer_Helper_Rid extends Mage_Core_Helper_Abstract
{
public function getRenderer($renderer)
{
if(is_string($renderer) && $className = Mage::getConfig()->getBlockClassName($renderer)) {
return new $className();
} else {
return $renderer;
}
}
}
-编辑文件/app/design/frontend/default/MYTHEME/layout/customer.xml
<customer_account_index translate="label">
<label>Customer My Account Dashboard</label>
<update handle="customer_account"/>
<!-- EXISTING CODE -->
<reference name="my.account.wrapper">
<!-- EXISTING CODE -->
<block type="customer/account_dashboard_rid" name="rid" as="rid"
template="customer/account/dashboard/rid.phtml"></block>
</block>
</reference>
</customer_account_index>
<customer_rid_index translate="label">
<label>RID</label>
<!-- Mage_Customer -->
<update handle="customer_account"/>
<reference name="my.account.wrapper">
<block type="customer/rid" name="address_book"
template="customer/account/dashboard/rid.phtml"/>
</reference>
</customer_rid_index>
-创建/app/design/frontend/default/MYTHEME/template/customer/account/dashboard/rid.phtml
【问题讨论】:
-
请粘贴您的 config.xml,这是解决您问题的真正有趣的文件
-
嗨@osdave,我没有接触config.xml。这是您可以在基本安装中找到的标准 config.xml。我应该改变哪一部分?感谢您的帮助!
-
哎呀,抱歉,没有看到您没有创建模块,而是破解了核心(您真的不应该这样做)。我已经复制了你的代码,它在这里工作正常。缓存可能吗?
-
@OSdave,我在“本地”中创建了所有新代码,所以我并没有真正破解核心。只是走捷径(或者我就是这样)。那么,您是说您只编辑/创建了我列出的文件,如果您键入 /customer/rid,它会显示实际页面?你接触过其他 XML 吗?缓存(不幸的是)似乎不是我这边的问题/解决方案的一部分。还有其他想法吗?