ম্যাজেন্টো - বিদ্যমান কনফিগারযোগ্য পণ্যগুলিতে বৈশিষ্ট্যগুলি যুক্ত / সরান


18

সঠিক পদ্ধতিটি কী - পণ্যটি মুছে ফেলার পরিবর্তে এবং বিদ্যমান কনফিগারযোগ্য পণ্যগুলির বৈশিষ্ট্যগুলি যুক্ত করতে বা অপসারণ করতে আবার শুরু করা।

একটি কনফিগারযোগ্য পণ্য তৈরি করার সময় আপনাকে পণ্যটির জন্য কোন বৈশিষ্ট্যগুলি ব্যবহার করতে হবে তা চয়ন করতে বলা হয়।

আমার এখন প্রচুর পণ্য রয়েছে যা আমার প্রাথমিকভাবে নির্বাচিত হয়েছিল তার জন্য কিছু বৈশিষ্ট্যগুলি সরিয়ে ফেলতে হবে এবং কিছু কিছুতে এটির জন্য একটি বৈশিষ্ট্য যুক্ত করা দরকার যা প্রাথমিকভাবে নির্বাচিত ছিল না।

এর সাথে যে কোনও সহায়তা প্রশংসিত হয় - কারণ পণ্যগুলি মোছা এটিকে সর্বোত্তম পদ্ধতির মতো বলে মনে হয় না। বিশেষত অন্যান্য প্রচুর পণ্যগুলির সাথে সম্পর্কিত।


এখানে সঠিক উত্তরটি হ'ল: পণ্যটি মুছুন এবং একটি নতুন তৈরি করুন, তবে এই সমস্যার সমাধান রয়েছে (এবং আমি মনে করি মডিউলগুলি) তবে আপনি নিজেকে গুগল করতে পারেন, মনে মনে এর কোনও সমাধান আমার নেই
ফ্যাবিয়ান ব্ল্যাচসমিট

আপনি কি এর জন্য কোনও সমাধান খুঁজে পেয়েছেন? নীচের সমাধান কি উত্তর? দয়া করে একটি আপডেট দিন।
ফিলিঙ্কল

আমি এখনও চেষ্টা করেছি। তবে আমি খুব শীঘ্রই এটি পরীক্ষা করব। জবাব দেওয়ার জন্য অনেক ধন্যবাদ - যদি এটি কাজ করে তবে আমি উত্তর হিসাবে চিহ্নিত করব
এগার 1111

আমার যেমন রঙের বৈশিষ্ট্য রয়েছে এবং এটি সমস্ত কনফিগারযোগ্য পণ্যটির সাথে যুক্ত ছিল n ক্ষেত্রে যদি বৈশিষ্ট্যটি মুছে ফেলা হয়েছে। যাতে এটি সেই লিঙ্কযুক্ত বৈশিষ্ট্যটি খুঁজে না পেয়ে এবং "নোটিশ: অপরিজ্ঞাত অফসেট: 0 ইন / home/not1son/public_html/vendor/magento/module-configure- প্রোডাক্ট / মডেল / প্রোডাক্ট / টাইপ / পরিবর্তন ম্যাট্রিক্স.এফপি লাইনে একটি ত্রুটি দেখায় 43 "। এই পরিস্থিতিটি পরিচালনা করতে কিছু সহায়তা দরকার advance
ভাগ্যশ্রী

উত্তর:


14

কনফিগারযোগ্য পণ্য থেকে কোনও বৈশিষ্ট্য অপসারণ করার জন্য আমার জন্য কী কাজ করতে হবে তা এখানে রয়েছে।
এটাই দৃশ্যপট। প্রায় 200 টি সাধারণ সম্পর্কিত পণ্য থাকা প্রায় 50 টি কনফিগারযোগ্য পণ্যগুলির জন্য একটি কনফিগারযোগ্য বৈশিষ্ট্য হিসাবে
বৈশিষ্ট্যযুক্ত সমস্ত কনফিগারযোগ্য পণ্য ভুল তৈরি হয়েছিল brand
একটি কনফিগারযোগ্য বৈশিষ্ট্যের সাথে সম্পর্কিত সমস্ত সাধারণ পণ্যগুলির একই ব্র্যান্ড থাকে। ধারণাটি হ'ল brandকনফিগারযোগ্য বৈশিষ্ট্যগুলি থেকে মুছে ফেলা এবং সাধারণ পণ্যগুলির একটির মান সহ কনফিগারযোগ্য পণ্যটিকে একটি সাধারণ বৈশিষ্ট্য হিসাবে সেট করুন।
এখানে কোডটি এটি করে। কোডটি একবারে চালানো হয়। এটি একটি আপগ্রেড স্ক্রিপ্ট বা একটি সাধারণ পিএইচপি ফাইলগুলিতে যুক্ত করা যেতে পারে।

