У меня есть код, который я использовал на нашем старом сайте Magento 1 для обновления продуктов.Мы перешли на Magento 2, и мне нужно конвертировать код.Я не PHP-разработчик и не Magento-разработчик, но я программист, поэтому, хотя я могу читать код, я не могу его написать.Я надеюсь, что кто-то здесь может помочь мне сделать окончательное преобразование кода.
В версии Magento 1 был этот загрузчик:
include_once("app/Mage.php");
Mage::app();
umask(0);
Mage::app()->setCurrentStore(Mage::getModel('core/store')->load(Mage_Core_Model_App::ADMIN_STORE_ID));
$counter = 0;
У меня были функции, которые абстрагировали быGetProduct
и SaveProduct
код для меня:
function GetProduct($sku)
{
global $counter;
echo $sku;
$p = Mage::getModel('catalog/product');
$productId = $p -> getIdBySku($sku);
if($productId)
{
echo "!";
$p -> load( $productId );
}
else
{
$p->setTypeId('simple');
$p->setVisibility(Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH);
$p->setStatus(1);
$p->setTaxClassId(7);
$p->setWebsiteIDs(array(1));
$p->setStoreIDs(array(1));
$p->setAttributeSetId(4);
$p->setSku($sku);
}
echo "...";
$counter++;
echo " ".$counter;
return $p;
}
function SaveProduct($p)
{
try
{
if (is_array($errors = $p->validate()))
{
$strErrors = array();
foreach($errors as $code=>$error)
{
$strErrors[] = ($error === true)? Mage::helper('catalog')->__('Attribute "%s" is invalid.', $code) : $error;
echo $strErrors[0];
}
$this->_fault('data_invalid', implode("\n", $strErrors));
}
$p->save();
echo "\n";
}
catch (Mage_Core_Exception $e)
{
$this->_fault('data_invalid', $e->getMessage());
}
}
Этот код позволил мне сделать такие вещи:
$product = GetProduct('MOJFABL02'); $product->setData('upc', '00228633'); SaveProduct($product); unset($product);
$product = GetProduct('COLTWCP16SIL'); $product->setData('upc', '011179322862'); SaveProduct($product); unset($product);
$product = GetProduct('CONPAS001CP'); $product->setData('upc', '011179520770'); SaveProduct($product); unset($product);
$product = GetProduct('COLDEDC01RED'); $product->setData('upc', '780984516338'); SaveProduct($product); unset($product);
$product = GetProduct('NCHFAPP07'); $product->setData('upc', '9311965111955'); SaveProduct($product); unset($product);
$product = GetProduct('COLTWCP10RBL'); $product->setData('upc', '9311965320555'); SaveProduct($product); unset($product);
Это позволило быстро и легко обновить продукты.
Я нашел следующий код начальной загрузки Magento 2:
use Magento\Framework\App\Bootstrap;
require __DIR__ . '/app/bootstrap.php';
$params = $_SERVER;
$bootstrap = Bootstrap::create(BP, $params);
$obj = $bootstrap->getObjectManager();
$state = $obj->get('Magento\Framework\App\State');
$state->setAreaCode('frontend');
И это прекрасно работает с этим кодом:
$p = $obj->get('Magento\Catalog\Model\Product');
$productId = $p -> getIdBySku("LOLINV001");
echo($productId);
$p -> load( $productId );
echo($p->getName());
Мне просто не хватает знаний и умения конвертироватьGetProduct
и SaveProduct
.
Могу я попросить помощи в конвертации, пожалуйста?