নতুন ওয়েবসাইট অন্তর্ভুক্ত করতে বাল্ক আপডেট পণ্য


16

একটি ক্লায়েন্টের 7 টি ওয়েবসাইট সহ 20000+ পণ্য রয়েছে। তাদের 4 টি ওয়েবসাইট ছিল এবং বেশিরভাগ পণ্য 4 টি ওয়েবসাইটের সাথে সম্পর্কিত। নতুন ওয়েবসাইটগুলি অন্তর্ভুক্ত করতে পণ্যগুলির মাধ্যমে পুনরাবৃত্তি হওয়া এবং পণ্যগুলি আপডেট করার সর্বোত্তম এবং দ্রুততম উপায় কী।

আমার কাছে নিম্নোক্ত কোডটি রয়েছে তবে এটি অত্যন্ত ধীর:

Col প্রোডাক্ট কালেকশন = ম্যাজ :: গেটমোডেল ('ক্যাটালগ / প্রোডাক্ট') -> গিথ সংগ্রহ ()
    -> অ্যাডফিল্ডটোফিল্টার ('স্কু', অ্যারে ('লাইক' => '02% '));
foreach ($ পণ্য হিসাবে পণ্য সংগ্রহ) {
    প্রতিধ্বনি $ পণ্য-> getSku ();
    $ Product-> setWebsiteIds (অ্যারে (1,2,3,4,5,6,7));
    চেষ্টা করুন
        $ Product-> সংরক্ষণ করুন ();
        প্রতিধ্বনি "- সংরক্ষিত";
    } ধরা (ব্যতিক্রম $ ই) {
        প্রতিধ্বনি '-'। $ ই-> getMessage ();
    }
    প্রতিধ্বনি "\ n";
}

আমি পুনরুক্তি হাঁটার পদ্ধতিটি ব্যবহার করার কথা ভাবছিলাম তবে আমি বুঝতে পারি যে স্টোর / ওয়েবসাইট হ'ল কোনও বৈশিষ্ট্য নয় তাই এটি সহজেই আপডেট করা যায় না।

উত্তর:


36

পদক্ষেপ 1
আপনার নতুন ওয়েবসাইট আইডির সাহায্যে একটি অ্যারে তৈরি করুন।

$websiteIds = array(5,6,7);

পদক্ষেপ 2
এখন সমস্ত পণ্যের আইডি পান।

$productIds= Mage::getResourceModel('catalog/product_collection')->getAllIds();

পদক্ষেপ 3
নতুন ওয়েবসাইটগুলিতে সমস্ত পণ্য বরাদ্দ করুন:

Mage::getModel('catalog/product_website')->addProducts($websiteIds, $productIds);

পদক্ষেপ 4
নিজের সম্পর্কে ভাল লাগছে।


1
ধন্যবাদ মারিয়াস নিখুঁত উত্তর. (আমি ভোট দিয়ে যাব তবে আমি এখনও পারব না)
রাজ

3
পদক্ষেপ 5 একটি গিস্ট তৈরি করুন: gist.github.com/mauricioprado00/2b730532689d28dcdb2b । আপনি "php -f শেল / প্রোডাক্ট ওয়েবসাইট.এফপি - - সমস্ত - ওয়েবসাইটগুলিতে সমস্ত উত্পাদন করতে পারেন" বা ওয়েবসাইট / পণ্য আইডি নির্দিষ্ট করতে পারেন।
অযথা

বাহ ... এটি একটি আশ্চর্যজনক নিখুঁত দক্ষ সমাধান। এমনকি আমি তাদের আপডেট করার জন্য অনেকগুলি পণ্য লুপ করতে যাচ্ছিলাম। আমি কীভাবে ম্যাজেন্টো সম্পর্কে এই জাতীয় ধারণা শিখতে চাই তা জানতে চাই।
দীপংশু গোয়েল

সাধারণ মারিয়াস ফ্যাশনে, কবজির মতো কাজ করেছেন!
স্পেয়ার সাইকেল

1
পণ্যগুলি ফ্ল্যাট ক্যাটালগে প্রদর্শিত হবে না এবং সীমান্তে দৃশ্যমান নয়। - সংরক্ষণ () পদ্ধতিটি ব্যবহার করার সময় পণ্যগুলি উপস্থিত হয়। কেউ কি জানেন যে কেন মারিয়াসের পদ্ধতিটি এই সমস্যা দেয়? M1.9, 4 ওয়েবসাইট, 15 কে পণ্য, ফ্ল্যাট ক্যাটালগ
টম

3

আপনি শুধুমাত্র পণ্য হস্তান্তর করা হয়েছে যুক্ত করতে চান তাহলে সব 4 পূর্বে বিদ্যমান ওয়েবসাইট, এই ব্যবহার করুন:

$oldWebsiteIds = [2, 3, 4, 5];
$newWebsiteIds = [6, 7, 8]

/** @var Mage_Catalog_Model_Resource_Product_Collection $productCollection */
$productCollection = Mage::getResourceModel('catalog/product_collection');
$productCollection->addWebsiteFilter($oldWebsiteIds );
// only filter products present in ALL of the websites
$productCollection->getSelect()
    ->having('COUNT(website_id) = ?', count($oldWebsiteIds))
    ->distinct(false)
    ->group('e.entity_id');
$productIds = $productCollection->getAllIds();

Mage::getModel('catalog/product_website')->addProducts($newWebsiteIds, $productIds);

আরও দেখুন: ওয়েবসাইট ব্যবহার করে ফিল্টার করুন পণ্যগুলি ও

এটি ম্যাজেন্টো সেটআপ স্ক্রিপ্ট বা নিক্ষিপ্ত পিএইচপি স্ক্রিপ্ট হতে পারে ( include 'app/Mage.php';এক্ষেত্রে শীর্ষে যুক্ত করুন এবং এটি ব্যবহারের পরে এটি সার্ভার থেকে অপসারণ করুন)


1

পদক্ষেপ 1: সমস্ত ওয়েবসাইটের আইডি পান / ওয়েবসাইট আইডির অ্যারে তৈরি করুন

$websiteIds = Mage::getResourceModel('core/website_collection')->getAllIds();

পদক্ষেপ 2: সমস্ত পণ্যের আইডি পান

$productIds= Mage::getResourceModel('catalog/product_collection')->getAllIds();

পদক্ষেপ 3: সমস্ত পণ্য ওয়েবসাইট আইডি যোগ করুন

$actionModel = Mage::getSingleton('catalog/product_action');
$actionModel->updateWebsites($productIds, $websiteIds, 'add');

দ্রষ্টব্য: আপনি যদি পণ্যটি থেকে ওয়েবসাইটটি সরাতে চান। ব্যবহার সরিয়ে পরিবর্তে যোগ শব্দ

$actionModel->updateWebsites($productIds, $websiteIds, 'remove');

0

আপনার অলসতা যদি কোনও পিএইচপি ফাইল তৈরি করতে না চায় এমন বিন্দুতে চলে যায় তবে আর একটি সমাধান:

INSERT IGNORE INTO catalog_product_website
SELECT entity_id, {website_id} FROM catalog_product_entity

আমার জন্য কাজ করেছেন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.