2015-04-13 6 views
-1

Я нашел this решение онлайн и нашлось больше похожее на это. Мне нужно запустить такой же профиль. Это индивидуальный импорт продукта. Я хочу знать, как я могу выбрать правильный файл csv в этом скрипте?Запуск magento import import cron

ответ

-1

Я получил это, создав внешний контроллер с помощью контроллера импорта продукта admin. Затем написал сценарий для вызова внешнего интерфейса с использованием php curl.

интерфейс Layout XML

<layout version="0.1.0"> 

    <importproduct_cronimport_run> 
     <remove name="footer" /> 
     <remove name="top.search" /> 
     <remove name="cart_sidebar" /> 
     <remove name="header" /> 
     <remove name="top.menu" /> 
     <remove name="root" /> 
     <reference name="content"> 
      <block type="importproduct/system_convert_run" name="system_convert_run" template="importproduct/cronimport.phtml" output="toHtml" /> 
     </reference> 
    </importproduct_cronimport_run> 

</layout> 

фасадом PHTML файл

<?php 
    $this->getProfile()->run(); 

    $array = array("batchId" => $this->getBatchModel()->getId(), "count" => $this->getBatchItemsCount()); 
    $rows = []; 

    $importData = $this->getImportData(); 
    $arrCounter = 0; 
    foreach ($importData as $importValue){ 
     $rows[] = $importValue["rows[]"][0]; 
     $arrCounter++; 
    } 

    $array["rows"] = $rows; 
    echo "<br>jsonDataStart{".$this->jsonEncode($array)."}jsonDataEnd"; 
?> 

Вот основная часть скрипта.

function importcsv($baseurl,$csv,$logFile){ 
    Mage::log('Start importproduct/cronImport/run',null,'prod_import.log'); 
    $url = $baseurl."importproduct/cronImport/run/id/3/files/".$csv; 

    $curl = curl_init(); 
    curl_setopt($curl, CURLOPT_URL, $url); 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 

    $result = curl_exec ($curl); 
    $error = curl_error($curl)."\r\n"; 
    curl_close ($curl); 

    Mage::log('Print errors if any',null,'prod_import.log'); 
    file_put_contents($logFile, $error, FILE_APPEND | LOCK_EX); 
    Mage::log('End importproduct/cronImport/run',null,'prod_import.log'); 

    /**** Extract Batch ID and Row IDs ***********/ 
    $jsonDataStart = stripos($result,"jsonDataStart{") + 14; 
    $jsonDataEnd = stripos($result,"}jsonDataEnd"); 
    $jsonLength = $jsonDataEnd - $jsonDataStart; 

    $jsonArray = substr($result, $jsonDataStart, $jsonLength); 

    $simpleArray = json_decode($jsonArray, true); 

    $batchId  = $simpleArray["batchId"]; 
    $totalRecords = $simpleArray["count"]; 
    $rowIdList = $simpleArray["rows"]; 

    for ($x = 0; $x < $totalRecords; $x++) { 
     /*** call batchRun ***/ 
     Mage::log('Start importproduct/cronImport/batchRun/id/'.$batchId."/row/".$rowIdList[$x],null,'prod_import.log'); 

     $url = $baseurl."importproduct/cronImport/batchRun/"; 
     $post = "batch_id=".$batchId."&rows%5B%5D=".$rowIdList[$x]; 

     $curl = curl_init(); 
     curl_setopt($curl, CURLOPT_URL, $url); 
     curl_setopt($curl, CURLOPT_POST, 1); 
     curl_setopt($curl, CURLOPT_POSTFIELDS, $post); 
     curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 

     $result = curl_exec ($curl); 
     $error = curl_error($curl)."\r\n"; 
     curl_close ($curl); 

     Mage::log('Print errors if any',null,'prod_import.log'); 
     file_put_contents($logFile, $error, FILE_APPEND | LOCK_EX); 
     Mage::log('End importproduct/cronImport/batchRun/id/'.$batchId."/row/".$rowIdList[$x],null,'prod_import.log'); 
    } 

    /*** call batchFinish ***/ 
    Mage::log('Start importproduct/cronImport/batchFinish/id/'.$batchId,null,'prod_import.log'); 

    $url = $baseurl."importproduct/cronImport/batchFinish/id/".$batchId."/"; 
    $curl = curl_init(); 
    curl_setopt($curl, CURLOPT_URL, $url); 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 

    $result = curl_exec ($curl); 
    $error = curl_error($curl)."\r\n"; 
    curl_close ($curl); 

    Mage::log('Print errors if any',null,'prod_import.log'); 
    file_put_contents($logFile, $error, FILE_APPEND | LOCK_EX); 
    Mage::log('End importproduct/cronImport/batchFinish/id/'.$batchId,null,'prod_import.log'); 

    /**** Move imported file to directory Imported ****/ 
    if (file_exists("var/import/".$csv)) { 
     $t=time(); 
     $timestamp = date("Y-m-d-H-i-s",$t); 
     rename("var/import/".$csv, "var/import/imported/".$timestamp." - ".$csv); 
    } 
} 

Комментарий, если вам нужно больше деталей.

+0

Я получаю ниже ошибки при попытке запуска. Неустранимая ошибка: вызов функции-члена run() на null в /opt/lampp/htdocs/magento/app/design/frontend/base/default/template/importproduct/cronimport.phtml в строке 2 – Indian

+0

Что вы пишете в Блок system_convert_run? – Indian