ম্যাজেন্টো 2-তে একটি রেফারেন্স ব্লকের জন্য "নাম" সন্ধান করুন


11

আমি আমার পৃষ্ঠা থেকে কিছু ব্লক মুছে ফেলতে চাই। উদাহরণস্বরূপ বলুন যে আমি লোগোর জন্য ধারকটি সরাতে চাই।

তারপরে আমি /app/design/frontend/MYVENDORNAME/MYTHEMENAME/Magento_Theme/layout/default.xmlনীচের কোডটি দিয়ে তৈরি করব :

<page layout="3columns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <referenceBlock name="logo" remove="true"/>
</page>

এই ক্ষেত্রে আমি বেস থিমের ফাইলগুলির মাধ্যমে অনুসন্ধান করে এই রেফারেন্স ব্লকের নাম (নাম = "লোগো") সন্ধান করতে সক্ষম হয়েছি।

প্রশ্নটি হ'ল: ব্লকের নামগুলি খুঁজে বের করার আরও ভাল উপায় কি? আমি অনুমান করি যে ম্যাজেন্টোতে এক্সএমএল ফাইলগুলিতে ব্যবহৃত সমস্ত নামের একটি তালিকা থাকতে হবে? নাকি কোন প্রকার রেফারেন্স?

উদাহরণস্বরূপ বলুন যে আমি মেনু ( <div class="sections nav-sections">...</div>) মুছে ফেলতে চাই । আমি কীভাবে তার নামটি সন্ধান করব


1
আপনি এটি বেস থিমের এক্সএমএল ফাইলটিতে খুঁজে পেতে পারেন। আপনি যদি মেনুটি মুছতে চান তবে এই নামটি catalog.topnav। আমি এটি বেসে মডিউল থিমের ডিফল্ট। xML এ পাই।
xanka

উত্তর:


17

এটি করার কয়েকটি উপায় রয়েছে:

  1. অনুমান
  2. বেস, ফাঁকা এবং লুমা থিমগুলির পর্যালোচনা বিন্যাস
  3. ক্লাস এবং আইডি নামগুলির জন্য আইডিই অনুসন্ধানগুলি সম্পাদন করুন
  4. 'স্টোরফ্রন্টের জন্য সক্ষম টেম্পলেট পাথ ইঙ্গিতগুলি' এবং 'ইঙ্গিতগুলিতে ব্লক নাম যুক্ত করুন' সক্ষম করুন।

আপনি অ্যাডমিন ইন্টারফেসে লগ ইন করে পাথ ইঙ্গিত এবং ব্লক ইঙ্গিতগুলি সক্ষম করতে পারেন:

Stores > Configuration > Advanced > Developer > Debug

দুর্ভাগ্যক্রমে, যতদূর আমি জানি এগুলি সহজেই সন্ধানের জন্য নিশ্চিত কোনও উপায় নেই। যদিও দেখে মনে হচ্ছে মূল অংশটিতে কাজ করা ছেলেরা এতে চলেছে:

https://github.com/magento/magento2/issues/571


গ্যারেথ যেমন বলেছিলেন, আপনি টেমপ্লেট পাথ ইঙ্গিতগুলি উইচ টেমপ্লেটটি বের করার চেষ্টা করতে সক্ষম করতে পারেন এবং ব্লক কোডের সেই অংশটি রেন্ডার করছে।
বার্বনেট

3
আপনি কীভাবে 'অনুমান' বলেছেন তা আমি পছন্দ করি, কিছু ক্ষেত্রে পথের ইঙ্গিতগুলি বেশ অকেজো।
wlin

# 4 না, প্রথমত আমার জন্য কাজ করেনি, কারণ আমি পরিচ্ছন্ন তালিকা আমার আইপি যেমন এখানে বর্ণিত করেনি: docs.magento.com/m2/ee/user_guide/system/...
হেই

15

এখানে আমি তাদের কীভাবে খুঁজে পাই ...

সামগ্রী > উইজেটগুলি > উইজেটের
ধরণ যুক্ত করুন = সিএমএস স্ট্যাটিক ব্লক
ডিজাইন থিম = [আপনার থিম]

চালিয়ে

লেআউট আপডেট > লেআউট
প্রদর্শন চালু করুন = [একটি চয়ন করুন]

কনটেইনারটির নীচে "দয়া করে নির্বাচন করুন" তে পরিদর্শন করতে ডান ক্লিক করুন । দেব সরঞ্জামগুলিতে উপাদানটি
প্রসারিত করুন সমস্ত বিকল্প মান = এর আপনার রেফারেন্সকন্টেনার নাম er<select>

