ম্যাজেন্টো 2: কোর ব্লকের জন্য কীভাবে কাস্টম টেম্পলেট সেট করবেন


15

আমি আমার মডিউলে রেজিস্টার.ফিটটিএমএলটিকে ওভাররাইড করার চেষ্টা করছি, তবে মনে হচ্ছে এমন কিছু কনফিগার সমস্যা রয়েছে যা ম্যাগেন্তোর মূল মডিউলের একটিটিকে ওভাররাইড করার জন্য আমার কাস্টম টেম্পলেটটি ব্যবহার করতে অক্ষম করে। আমি কোডটি যাচাই করেছি তবে সমস্যাটি খুঁজে পাচ্ছি না। কেউ সাহায্য করতে পারেন? আগাম ধন্যবাদ. module.xml:

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
    <module name="Namespace_ModuleName" setup_version="0.0.2">
        <sequence>
            <module name="Magento_Customer"/>
        </sequence>
    </module>
</config>

নেমস্পেস \ মডিউলনেম \ ভিউ \ ফ্রন্টএন্ড \ লেআউটের অধীনে গ্রাহক_সকন্ট_ক্রিয়েট.এক্সএমএল:

<?xml version="1.0"?>
<layout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/layout_generic.xsd">
    <referenceBlock name="customer_form_register">
        <arguments>

            <argument name="template" xsi:type="string">Namespace_ModuleName::form/register.phtml</argument>

        </arguments>
    </referenceBlock>
</layout>

composer.json:

{
  "name": "namespace/module-modulename",
  "description": "modulename",
  "type": "magento2-module",
  "version": "0.0.2",
  "license": [
    "OSL-3.0",
    "AFL-3.0"
  ],
  "require": {
    "php": "~5.5.0|~5.6.0",
    "magento/framework": "~0.42",
    "magento/magento-composer-installer": "*",
    "magento/module-customer": "*"
  },
  "extra": {
    "map": [
      [
        "*",
        "Namespace/ModuleName"
      ]
    ]
  }
}

উত্তর:


18

referenceBlockনোডের বৈশিষ্ট্য হিসাবে কেবল প্রয়োজনীয় ব্লক এবং সেট টেম্পলেটটি উল্লেখ করুন :

<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <body>
        <referenceBlock name="customer_form_register" template="VendorName_ModuleName::form/register.phtml"/>
    </body>
</page>

বিকল্প বাক্য গঠন:

<referenceBlock name="customer_form_register">
    <action method="setTemplate">
        <argument name="template" xsi:type="string">VendorName_ModuleName::form/register.phtml</argument>
    </action>
</referenceBlock>

এছাড়াও আপনি এন্টারপ্রাইজ এডিশন ব্যবহার করছেন, রাখার বিষয়টি নিশ্চিত করুন Magento_CustomerCustomAttributesথেকে sequenceআপনার module.xmlকারণ এটি এই টেমপ্লেটটি অগ্রাহ্য করতে ও নিজের পরিবর্তনগুলি ওভাররাইড করতে পারে।


1
ধন্যবাদ অ্যালেক্স, তবে এটি আমার পক্ষে কার্যকর হয় না। আমি ভাবছি আমি কিছু গুরুত্বপূর্ণ বিবরণ মিস করেছি যেমন কনফিগারেশন ফাইল বা টাইপ পেয়েছি।
রিকি.সি

ক্যাপচা মডিউলে কেবল এই জাতীয় বিন্যাস হ্যান্ডেল রাখার চেষ্টা করা হয়েছে (এটির কাস্টম মডিউলটির উপর নির্ভরশীলতা রয়েছে এটি আপনার কাস্টম মডিউলের মতোই এর পরে লোড হয়) এবং এটি আমার পক্ষে কাজ করে। আপনার মডিউলটি কি আদৌ ম্যাজেন্টো দ্বারা স্বীকৃত? এবং অবশ্যই পৃষ্ঠা সতেজ করার আগে ক্যাশে সাফ করার কথা মনে রাখবেন। ক্যাপচা দিয়ে এটি ব্যবহার করে দেখুন, সমস্যাটি আপনার মডিউল বা বিন্যাস ঘোষণার সাথে রয়েছে কিনা তা বোঝার জন্য।
অ্যালেক্স পালিয়ারুশ

@ রিকি.সি আপডেট হওয়া উত্তর দেখুন, বিশেষত ইই সম্পর্কিত regarding
অ্যালেক্স পালিয়ারুশ

আমি বিকল্প বাক্য গঠন চেষ্টা করেছি, এটি আমার সর্বশেষতম কমিউনিটি ম্যাজেন্টো 2.0 তে কাজ করে। অনেক ধন্যবাদ.
রিকি.সি

1

পরিবর্তে আপনার লেআউট ফাইলে এই কোডটি ব্যবহার করুন:

<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <body>
        <referenceBlock name="customer_form_register">
            <arguments>
                <argument name="template" xsi:type="string">Namespace_ModuleName::form/register.phtml</argument>
            </arguments>
        </referenceBlock>
    </body>
</page>

