আমি ২.২.৪-এর একটি ক্লিন ইনস্টল করে একটি নতুন থিম প্রয়োগ করতে অক্ষম। 2.2.5 আপ আপ করা সমস্যার সমাধান করে না।
আমি ২.২.৪-এর একটি ক্লিন ইনস্টল করে একটি নতুন থিম প্রয়োগ করতে অক্ষম। 2.2.5 আপ আপ করা সমস্যার সমাধান করে না।
উত্তর:
দ্রষ্টব্য: এটি ম্যাজেন্টো ২.২.৪ এ একটি জ্ঞানের সমস্যা ( গিটহাব সমস্যাটি দেখুন ) এবং নীচে ঠিক করা কেবলমাত্র একটি অস্থায়ী ফিক্স। আপনার সরাসরি ম্যাজেন্টো কোর ফাইলটি পরিবর্তন করা উচিত নয় (ওভাররাইড করুন বা একটি প্লাগইন তৈরি করুন)
এতে পরিবর্তন করুন Magento\Email\Model\AbstractTemplate.php
:
public function setForcedArea($templateId)
{
if ($this->area) {
throw new \LogicException(__('Area is already set'));
}
$this->area = $this->emailConfig->getTemplateArea($templateId);
return $this;
}
এর জন্য:
public function setForcedArea($templateId)
{
if (!isset($this->area)) {
$this->area = $this->emailConfig->getTemplateArea($templateId);
}
return $this;
}
এটি সমস্যার সমাধান করা উচিত
আপডেট : এই প্যাচ প্রয়োগ করেও ঠিক করা যায়
Something went wrong while saving this configuration: Area is already set
থিম কনফিগারেশন সংরক্ষণ করার সময় স্থির ত্রুটির জন্য । আপনি Magento\Email\Model\AbstractTemplate.php
কাস্টম মডিউলটিতে ওভাররাইড ফাইলের জন্য প্লাগইন তৈরি করতে চান । এবং আপডেট setForcedArea()
ফাংশন।
ফাইলের পাথ: ম্যাজেন্টো / অ্যাপ / কোড / বিক্রেতা / এরিয়া কনফিগফিক্স / রেজিস্ট্রেশন.এফপি
<?php
use \Magento\Framework\Component\ComponentRegistrar;
ComponentRegistrar::register(ComponentRegistrar::MODULE, 'Vendor_AreaConfigFix', __DIR__);
ফাইলের পথ: ম্যাজেন্টো / অ্যাপ / কোড / বিক্রেতা / এরিয়া কনফিগফিক্স / ইত্যাদি / মডিউল.এক্সএমএল
<?xml version="1.0" ?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
<module name="Vendor_AreaConfigFix" setup_version="1.0.0">
<sequence>
<module name="Magento_Email"/>
</sequence>
</module>
</config>
ফাইলের পথ: ম্যাজেন্টো / অ্যাপ / কোড / বিক্রেতা / এরিয়া কনফিগফিক্স / ইত্যাদি / di.xML
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<type name="Magento\Email\Model\AbstractTemplate">
<plugin name="email_setforced_area" type="Vendor\AreaConfigFix\Plugin\Email\Model\AbstractTemplate" />
</type>
</config>
ফাইলের পথ: ম্যাজেন্টো / অ্যাপ / কোড / বিক্রেতা / এরিয়া কনফিগফিক্স / প্লাগইন / ইমেল / মডেল / অ্যাবস্ট্রাক্টেম্পলেট.এফপি
<?php
namespace Vendor\AreaConfigFix\Plugin\Email\Model;
class AbstractTemplate
{
private $emailConfig;
public function __construct(\Magento\Email\Model\Template\Config $emailConfig)
{
$this->emailConfig = $emailConfig;
}
public function aroundSetForcedArea(\Magento\Email\Model\AbstractTemplate $subject, \Closure $proceed, $templateId)
{
if (!isset($this->area)) {
$this->area = $this->emailConfig->getTemplateArea($templateId);
}
return $this;
}
}
ম্যাজেন্টো দ্বারা প্রদত্ত প্যাচটি ইনস্টল করার পরিবর্তে বা মূল ফাইলগুলি সরাসরি এখানে পরিবর্তন করার পরিবর্তে আমি কীভাবে এটি করেছি:
"ফাইলের পথ: ম্যাজেন্টো / অ্যাপ / কোড / বিক্রেতা / থিমেররফিক্স / রেজিস্ট্রেশন.এফপি"
<?php
use \Magento\Framework\Component\ComponentRegistrar;
ComponentRegistrar::register(ComponentRegistrar::MODULE, 'Vendor_ThemeErrorFix', __DIR__);
"ফাইলের পথ: ম্যাজেন্টো / অ্যাপ / কোড / বিক্রেতা / থিমেররফরিক্স / ইত্যাদি / মডিউল.এক্সএমএল"
<?xml version="1.0" ?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
<module name="Vendor_ThemeErrorFix" setup_version="1.0.0">
<sequence>
<module name="Magento_Email"/>
</sequence>
</module>
</config>
"ফাইলের পথ: ম্যাজেন্টো / অ্যাপ / কোড / বিক্রেতা / থিমেররফরিক্স / ইত্যাদি / di.xML"
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<preference for="Magento\Email\Model\Template">
type="email_setforced_area" type="Vendor\ThemeErrorFix\Model\Template" />
</config>
"ফাইলের পথ: ম্যাজেন্টো / অ্যাপ / কোড / বিক্রেতার / থিমেরররফিক্স / মডেল / টেম্পলেট.এফপি"
<?php
namespace Vendor\ThemeErrorFix\Model;
use Magento\Email\Model\Template as coreTemplate;
class Template extends coreTemplate
{
public function setForcedArea($templateId)
{
if (!isset($this->area)) {
$this->area = $this->emailConfig->getTemplateArea($templateId);
}
return $this;
}
}