<?php
//==>this is required only if you use a simple php file
error_reporting(E_ALL | E_STRICT);
$mageFilename = 'app/Mage.php';
require_once $mageFilename;
Mage::setIsDeveloperMode(true);
ini_set('display_errors', 1);
umask(0);
Mage::app();
//<==

$brand = 'brand';
//get the attribute instance
$brandAttribute = Mage::getModel('eav/config')->getAttribute('catalog_product', $brand);
//if this attribute exists
if ($brandAttribute->getId()){
    //make the attribute apply to al types of products in case it's not
    $brandAttribute->setApplyTo(null);
    $brandAttribute->save();
    $resource = Mage::getSingleton('core/resource');
    //get an object with access to direct queries
    $connection = $resource->getConnection('core_write');
    //get all configurable products - you can specify additional filters here
    $collection = Mage::getModel('catalog/product')->getCollection()
        ->addAttributeToFilter('type_id', 'configurable');
    foreach ($collection as $product){
        //the configurable attributes are stored in the table 'catalog_product_super_attribute'
        //remove the attribute references from that table. 
        //The constraints will take care of the cleanup.
        $q = "DELETE FROM {$resource->getTableName('catalog_product_super_attribute')}
            WHERE attribute_id = {$brandAttribute->getId()} AND product_id = {$product->getId()}";
        $connection->query($q);
        //get the simple products in the configurable product
        $usedProducts =  $product->getTypeInstance(true)->getUsedProducts(null, $product);
        foreach ($usedProducts as $p){
            //identify the first simple product that has a value for brand 
            //set that value to the configurable product.
            if ($brandValue = $p->getData($brand)){
                Mage::getSingleton('catalog/product_action')
                    ->updateAttributes(array($product->getId()), array($brand=>$brandValue), 0);
                break;
            }
        }
    }
}

উপরে তালিকাবদ্ধ সংখ্যার জন্য, এটি আমার স্থানীয় মেশিনে চালিত হতে প্রায় 15 সেকেন্ড সময় নিয়েছে (কোনও শক্তিশালী নয়)। আমি নিশ্চিত যে এটি অনুকূলিত হতে পারে। সম্ভবত brandমানটি পেতে কনফিগারযোগ্য পণ্যের সমস্ত সাধারণ পণ্য পাওয়ার প্রয়োজন নেই তবে আমি মাথা ঘামাইনি।


2
আমি ঘৃণা করি যে এটি এইভাবেই করতে হবে এবং একই জিনিস অর্জনের কোনও পদ্ধতি নেই তবে তথ্যের জন্য ধন্যবাদ।
ওয়েবনুব

@ মারিয়াস, এটি কি 1.9 এর জন্য কাজ করবে?
ম্যাজেন্টো লার্নার

@MagentoLearner। আমি নিশ্চিতভাবে জানি না তবে আমার কাজ রয়েছে এটি কাজ করে।
মারিয়াস

@ মারিয়াস, খুব দ্রুত উত্তর !!! অনেক ধন্যবাদ
ম্যাজেন্টো লার্নার

@ মারিয়াস, ধরুন আমি একটি সুপার অ্যাট্রিবিউট যুক্ত করতে চাই। Product_id এবং বৈশিষ্ট্য_আইডির সাথে একটি সারিটি টেবিলে যুক্ত করে catalog_product_super_attributeকাজ করবে? অন্যথায় আমার অন্যান্য টেবিলগুলি সংশোধন করা দরকার? স্ট্যাকওভারফ্লো
ম্যাজেন্টো শিখার

5

এটি ডাটাবেসের সরাসরি সম্পাদনা প্রয়োজন, এবং ম্যাজেন্টোর প্রথম আইনটি সরাসরি ডাটাবেস সম্পাদনা করে না

তবে আপনি যদি এগিয়ে যেতে যথেষ্ট পাগল হন তবে কয়েক মাস আগে এটি স্ট্যাকওভারফ্লোতে আচ্ছাদিত ছিল:

ucts। আমি সিই 1.6.2 এ নীচের ডিবি ওয়ার্করাউন্ড হ্যাকটি পরীক্ষা করেছি এবং মনে হচ্ছে এটি কাজ করছে:

  • বৈশিষ্ট্য তৈরি করুন
  • এটি উপযুক্ত বৈশিষ্ট্য সেট এ টানুন g
  • ডিবি সম্পাদক বা phpmyadmin, টেবিল 'ক্যাটালগ_ইভ_অ্যাট্রিবিউট' এ যান এবং শেষটির দিকে তাকান, 'বৈশিষ্ট্য আইডি' নোট করুন, পণ্য আইডিও নোট করুন -> ক্যাটালগ_প্রডাক্ট_এন্টিটিতে যান এবং আপনার পছন্দসই কনফিগারযোগ্য পণ্যটির সন্ধান করুন এবং সত্ত্বা_আইডি -> নোট করুন প্রোডাক্ট_আইডি
  • ক্যাটালগ_প্রডাক্ট_সুপার_ট্রিবিউটে যান এবং প্রোডাক্ট_আইডি এবং অ্যাট্রিবিউট_আইডি সহ নতুন রেকর্ড সন্নিবেশ করুন, পণ্য_সুপার_ট্রিবিউট_আইডির নোট
  • ক্যাটালগ_প্রডাক্ট_সুপার_ট্রিবিউট_লেবেল এবং প্রোডাক্ট_সুপার_ট্রিবিউট_আইডির সাথে নতুন রেকর্ড সন্নিবেশ করান এবং আপনার নতুন বৈশিষ্ট্যের মান যেমন 'রঙ' বা 'আকার' যা আপনি অ্যাডমিনে বৈশিষ্ট্য যুক্ত করার সময় ব্যবহার করেছিলেন
  • অ্যাডমিনে ফিরে যান এবং কনফিগারযোগ্য পণ্যটিতে ক্লিক করুন, আপনি লক্ষ্য করবেন যে আপনার শিশু পণ্যগুলির কোনওটিই আপনার কনফিগারযোগ্য পণ্যের সাথে সম্পর্কিত নয়।
  • শিশু পণ্যগুলির মধ্যে একটিতে ক্লিক করুন এবং উপযুক্ত বৈশিষ্ট্য মান নির্বাচন করুন, আপনি স্কুকেও পরিবর্তন করতে পারেন।
  • সমস্ত শিশু পণ্য রফতানি করুন এবং এতে নতুন বৈশিষ্ট্য এবং স্কু মান যুক্ত করুন, এটি আবার আমদানি করুন এবং আপনার কাজ শেষ হয়েছে বা ডেটাফ্লো ব্যবহার না করে আপনাকে অ্যাডমিনে ম্যানুয়ালি সমস্ত পরিবর্তন করতে হতে পারে।

ক্রেডিট: /programming/5658197/add-new-attribute-to-existing- কনফিগারযোগ্য- প্রোডাক্ট- চিত্র

স্বীকৃত - ওয়াইএমএমভি।


2

সমস্ত কনফিগারযোগ্য পণ্যগুলি থেকে একটি সুপার প্রোডাক্ট বৈশিষ্ট্য (যেমন তাদের বলা হয়) অপসারণ করতে, আপনি ডাটাবেসে এই এসকিউএল কোয়েরি কার্যকর করতে পারেন:

DELETE FROM catalog_product_super_attribute
WHERE attribute_id = <id>;

এখানে, এ্যাট্রিবিউট_কোড সম্পর্কিত eav_attribute সারণীতে সংরক্ষিত বৈশিষ্ট্যের আইডি। সারণী ক্যাটালগ_প্রডাক্ট_সুপার_অ্যাট্রিবিউট পণ্যগুলিকে সুপার প্রোডাক্ট বৈশিষ্ট্যের সাথে যুক্ত করে। সেখানে কনফিগারযোগ্য পণ্য তৈরি করতে আপনি বৈশিষ্ট্যগুলি যুক্ত করতে এবং মুছে ফেলতে পারেন।


1
নির্দিষ্ট একক পণ্য থেকে কেবলমাত্র সুপার প্রোডাক্ট বৈশিষ্ট্য অপসারণ করতে আপনি পণ্যের আইডিতে ফিল্টার করতে উপরের এসকিউএল কোয়েরি প্রসারিত করতে পারেন DELETE FROM catalog_product_super_attribute WHERE attribute_id = <attribute_id> AND product_id = <product_id>;
বিচারক

0

