কাস্টম মডিউল থেকে মূল টেমপ্লেট ফাইলগুলি কীভাবে ওভাররাইট করা যায়?


10

আমি দুটি ফাইল ওভাররাইট করতে চাই। যথা view.phtmlএবং print.phtmlবিক্রয় আদেশের।
(পথ app/design/frontend/base/default/template/sales/order/:)

আমি একটি মডিউল তৈরি করছি যা আমি একটি পথ তৈরি করতে চাই app/design/frontend/base/default/template/<My Module Name>/sales/order/যাতে কোর view.phtmlএবং print.phtmlফাইলগুলি ওভাররাইট না হয়।

সুতরাং দয়া করে আমাকে এই কাজটি কীভাবে অর্জন করবেন তা গাইড করুন।

উত্তর:


13

আপনি আপনার মডিউলটির ভিতরে একটি লেআউট এক্সএমএল ফাইল দিয়ে এটি করতে পারেন। আপনার মডিউলটির config.xmlমতো করে একটি বিভাগ থাকা আপনার মডিউলটির লেআউট এক্সএমএল (পাথ app/design/frontend/base/default/layout/mymodulename.xml:) লোড করার জন্য এটি দরকার :

<config>
    [...]
    <frontend>
        [...]
        <layout>
            <updates>
                <mymodulename_layout module="MyModuleName">
                    <file>mymodulename.xml</file>
                </mymodulename_layout>
            </updates>
        </layout>
    </frontend>

এই বিন্যাসে এক্সএমএল ফাইলটিতে আপনি নির্দিষ্ট ব্লকগুলি উল্লেখ করতে পারেন এবং তাদের টেমপ্লেট পরিবর্তন করতে পারেন।

<layout>
    <sales_order_view>
        <reference name="sales.order.view">
            <action method="setTemplate">
                <template>mymodulename/sales/order/view.phtml</template>
            </action>
        </reference>
    </sales_order_view>
    <sales_order_print>
        <reference name="sales.order.print">
            <action method="setTemplate">
                <template>mymodulename/sales/order/print.phtml</template>
            </action>
        </reference>
    </sales_order_print>
</layout>

@ 7 ওচেম, কীভাবে ম্যাজেন্টো 2 তে অর্জন করবেন?
প্রসাদ মাগন্তী

আপনি এটি একটি নতুন প্রশ্ন হিসাবে জিজ্ঞাসা করা উচিত কারণ এটি এখানে একটি মন্তব্যে এটি দেওয়া খুব বিস্তৃত এবং ওপি যা জিজ্ঞাসা করছে তা নয়
7ochem

3

মনে করুন আমাদের মডিউলটির নাম 'কাস্টমসেল' এবং প্যাকেজের নাম "অনুশীলন"।

পদক্ষেপ 1: অ্যাপ্লিকেশন / ইত্যাদি / মডিউল / অনুশীলন_ কাস্টমসলেস.এক্সএমএলগুলিতে একটি মডিউল কনফিগারেশন ফাইল তৈরি করুন

<config>
<modules>
    <Exercise_CustomSales>
        <active>true</active>
        <codePool>local</codePool>
    </Exercise_CustomSales>
</modules>

পদক্ষেপ 2: অ্যাপ / কোড / স্থানীয় / অনুশীলন / কাস্টমসেলস / ইত্যাদি / কনফিগারেশন.এক্সএমএল এর অধীনে একটি কনফিগার ফাইল তৈরি করুন

<config>
<modules>
    <Exercise_CustomSales>
        <version>1.7.0.2</version>
    </Exercise_CustomSales>
</modules>
<global>
    <blocks>
        <customsales>
            <class>Exercise_CustomSales_Block</class>
        </customsales>
        <sales>
            <rewrite>
                <order_view>Exercise_CustomSales_Block_Sales_Order_View</order_view>
            </rewrite>
        </sales>
    </blocks>
</global>

পদক্ষেপ 3: এমন একটি পিএইচপি ফাইল তৈরি করুন যা প্রকৃত ভিউ.এফটিএমএল ফাইল, অ্যাপ / কোড / স্থানীয় / অনুশীলন / কাস্টমসলেস / ব্লক / বিক্রয় / আদেশ / ভিউ.এফপি ওভাররাইট করে

ক্লাস এক্সারসাইজ_ কাস্টমসলেস_ব্লক_সেলস_অর্ডার_ভিউ ম্যাগ_সেলস_ব্লক_অর্ডার_ভিউ প্রসারিত করে
{
    সুরক্ষিত ফাংশন _ কনস্ট্রাক্ট ()
    {
        পিতা বা মাতা ::: _ কনস্ট্রাক্ট ();
        $ This-> setTemplate ( 'customsales / বিক্রয় / অর্ডার / view.phtml');
    }
}

পদক্ষেপ 4: আপনার লেআউট ফোল্ডারের অভ্যন্তরে লোকাল.এক্সএমএল ফাইল তৈরি করা উচিত (সম্ভাব্য পথ: অ্যাপ / ডিজাইন / ফ্রন্টএন্ড / প্যাকেজ / থিম / লেআউট)। এটি print.phtml এর জন্য ml

যেমন (অ্যাপ্লিকেশন / ডিজাইন / ফ্রন্টএন্ড / আরডাব্লু / ডিফল্ট / লেআউট / লোকাল.এক্সএমএল)

<layout>
<sales_order_print>
    <reference name="sales.order.print">
        <action method="setTemplate">
            <template>customsales/sales/order/print.phtml</template>
        </action>
    </reference>
</sales_order_print>

"অ্যাপ্লিকেশন / ডিজাইন / ফ্রন্টএন্ড / প্যাকেজ / থিম / টেমপ্লেট / কাস্টমস / বিক্রয় / ক্রম" এর ভিতরে ভিউ.এফটিএমএল এবং মুদ্রণ.এফটিএমএল ফাইলটি সরান।

ম্যাজেন্টো ক্যাশে সাফ করুন।


পুরো ব্লকটি নতুন করে লেখার দরকার নেই। আমার উত্তরে গেটের কনস্ট্রাক্টর Mage_Sales_Block_Order_Viewপ্রথমে কল করে এবং টেম্পলেট সেট করে, তারপরে setTemplateআমার উদাহরণ থেকে লেআউট এক্সএমএল দ্বারা ডাকা হয় এবং কাস্টম টেম্পলেট সেট করে। আমি এমন সমাধানগুলিতে যেতে চাই যা পুনরায় লেখাগুলি ব্যবহার না করে কারণ তারা সম্ভাব্য দ্বন্দ্ব সৃষ্টি করতে পারে।
7ochem

7 ওচেম ঠিক আছে। ব্লকে টেমপ্লেট সেট করার দরকার নেই। 7 ওচেমের সমাধানটি আমার পক্ষে ভাল for
রাজন ফাল্দু

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