:)


আমরা কেন এই তালিকায় শিরোনাম.প্যানেল বা পেজ.রাপরের মতো রেফারেন্সকন্টেনারগুলি দেখতে পাচ্ছি না?
ডিভনডাহন

1
আপনাকে অনেক ধন্যবাদ! আপনি ভাবেন যে ম্যাজেন্টো 2 দেব তাদের ডক্সে এই নামগুলি খুঁজতে একটি দ্রুত রেফারেন্স সরবরাহ করবে। আপনার সহায়ক
টিপটির

আপনাকে "প্রদর্শন চালু করুন" ড্রপ
ডাউনতে

ধন্যবাদ! এটি আমার জন্য একটি ট্রিট কাজ করেছে - এখনই স্পষ্ট!
ফ্রেশওয়েবস

ধন্যবাদ মানুষ, খুব সুন্দর টিপস, M2 শেখার যখন :)
puntable

7

সমস্ত ~ 200 এর একটি তালিকা পেতে আপনি নীচের পিএইচপি-ক্লাইট কোডটি কার্যকর করতে পারেন referenceBlock। আপনার ম্যাজেন্টো 2 টি মূল ফোল্ডারের পথটি সঠিক কিনা তা নিশ্চিত করুন । এছাড়াও আপনি পরিবর্তন করতে পারেন instructionলিস্টে পরিবর্তনশীল block, containerএবং referenceContainer

<?php

//$instruction = "container";
//$instruction = "referenceContainer";
$instruction = "block";
//$instruction = "referenceBlock";

$path = '/var/www/html/magento2/vendor/magento';
$command = 'cd '.$path.' && egrep -r -i --include \*.xml "<'.$instruction.'".*?"name=" *';
exec($command, $output);

$container_max_length = 1;
$pattern = '/(.*?):.*<'.$instruction.'.*name="(.*?)".*/';
foreach ($output as $subject) {
  preg_match($pattern, $subject, $matches);
  $containers[$matches[2]][] = $matches[1];
  if (strlen($matches[2]) > $container_max_length) $container_max_length = strlen($matches[2]);
}

$n=1;
ksort($containers);
foreach ($containers as $k => $v) {
  printf("%6s", "$n. ");
  printf("%-".$container_max_length."s".$v[0]."\n", $k);
  $i=1;
  while (isset($v[$i])) {
    printf("      %-".$container_max_length."s".$v[$i]."\n", "");
    $i++;
  }
  $n++;
}

?>

1
জিনিয়াস। এই পদ্ধতিটি তাই অমূল্য। ভাগ করে নেওয়ার জন্য আপনাকে অনেক ধন্যবাদ।
ক্র্যাশটেস্টেএক্সএক্সএক্স

1
এটি অত্যন্ত দুর্দান্ত সাহায্যকারী দুর্দান্ত। আমি এটিকে এমন একটিতে রূপান্তরিত করেছি যা পুরো সাইটের টেক্সট ফাইল হিসাবে তাদের সকলকে ফেলে দেবে। gist.github.com/LiamKarlMitchell/…
লিয়াম মিচেল

এটির জন্য কি পিএইচপি / ম্যাজেন্টোর নির্দিষ্ট সংস্করণ প্রয়োজন? পিএইচপি 7.2.24 + + ম্যাজেন্টো ২.৩.৩ এ আমি ত্রুটিটি পেয়েছি: "পিএইচপি সতর্কতা: ksort () প্যারামিটার 1 অ্যারে হওয়ার প্রত্যাশা করে, 21h লাইনে / home/magento/Desktop/list-magento.php এ দেওয়া" এবং পেয়েছে আউটপুট নেই।
অ্যাড্রিয়ান লোপেজ

4

আপনি এই নিখরচায় এক্সটেনশনটি ব্যবহার করতে পারেন:

https://github.com/ho-nl/magento2-Ho_Templatehints

অথবা @ ব্লিজাম অনুসরণ করে উইজেটগুলি থেকে নেওয়া কয়েকটি উল্লেখের উত্তর দিন:

পৃষ্ঠা শিরোনামের পরে> page.top

পৃষ্ঠা শিরোনামের পরে শীর্ষ> শীর্ষস্থানীয় কনটেনার

মেইন কলামগুলির আগে> কলাম.টপ

পৃষ্ঠার পাদলেখের আগে> পৃষ্ঠা.বোটম

