【问题标题】:Magento Upgrade Script - Reindexing Catalog Url RewritesMagento 升级脚本 - 重新索引目录 URL 重写
【发布时间】:2013-11-21 11:44:53
【问题描述】:

我想通过升级脚本截断 magento core_url_rewrite 表并重新索引目录 url 重写。该表被截断,但重新索引目录 url 不起作用。请任何帮助..

//truncate magento core_url_rewrite table
$installer = $this;
$installer->startSetup();
$installer->run(
"TRUNCATE TABLE `{$this->getTable('core_url_rewrite')}` "
);

$installer->endSetup();

// reindex catalog url rewrites
$indexCatUrl = Mage::getSingleton('index/indexer')->getProcessByCode('catalog_url');
try {

$indexCatUrl->reindexAll();

} catch(Exception $e) {
$this->log('Error Reindex all ' . $e);
throw ($e);
}

【问题讨论】:

    标签: magento url rewrite reindex


    【解决方案1】:

    简而言之,应该使用数据设置脚本而不是 sql 脚本来执行重新索引。要了解原因,我们需要了解一点 Magento 的引导过程...

    Magento 有两种类型的设置脚本。有sql脚本和数据脚本。 sql 脚本位于“sql/nameofsetupresource_setup/”文件夹中,并在 Magento 的引导过程中相对较早地执行。 SQL 脚本旨在用于模式更改等,而不是用于数据操作。当 Magento 执行 sql 脚本时,它会在一个特殊的“更新模式”下执行,并且各种 API 调用(尤其是围绕 Multi-store 功能)不起作用(或在此模式下无法正常工作)。

    一旦所有的 sql 脚本和一些 Magento 引导过程发生后,就会运行第二批设置脚本。 “data”脚本位于“data/nameofsetupresource_setup”中,被命名为“data-upgrade-0.1.0-0.1.1.php”而不是“mysql4-upgrade-0.1.0-0.1.1.php”。一旦我们使用 sql 脚本更新了架构,这些“数据”脚本旨在用于在我们的数据库中插入/操作数据。数据脚本不会在更新模式下执行,Magento 内核已完全初始化并可以使用。

    所有 Magento 索引器都关心为安装中的每个“商店”构建正确的数据。即使您没有使用 Magento 中的多存储功能,索引器也需要查找可用的存储代码等才能正确完成工作。尝试在 sql 脚本中重新索引时,存储数据不可用,但在数据脚本中运行时,索引器可以获得所需的信息并正常工作。

    有关数据脚本的更多信息,this blog post from Inchoo 应该会引导您朝着正确的方向前进。

    【讨论】:

    • 很好的解释,非常有用。我已经创建了数据升级并添加了重新索引目录 url 部分。完美地工作......
    • 我自己最近也遇到了完全相同的事情。花了点功夫才弄明白,我很高兴我能节省别人的时间!
    猜你喜欢
    • 2012-02-14
    • 2013-10-11
    • 1970-01-01
    • 1970-01-01
    • 2011-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多