Полное расширение переиндексации для серверной части не работает. Как выполнить полную переиндексацию для 13.1 в бэкэнде?


Поскольку Magento EE 13.1 не допускает полной переиндексации в бэкэнде, я разработал расширение, которое предоставляет кнопку "Переиндексация оболочки" в бэкэнде (на странице управления индексами) и предполагает выполнение полной переиндексации. Но, похоже, "полная переиндексация" не будет запущена, похоже, были обновлены только атрибуты продукта. Кто-нибудь может мне помочь? Что не так с моим модулем?

Спасибо всем за помощь.

App/code/local/MyModule/ShellIndexer/controllers/Adminhtml/ProcessController.php

require_once 'Mage/Index/controllers/Adminhtml/ProcessController.php';
class MyModule_ShellIndexer_Adminhtml_ProcessController extends    Mage_Index_Adminhtml_ProcessController {
public function shellAction() {
    $process = Mage::getSingleton('index/indexer');
    $collection=$process->getProcessesCollection();

    $indexingProcesses = Mage::getSingleton('index/indexer')->getProcessesCollection(); 

    foreach ($indexingProcesses as $process) {
        $process->reindexEverything();
    }

    Mage::app()->getCacheInstance()->flush();
} 
}

App/code/local/MyModule/ShellIndexer/Block/Adminhtml/Process.php

    class MyModule_ShellIndexer_Block_Adminhtml_Process extends Enterprise_Index_Block_Adminhtml_Process {
    public function __construct()
    {
    $this->_blockGroup = 'enterprise_index';
    $this->_controller = 'adminhtml_process';
    $this->_headerText = Mage::helper('index')->__('Index Management');

    parent::__construct();

    $this->_removeButton('add');
    $url = Mage::helper("adminhtml")->getUrl("/process/shell");
    $script = "new Ajax.Request('".$url."',{method:'post'});";
     $this->_addButton('Shell ReIndex', array(
                      'label' => Mage::helper('index')->__('Shell Re-Index'),
                      'onclick' => $script,
                      'class' => 'save',
            ), -100);
}

}

Etc/config.xml (не имеет отношения к проблеме, но если кто-то хочет перестроить расширение)

   <?xml version="1.0"?>
<config>
<modules>
    <MyModule_ShellIndexer>
        <version>1.0.0.0</version>
    </MyModule_ShellIndexer>
</modules>

<admin>
    <routers>
        <adminhtml>
            <args>
                <modules>
                    <MyModule_ShellIndexer before="Mage_Index_Adminhtml">MyModule_ShellIndexer_Adminhtml</MyModule_ShellIndexer>
                </modules>
            </args>
        </adminhtml>
    </routers>
</admin>

<global>        
    <blocks>
        <mymodule_shellindexer>
            <class>MyModule_ShellIndexer_Block</class>
        </mymodule_shellindexer>        
        <enterprise_index>
            <rewrite>
                <adminhtml_process>MyModule_ShellIndexer_Block_Adminhtml_Process</adminhtml_process>
            </rewrite>
        </enterprise_index>
    </blocks>                                                                                                   
</global> 
</config>
Author: Stefan, 2014-12-01

1 answers

Попробуйте следующий фрагмент кода для переиндексации всего через php.

/* @var $indexCollection Mage_Index_Model_Resource_Process_Collection */
$indexCollection = Mage::getModel('index/process')->getCollection();
foreach ($indexCollection as $index) {
    /* @var $index Mage_Index_Model_Process */
    $index->reindexAll();
}

Это просто зациклит все процессы индексирования, а затем вызовет переиндексацию процесса.

 1
Author: David Manners, 2015-01-22 15:10:20