কনফিগারযোগ্য পণ্য খোলার জন্য নোংরা হ্যাক রয়েছে তারপরে ডুপ্লিকেটটি বেছে নিন, পুরানো এবং নতুন বৈশিষ্ট্য নির্বাচন করুন, এসকিউ ছাড়াই সদৃশ তৈরি করা হবে, তারপরে মূল কনফিগারযোগ্য পণ্য এবং সাধারণ পণ্য মুছুন। এর পরে আপনি একই এসকিউ নকল করতে পারেন। তারপরে আপনার কেবল নতুন সাধারণ পণ্য তৈরি করা দরকার।

যদি এতগুলি সাধারণ পণ্য না থাকে তবে দ্রুত কাজ করা যায়।


যথাযথ উত্তর নয়
দীপক রায়

0

আমি আপডেট মোডে ফ্রি মাগমি আমদানি রফতানির সরঞ্জামটি ব্যবহার করে আরও পরিষ্কার করে এটি পরিচালনা করেছি। (বোঝার সংস্করণ)

কী ক্ষেত্রগুলি রফতানি করুন, সাধারণ এবং কনফিগারযোগ্য এসকেইউসে কনফিগারযোগ্য বৈশিষ্ট্য নির্দিষ্ট করতে কনফিগারযোগ্য_ট্রিবিউট কলাম সেটিংস পরিবর্তন করুন এবং তারপর ম্যাগমি ব্যবহার করে পুনরায় আমদানি করুন

প্রাক্তন ওরাকল কনসালট্যান্ট হিসাবে, আমি একমত হয়েছি যে ডেটাবেসটিতে গণ্ডগোল করবেন না, বিশেষত ম্যাজেন্টো ডেটা স্ট্রাকচারের মতো জটিল - এটি করার জন্য ভালভাবে পরীক্ষা করা একটি সরঞ্জাম ব্যবহার করা আরও ভাল।


0

আমার একটি কনফিগারযোগ্য পণ্যের জন্য "কনফিগারযোগ্য" বৈশিষ্ট্যগুলির মধ্যে একটি থেকে অ্যাট্রিবিউট সরিয়ে ফেলতে হবে।

  • ক্যাটালগ_প্রোডাক্ট_সুপার_অ্যাট্রিবিউট সম্পর্কে উপরোক্ত রেফারেন্সগুলি সঠিক ছিল। নাভিট্যাট ডাটাবেস সরঞ্জামটি ব্যবহার করে আমি ধারাবাহিকভাবে কয়েকটি জিনিস করেছি।

    পরীক্ষার জন্য অ্যাট্রিবিউট_আইডি পরিবর্তন করা হয়েছে, যা এটি অন্য পণ্যগুলিতে ব্যবহৃত হচ্ছে এমন একটি ক্ষেত্রে পরিবর্তন করেছে। (বিষয়টি নিশ্চিত হওয়ার পরে তা রেকর্ড ছিল)। নিচে লিখেছিলেন, সেক্ষেত্রে রেকর্ড ডেটার পুরো সেট (product_super_attribute_id, product_id, গুণাবলী_আইডি, অবস্থান)

    অবশেষে সমস্ত একসাথে রেকর্ড মোছা।

কৌতুকটি করেছে। আমি আবারও এটি করার দরকার হবে এই ধরে নিয়ে আমি কী করেছি তার একটি নোটও রেখেছি kept

আবার: "ক্যাটালগ_প্রডक्ट_সুপার_অ্যাট্রিবিউট" রেকর্ড মুছে ফেলা আমার সমস্যাটি সমাধান করেছে যা উপরের অন্যদের সাথে সম্পর্কিত বলে মনে হচ্ছে।

অতিরিক্ত তথ্য: সঠিক নামের তালিকার সাথে "অ্যাট্রিবিউট_আইডি" সম্পর্কিত করতে এটি দেখতে গুরুত্বপূর্ণ: ক্যাটালগ_সুপার_ট্রিবিউট_লবেল -> এবং প্রোডাক্ট_সুপার_ট্রিবিউট_আইডি এর মাধ্যমে সম্পর্কযুক্ত।
আমি একটি সম্পর্কিত "অ্যাট্রিবিউট_আইডি" ফিল্ড অনুসন্ধান করে যাচ্ছিলাম (এখনও খুঁজে পাচ্ছি না)।

"গুণমান_আইডি" আসলে কী তা আপনাকে জানাতে কৌশল "প্রোডাক্ট_সুপার_অ্যাট্রিবিউট_আইডি" করে। (ডাটাবেসে কোনও অ্যাট্রিবিউটকে প্রথমে কীভাবে সংজ্ঞায়িত করা হয় তা দেখতে আমি "অ্যাট্রিবিউট_আইডি" এর জন্য "ডিফল্ট" ডেটা সেটটি খুঁজে পেতে চাই)।

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