আমরা একই সমস্যাটি অনুভব করেছি, দেখে মনে হচ্ছে সম্পর্কিত পণ্যগুলির সাথে আমদানি মডিউলে কোনও ধরণের বাগ রয়েছে
আমরা একটি নতুন কনসোল কমান্ড যা 2 টি কলাম নেই (পিতা বা মাতা SKU & শিশুদের skus) আশা লিখে এটা মীমাংসিত করেছি related.csv ফাইল Var children_skus বিভাজক হিসেবে CSV বিভাজক হিসেবে কমা, এবং নল দিয়ে, ফোল্ডার
আপনি যদি চেষ্টা করতে চান তবে এই ফাইলগুলি। আপনি সিনাপসিসকে আপনার পছন্দসই বিক্রেতার নাম এবং আপনার পছন্দসই মডিউল নামের সাথে সিঙ্ক করুন
মডিউলটি ইনস্টল করার পরে, চালনা করুন bin/magento setup:upgrade
এবং আপনি যদি পরীক্ষা করেন তবে নতুন কমান্ডটি দেখতে পাবেন bin/magento list
যা চালিয়ে চালিত হতে পারেbin/magento sync:related
হালনাগাদ
২.২। * সংস্করণ থেকে, এখানে দুটি পরিবর্তনের প্রয়োজন রয়েছে: $product
সমস্যাটি প্রতিরোধের জন্য সংরক্ষণের আগে একটি অতিরিক্ত লাইন এখানে রিপোর্ট করা হয়েছে https://github.com/magento/magento2/issues/10687
$product->unsetData('media_gallery');
আর পরিবর্তন অ্যাডমিন থেকে adminhtml মধ্যে
$this->_appState->setAreaCode('adminhtml');
আমি মনে করি প্রথম পরিবর্তনটি পুরানো সংস্করণগুলির জন্য নির্দোষ, দ্বিতীয়টির মতো নয়। সুতরাং আমি নীচের কোডে প্রথম প্রথম যুক্ত করেছি
অ্যাপ্লিকেশন / কোড / সিনাপসিস / সিঙ্ক / ইত্যাদি / di.xML
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<type name="Magento\Framework\Console\CommandList">
<arguments>
<argument name="commands" xsi:type="array">
<item name="sync_related" xsi:type="object">Sinapsis\Sync\Console\Command\RelatedCommand</item>
</argument>
</arguments>
</type>
অ্যাপ / কোড / সিনাপসিস / সিঙ্ক / ইত্যাদি / মডিউল.এক্সএমএল
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="module.xsd">
<module name="Sinapsis_Sync" setup_version="1.0.0">
</module>
অ্যাপ্লিকেশন / কোড / সিনাপসিস / সিঙ্ক / নিবন্ধকরণ.পিএফ
<?php
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::MODULE,
'Sinapsis_Sync',
__DIR__
);
অ্যাপ্লিকেশন / কোড / সিনাপসিস / সিঙ্ক / কনসোল / কমান্ড / সম্পর্কিতকম্যান্ড.এফপি
<?php
namespace Sinapsis\Sync\Console\Command;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Magento\Framework\ObjectManagerInterface;
use Magento\Framework\App\State as AppState;
use Magento\Framework\App\Filesystem\DirectoryList;
class RelatedCommand extends Command
{
const CSV_SEPARATOR = ',';
const CHILDREN_SEPARATOR = '|';
protected $_appState;
protected $_objectManager;
protected $_directorylist;
public function __construct(
DirectoryList $_directorylist,
AppState $appState,
ObjectManagerInterface $objectManager
) {
$this->_appState = $appState;
$this->_objectManager = $objectManager;
$this->_directorylist = $_directorylist;
parent::__construct();
}
protected function configure()
{
$this->setName('sync:related')
->setDescription('Synchronize catalog related products');
parent::configure();
}
protected function execute(InputInterface $input, OutputInterface $output)
{
$output->writeln('<info>Starting process...<info>');
$output->writeln('');
$this->_appState->setAreaCode('admin');
$productRepository = $this->_objectManager->create('Magento\Catalog\Model\ProductRepository');
$output->writeln('<info>Loading csv content...<info>');
$output->writeln('');
$filePath = $this->_directorylist->getPath('var') . DIRECTORY_SEPARATOR . 'related.csv';
//@todo control Exception if file does not exist
$parseData = array();
if (($handle = fopen($filePath, "r")) !== FALSE) {
while (($data = fgetcsv($handle, 0, self::CSV_SEPARATOR)) !== FALSE) {
$parseData[] = $data;
}
fclose($handle);
} else {
$output->writeln('<info>Could not read .csv file<info>');
return;
}
$headers = array_shift($parseData); // remove headers
foreach ($parseData as $row){
$skuParent = trim($row[0]);
$skuChildren = trim($row[1]);
$output->writeln('<info>Loading parent product ' . $skuParent . ' ... <info>');
try {
$product = $productRepository->get($skuParent);
} catch (\Magento\Framework\Exception\NoSuchEntityException $e){
$output->writeln('<info>Could not load!<info>');
continue;
}
$links = $product->getProductLinks();
$children = explode(self::CHILDREN_SEPARATOR, $skuChildren);
$i = 1;
foreach ($children as $skuChild){
$output->writeln('<info>Loading related product ' . $skuChild . ' ... <info>');
try {
$child = $productRepository->get($skuChild);
} catch (\Magento\Framework\Exception\NoSuchEntityException $e){
$output->writeln('<info>Could not load!<info>');
continue;
}
$productLink = $this->_objectManager->create('Magento\Catalog\Api\Data\ProductLinkInterface')
->setSku($skuParent)
->setLinkedProductSku($skuChild)
->setPosition($i)
->setLinkType('related');
$links[] = $productLink;
$i++;
}
$product->setProductLinks($links);
$product->unsetData('media_gallery');
$productRepository->save($product);
$output->writeln('<info>Relations saved for ' . $skuParent . '<info>');
}
$output->writeln('');
$output->writeln('<info>Done<info>');
}
}