IM 有一个奇怪的实例,其中通过 CMS 后端创建的页面没有显示在网站上。这仅发生在我新创建的 40 个页面中的一个上。我曾尝试删除页面并重新制作它,但这会产生相同的错误。我也尝试将状态更改为禁用并返回启用,但这也不起作用。
我只是在控制台或其他地方得到一个没有错误的白页。有什么想法吗?
IM 有一个奇怪的实例,其中通过 CMS 后端创建的页面没有显示在网站上。这仅发生在我新创建的 40 个页面中的一个上。我曾尝试删除页面并重新制作它,但这会产生相同的错误。我也尝试将状态更改为禁用并返回启用,但这也不起作用。
我只是在控制台或其他地方得到一个没有错误的白页。有什么想法吗?
您的帖子对程序员需要帮助您的细节有所了解,所以这就是我如何调试它
Magento 使用以下方法查找 CMS 页面。
#File: app/code/core/Mage/Cms/Model/Resource/Page.php
public function checkIdentifier($identifier, $storeId)
{
$stores = array(Mage_Core_Model_App::ADMIN_STORE_ID, $storeId);
$select = $this->_getLoadByIdentifierSelect($identifier, $stores, 1);
$select->reset(Zend_Db_Select::COLUMNS)
->columns('cp.page_id')
->order('cps.store_id DESC')
->limit(1);
return $this->_getReadAdapter()->fetchOne($select);
}
此代码生成一个 SQL 查询,将 URL 中的标识符与它在cms_page
表中可以找到的标识符进行比较。由于某种原因,此查询在您的 Magento 实例中返回零行。添加一些临时调试代码以输出 SQL 查询
$select->reset(Zend_Db_Select::COLUMNS)
->columns('cp.page_id')
->order('cps.store_id DESC')
->limit(1);
echo '<pre>';
echo $select->__toString();
echo '</pre>';
exit(__METHOD__ . '::' . __LINE__);
return $this->_getReadAdapter()->fetchOne($select);
并确定您的查询为什么没有返回任何行。