পৃষ্ঠার পাদলেখের কনটেইনার পূর্বে> পৃষ্ঠা.বটম.container

সিএমএস পাদলেখের লিঙ্কগুলি> সিএমএস_ফুট_লিংক_সামগ্রী

লিঙ্ক র‍্যাপার> তুলনা-লিঙ্ক-মোড়কের তুলনা করুন

মূল বিষয়বস্তু অঞ্চল> সামগ্রী

মূল বিষয়বস্তু> বিষয়বস্তু.সাইড

মূল বিষয়বস্তু নীচে> কন্টেন্ট.বোটম

মূল সামগ্রী ধারক> প্রধান

প্রধান বিষয়বস্তু শীর্ষ> কন্টেন্ট.টপ

মিনি কার্ট প্রচার ব্লক> minicart.addons

পৃষ্ঠা নীচে> আগে.body.end

পৃষ্ঠা পাদচরণ> পাদচরণ

পৃষ্ঠা ফুটার ধারক> পাদচরণ-ধারক

পৃষ্ঠা শিরোনাম> শিরোনাম-মোড়ক

পৃষ্ঠা শিরোনামের ধারক> শিরোনামের কনটেনার

পৃষ্ঠা শিরোনাম প্যানেল> শিরোনাম.প্যানেল

পৃষ্ঠা শীর্ষ> after.body.start

সাইডবার অতিরিক্ত> সাইডবার.অ্যাডিশনাল

সাইডবার মেইন> সাইডবার.মাইন


3

আমি একটি সামান্য মডিউল একসাথে রেখেছি যা var/log/ফোল্ডারে একটি লগ ফাইলে এক্সএমএল পৃষ্ঠার কাঠামোটি লিখবে ।

অ্যাপ্লিকেশন / কোড / CustomerParadigm / PageXml জন্য / etc / module.xml

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../lib/internal/Magento/Framework/Module/etc/module.xsd">
    <module name="CustomerParadigm_PageXml" setup_version="1.0.0" schema_version="1.0.0">
        <sequence>
            <module name="Magento_Catalog"/>
            <module name="Magento_Theme"/>
        </sequence>
    </module>
</config>

অ্যাপ্লিকেশন / কোড / CustomerParadigm / PageXml জন্য / etc / events.xml

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
    <event name="layout_generate_blocks_after">
        <observer name="customerparadigm_layout_generate_blocks_after" instance="CustomerParadigm\PageXml\Model\Layout" />
    </event>
</config>

অ্যাপ্লিকেশন / কোড / CustomerParadigm / PageXml / registration.php

<?php
    \Magento\Framework\Component\ComponentRegistrar::register(
    \Magento\Framework\Component\ComponentRegistrar::MODULE,
    'CustomerParadigm_PageXml',
    __DIR__
);

অ্যাপ্লিকেশন / কোড / CustomerParadigm / PageXml / মডেল / Layout.php

<?php

namespace CustomerParadigm\PageXml\Model;
use Magento\Framework\Event\Observer;
use Magento\Framework\Event\ObserverInterface;

class Layout  implements ObserverInterface {
    protected $_logger;

    public function __construct ( \Psr\Log\LoggerInterface $logger ) {
        $this->_logger = $logger;
    }

    public function execute(\Magento\Framework\Event\Observer $observer) {
        $log_file = BP . '/var/log/page_layout.xml';
        if (file_exists($log_file)) {
            unlink($log_file);
        }
        $xml = $observer->getEvent()->getLayout()->getXmlString();
        /*$this->_logger->debug($xml);*/
        $writer = new \Zend\Log\Writer\Stream($log_file);
        $logger = new \Zend\Log\Logger();
        $logger->addWriter($writer);
        $logger->info($xml);
        return $this;
    }
}

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


0

https://gist.github.com/joshfortyfour/11d0f7dbc7be9e85bf4e9c62c668f465

@ আপনি যেখানে পাত্রে একটি তালিকা এখনও খুঁজে পান এটি সঠিকভাবে সনাক্ত করা খুব কঠিন তবে আমি জানি আপনি সঠিকটি সন্ধান করতে পারেন।

বা উপরের মতো কেউ ম্যাজেন্টোতে ধারক বা ব্লক সন্ধানের জন্য একটি ফ্রি মডিউল লিঙ্ক সরবরাহ করে, আমি এটি চেষ্টা করেছিলাম তবে তবুও এটি ওয়েবে ঘুরে বেড়াতে শ্রদ্ধার ক্ষেত্রে কতটা কার্যকর।

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