এটি "পৃষ্ঠা" এর সাথে "লেআউট" প্রতিস্থাপন করে এবং বডি ট্যাগ যুক্ত করে

সম্পাদনা: ২ য় বিকল্পটি হ'ল আসল ব্লকটি সরানো এবং পছন্দসই টেম্পলেট সহ একটি নতুন যুক্ত করা

<referenceBlock name="customer_form_register" remove="true"/>
<referenceContainer name="content">
    <block class="Magento\Customer\Block\Form\Register" name="my_customer_form_register" template="Namespace_ModuleName::form/register.phtml">
        <container name="form.additional.info" as="form_additional_info"/>
        <container name="customer.form.register.fields.before" as="form_fields_before" label="Form Fields Before" htmlTag="div" htmlClass="customer-form-before"/>
    </block>
</referenceContainer>

আপনার উত্তরের জন্য ধন্যবাদ, আমি এটি চেষ্টা করেছি কিন্তু এখনও ব্যর্থ হয়েছে
রিকি.সি

২ য় সমাধান সহ চেষ্টা করুন। যাইহোক, নেমস্পেস / মডিউলনেম / ভিউ / ফ্রন্টএন্ড / টেম্পলেট / ফর্ম / রেজিস্টার.এফটিএমএলে আপনার টেম্পলেট ফাইলটি কি?
csmarvz

এটি এখনও আমার জন্য ব্যর্থ হয়েছে, আমি মনে করি কারণ আমি প্রশাসক টেমপ্লেট নিয়ে কাজ করছি। সুতরাং আমি আরও বিকল্প পদ্ধতির চেষ্টা করেছি: আমার নিজের মডিউলটিতে টেমপ্লেটটি অনুলিপি করুন এবং তারপরে setTemplateপদ্ধতিটি শুরু করতে ব্লকটি ওভাররাইড করুন , যা একই মডিউলে টেমপ্লেটটি সন্ধান করে। খুব নোংরা সমাধান তবে আমার পক্ষে একমাত্র কাজ!
জ্যাক 14

0

আপনি <পৃষ্ঠা> ট্যাগের পরে <বডি> ট্যাগ অনুপস্থিত, দয়া করে চেষ্টা করুন:

<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<body>
    <referenceBlock name="customer_form_register">
        <arguments>

            <argument name="template" xsi:type="string">Namespace_ModuleName::form/register.phtml</argument>

        </arguments>
    </referenceBlock>
</body>
</page>

1
আপনার উত্তরের জন্য ধন্যবাদ, এটি আমার পক্ষেও কার্যকর নয়।
রিকি.সি

আপনি <পৃষ্ঠা> ট্যাগে <লেআউট> ট্যাগ পরিবর্তন করেছেন?
Mage সমাধান

হ্যাঁ, আমি কেবলমাত্র আপনার কোডটি অনুলিপি করেছি এবং
নেমস্পেস_মডুলনাম

0

সেটটিম্পলেট পদ্ধতিগুলি ওভাররাইড করা আমার পক্ষে সবচেয়ে ভাল কাজ করে।

/ **
 * বিক্রয় অর্ডার আইটেম নাম কলাম উপস্থাপক
 * /
শ্রেণির নাম 
\ ম্যাজেন্টো les বিক্রয় \ ব্লক \ প্রশাসন \ আইটেমগুলি \ কলাম \ নাম প্রসারিত
{

    পাবলিক ফাংশন সেট টেম্পলেট ($ টেমপ্লেট) {
        রিটার্ন প্যারেন্ট :: সেটটেম্পলেট ('ম্যাজেন্টো_সেলস ::'। $ টেমপ্লেট);
    }

    / **
     লাইন ব্রেক এবং কাটা মান যোগ করুন
     *
     * @ পরিমাপের স্ট্রিং $ মান
     * @ পুনর্বার অ্যারে
     * /
    পাবলিক ফাংশন get formatmatOption ($ মান)
    {
        $ অবশিষ্ট = '';
        $ মান = $ এটি-> ট্রানসেট স্ট্রিং (
                 str_replace (';', '; 
', $ মান), 1024, '', $ বাকি ); প্রত্যাবর্তন ['মান' => nl2br ($ মান), 'शेष' => nl2br ($ অবশিষ্ট)]; } }

0

আমি জানি এটি পুরানো, তবে এটি যদি কাউকে সহায়তা করে,

এই গিথুব ইস্যুটি ম্যাজেন্টো 2 / ইস্যু / 3356 এ উল্লেখ করেছে যে রেফারেন্সলক এবং আর্গুমেন্ট পদ্ধতি (প্রশ্নটিতে উল্লিখিত ) অবহেলিত এবং কার্যবিধির বিপরীতে একটি বাগ সহ্য করে:

<referenceBlock name="customer_form_login">
    <action method="setTemplate">
        <argument name="template" xsi:type="string">
            VendorName_ModuleName::form/login.phtml
        </argument>
    </action>
</referenceBlock>

ডকুমেন্টেশন (একটি ব্লক টেম্পলেট সেট করুন) জিনিসগুলির প্রকৃত অবস্থা প্রতিফলিত করে না।


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