ম্যাজেন্টো পর্যবেক্ষক ইভেন্ট - ক্রমের ক্রম


9

আমি catalog_model_product_duplicateইভেন্টটিতে কার্যকারিতা ইনজেকশনের চেষ্টা করছি । এই মডিউলটির অংশটি নিশ্চিত করা হবে যে সদৃশ পণ্যটির স্টক স্থিতিটিও নকল হয়েছে; বর্তমানে এটি হয় না।

আমি দেখতে পাচ্ছি যে CatalogInventoryএই ইভেন্টটি পর্যবেক্ষণ করে এবং কিছু স্ট্যান্ডার্ড তথ্য সেট আপ করে। আমার গ্যারান্টি দেওয়া যেতে পারে যে আমার স্থানীয়দের আগে মূল ঘটনাগুলি সমাধান করা হয়েছে? এখানে নির্ভর করার মতো কোনও ক্রিয়াকলাপ কি আছে?

উত্তর:


11

ইভেন্টগুলিতে যে অর্ডার প্রেরণ করা হয় তা মডিউলগুলি লোড হওয়া ক্রমের উপর নির্ভরশীল। যেহেতু আপনাকে নিশ্চিত হওয়ার দরকার যে আপনার CatalogInventoryআগে মডিউলটির পর্যবেক্ষকরা আগুন জ্বলেছে, তাই আপনাকে যা করতে হবে তা হল মডিউলটির উপর নির্ভর করতে আপনার মডিউলটি কনফিগার করা Mage_CatalogInventory। আপনি আপনার app/etc/modules/My_Module.xmlফাইলের কোডটিতে একটি নির্ভর নোড যুক্ত করে এটি করতে পারেন :

<config>
    <modules>
        <My_Module>
            <active>true</active>
            <codePool>local</codePool>
            <depends>
                <Mage_CatalogInventory />
            </depends>
        </My_Module>
    </modules>
</config>

dependsউপরে XML- এর নোড যেমন সামনে পুলিশের করে লোড করতে Magento কোর মডিউল বাধ্য করে, এখানে কনফিগারেশন গুরুত্বপূর্ণ টুকরা।


7

যে ক্রমে ইভেন্টগুলি প্রেরণ করা হয় তা সহজেই গ্যারান্টিযুক্ত হতে পারে না। এগুলি মডিউলগুলি লোড হওয়া ক্রমের উপর নির্ভরশীল। সাধারণত সমস্ত মূল ইভেন্ট পর্যবেক্ষককে সম্প্রদায় এবং স্থানীয় কোড পুল পর্যবেক্ষকদের আগে ডাকা হবে।

স্থানীয় বা সম্প্রদায়ের একটিতে একটি মডিউলের নির্ভরতা "নকল" করে কাস্টমসের পরে ম্যাগন্টো পর্যবেক্ষকদের গুলি চালানোর জন্য বাধ্য করার একটি পদ্ধতি রয়েছে। লি এর উত্তরটি এখানে দেখুন: কোনও বিদ্যমান ম্যাজেন্টো পর্যবেক্ষকের আগে একটি কাস্টম পর্যবেক্ষককে আগুন লাগিয়ে দিন

/app/etc/modules/Groupname_Page.xml

<config>
    <modules>
        <Groupname_Page>
            <active>true</active>
            <codePool>local</codePool>
            <depends>
                <!-- Your dependencies go here -->
            </depends>
        </Groupname_Page>
        <Enterprise_PageCache>
            <depends>
                <Groupname_Page />
            </depends>
        </Enterprise_PageCache>
    </modules>
</config>

আমি ব্যক্তিগতভাবে সেই পদ্ধতির পছন্দ করি না কারণ যে নির্ভরতা জোর করে কী পরিণতি ঘটবে আমি জানি না।

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


