我一直在使用Magento 1.13代码几个小时,而我很难理解他们在URL重写方面做了些什么.我希望有人调查过这个可能会指出我正确的方向.
我注意到不再使用core_url_rewrite(或者至少默认情况下它是空的,我添加的任何新产品和类别都没有反映在core_url_rewrite表中).相反,它们被添加到新的enterprise_url_rewrite表中.
这非常简单,但是,我注意到添加了很多其他表(即enterprise_url_rewrite_category_cl,enterprise_url_rewrite_product_cl,enterprise_url_rewrite_redirect_cl,enterprise_url_rewrite_redirect_rewrite).我使用MySQL Workbench对表进行了反向工程,我提出了以下EER图:

上面的EER图没有显示enterprise_url_rewrite_redirect和enterprise_url_rewrite之间的连接,但是(至少我假设)在enterprise_url_rewrite_redirect_rewrite表中管理的两个之间存在关系.我的问题是关于其他表格的作用.它们每个都有一个version_id作为主键和一个redirect_id或entity_id外键.我假设的enterprise_url_rewrite_redirect_cl外键与enterprise_url_rewrite_redirect主键有关.
我的第一个问题是这个表的目的是什么?我看不出它有多大帮助.我对该表进行了项目范围的搜索,并且无法找到它甚至被创建的位置,更不用说了.如果这个问题的答案显而易见,请原谅我.
我的第二个问题与enterprise_url_rewrite_product_cl和enterprise_url_rewrite_category_cl表有关.看来这两个表都有entity_ids.我想知道是否有人知道这些entity_ids可能指的是什么?
我还从代码中注意到,访问模型的典型方式已经改变.例如,Enterprise/AdminGws/Model/Controllers.php的第781行具有以下代码更改:
从:
$object = Mage::getModel('core/url_rewrite')->load($id);
Run Code Online (Sandbox Code Playgroud)
至:
$object = Mage::getSingleton('core/factory')->getUrlRewriteInstance()->load($id);
Run Code Online (Sandbox Code Playgroud)
现在,来自Mage_Core_Model_Factory:
const XML_PATH_URL_REWRITE_MODEL = 'global/url_rewrite/model';
. . .
public function getUrlRewriteInstance()
{
return $this->getModel($this->getUrlRewriteClassAlias());
}
. . .
public function getUrlRewriteClassAlias()
{
return (string)$this->_config->getNode(self::XML_PATH_URL_REWRITE_MODEL);
}
Run Code Online (Sandbox Code Playgroud)
我们看到XML Path是global/url_rewrite/model.如果我们查看匹配的Config.xml:
<url_rewrite>
<model>core/url_rewrite</model>
</url_rewrite>
Run Code Online (Sandbox Code Playgroud)
最后,查看Mage/Core/Model/Url/Rewrite.php,我发现了以下两个函数:
/**
* Implement logic of custom rewrites
. . .
* @deprecated since 1.7.0.2. Refactored and moved to Mage_Core_Controller_Request_Rewrite
*/
Run Code Online (Sandbox Code Playgroud)
public function rewrite(...){...
和
/**
* Prepare and return QUERY_STRING
. . …Run Code Online (Sandbox Code Playgroud) 我对Android很新,并且一直在开发游戏.每次我都有用户报告memory exceptions,我发现这很令人惊讶,因为我创建的位图大小最多为200 kb.我打电话BitmapFactory.decodeResource()时,我创建一个新的sprite.由于我的应用程序是一个僵尸防御游戏,你可以期待我经常创建精灵.
每次我创建一个精灵,我都会调用decode资源来生成一个位图.我的问题是,如果我只在每个活动开始时调用解码资源,并在包级别引用位图,这是否会减少VM预算上的内存量?
我知道这个问题已被提出,但我一直无法找到对我有用的答案.我有一个我自己构建的自定义模块,它在搜索结果时也会搜索CMS静态页面.在这个模块中,我有一个更新布局xml的文件.我确信我的xml正在加载.出于某种原因,我尝试删除或取消设置分层导航并将其移动到右列没有结果.下面是我的代码,我希望有人能指出我的错误.谢谢!
<layout version = "0.1.0">
<catalog_category_default>
<reference name="left">
<action method="unsetChild"><name>catalog.leftnav</name></action>
</reference>
<reference name="right">
<action method="insert"><child>catalog.leftnav</child></action>
</reference>
</catalog_category_default>
<catalogsearch_result_index>
<reference name="content">
<block type="cmssearch/results" name="cms-search-results-view" after="search.result" template="cmssearch/cmssearchview.phtml">
</block>
</reference>
<reference name="left">
<!-- <remove name = "catalogsearch.leftnav" /> -->
<action method="unsetChild"><name>catalogsearch.leftnav</name></action>
</reference>
<reference name="right">
<!-- <block type="catalogsearch/layer" name="catalogsearch.leftnav" before="+" template="catalog/layer/view.phtml"/> -->
<action method="insert"><child>catalogsearch.leftnav</child></action>
</reference>
</catalogsearch_result_index>
<catalog_category_layered>
<reference name="left">
<action method="unsetChild"><name>catalog.leftnav</name></action>
</reference>
<reference name="right">
<action method="insert"><child>catalog.leftnav</child></action>
</reference>
</catalog_category_layered>
Run Code Online (Sandbox Code Playgroud)