আমার ক্ষেত্রে, তবে, স্টক আইটেমটি উপস্থিত না থাকলে আমার কিছু করার নেই। পরবর্তী কোনও ইভেন্টের কোনও ধারণাগুলি যা আমি দেখতে পেয়েছিলাম যে এটি নকল পদ্ধতির ফলাফল কিনা?
ফিলিঙ্কল

5

একটি সাধারণ উত্তর

পর্যবেক্ষকগুলি প্রথমে অঞ্চল দ্বারা চালিত হয় , তারপরে মডিউল লোডিং ক্রম দ্বারা

তার মানে, নিবন্ধিত সমস্ত পর্যবেক্ষকগুলিতে বা নিবন্ধিত সমস্ত পর্যবেক্ষকের আগে<global> মৃত্যুদন্ড কার্যকর করা হবে ।<frontend><adminhtml>

কোনও অঞ্চলের মধ্যে পর্যবেক্ষকরা একীভূত কনফিগার এক্সএমএল ট্রিতে উপস্থিত ক্রম হিসাবে কার্যকর হয়, যার অর্থ প্রযুক্তিগতভাবে মডিউলগুলি লোড করা হয়েছে।

মডিউল লোডিং ক্রম নিম্নলিখিত হিসাবে নির্ধারিত হয়:

  1. নির্ভরতা গ্রাফটি <depends>সংজ্ঞা থেকে তৈরি করা হয় app/etc/modules/*.xml। এক্স যদি Y এর উপর নির্ভর করে তবে এক্স এর আগে Y লোড করা হবে।

  2. নির্ভরতার ভিত্তিতে অর্ডার দেওয়ার পরে, মূল মডিউলগুলির সম্প্রদায় এবং স্থানীয় মডিউলগুলির চেয়ে প্রাধান্য রয়েছে

  3. অন্য সমস্ত কিছুই বর্ণমালায় লোড হয়। মনে রাখবেন যে ফাইলের নামটি app/etc/modulesতুলনা করার জন্য ব্যবহৃত হয়, প্রকৃত মডিউলটির নাম নয়।

সুতরাং মডিউল লোডিং অর্ডারকে প্রভাবিত করার জন্য আপনার কাছে দুটি বিকল্প রয়েছে:

  1. আপনার পর্যবেক্ষকরা এর পরে মৃত্যুদন্ড কার্যকর করার জন্য অন্য মডিউলের উপর নির্ভর করুন (বা অন্য মডিউলটিকে আগে সম্পাদন করার জন্য আপনার উপর নির্ভর করুন)
  2. মডিউল সংজ্ঞা ফাইলটির নতুন নাম দিন। আপনার নিজেই মডিউলটির নতুন নামকরণের প্রয়োজন নেই কারণ ফাইল নামটি লোডিং অর্ডার ব্যতীত অন্য কোনও কিছুর জন্য গুরুত্বপূর্ণ নয়।

("৩. মূল কোড পুলে আপনার মডিউল যুক্ত করুন" গণনা করা হয় না)

আরো দেখুন:


1

একটি পরামর্শ, উভয় catalog_model_product_duplicateএবং catalog_model_product_save_afterএকক পর্যবেক্ষক সঙ্গে পর্যবেক্ষণ। ইন catalog_model_product_duplicateসেট ইনভেনটরি ডেটা পর্যবেক্ষক ডেটা, এবং catalog_model_product_save_afterব্যবহার এই সদৃশ পণ্যের জন্য জনপূর্ণ তালিকা থেকে ডেটা।


সুতরাং আপনি ইভেন্টটিতে আমাকে যে বস্তুটি দিয়েছিলেন সেটিতে একটি সম্পত্তি বাঁচানোর পরামর্শ দিচ্ছেন, তারপরে পরীক্ষা করুন catalog_model_product_save_after... এটি কাজ করতে পারে। একমাত্র ক্ষতিটি ফোন না করে সম্পত্তি চালিয়ে যাওয়া হবে save()... সেখানে কোনও চিন্তা আছে?
ফিলিভিঙ্কল

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