ম্যাজেন্টো 1.9.1 এর জন্য কিছু আপডেট তথ্য
বাগ @ বিনাই নির্দেশিত বাগটি অন্য কারনে কার্যকারিতাটি এখনও ভেঙে গেছে (কনফিগারযোগ্য পণ্যগুলির জন্য) এই সংস্করণে সমাধান হওয়া দেখায়
সমস্যাটি আসল সমস্যাটি সম্ভবত এখানেই রয়েছে Mage_Catalog_Model_Resource_Url
তবে আমার কাছে সময় নেই এবং আমি মূলটির এমন একটি সূক্ষ্ম অংশ স্পর্শ করতে চাই না।
একটি কাজের জন্য ব্যাখ্যা:
প্রবেশের স্থানটি সর্বদা এই শ্রেণি Mage_Core_Model_Url_Rewrite_Request
এবং বিশেষত পদ্ধতিতে হয়_rewriteDb()
কীভাবে _rewriteDb()
কাজ করে:
- প্রথমে এটি বর্তমান স্টোরের জন্য অনুরোধটি লোড করার চেষ্টা করুন
(139): $this->_rewrite->loadByRequestPath($requestCases);
- তবে যদি আমি এটি (আইডি নেই) খুঁজে না পাই এবং একটি
___from_store
প্যারামিটার রয়েছে
(142): if (!$this->_rewrite->getId() && $fromStore) {
- এর জন্য একটি পুনর্লিখন লোড করার চেষ্টা করুন
___from_store
:
(152): $this->_rewrite->setStoreId($fromStoreId)->loadByRequestPath($requestCases);
- এটি যদি এটি খুঁজে পায় তবে এটি
id_path
বর্তমান স্টোরের জন্য একটি লোড করতে ব্যবহার করে:
(159): $this->_rewrite->setStoreId($currentStore->getId())->loadByIdPath($this->_rewrite->getIdPath());
Url_rewrite ডেটাতে সমস্যা রয়েছে এবং তাই সূচির কার্যকারিতা (কমপক্ষে কনফিগারযোগ্য পণ্যগুলির জন্য) সমস্ত কিছু ঠিক আছে বলে মনে হচ্ছে:
- এমনকি যদি আমরা স্টোরটি স্যুইচ করে থাকি এবং নতুন স্টোরটিতে বিভিন্ন ইউআরএল থাকে তবে লাইন ১৩৯ এ পুনর্লিখনটি লোড হয়।
সমস্যাটি হ'ল এই পুনর্লিখনটি ভুলের id_path
দিকে ইঙ্গিত করে (কনফিগারযোগ্য পণ্য আইডির পরিবর্তে এটি এর সাধারণ পণ্য আইডির একটিতে নির্দেশ করছে)
এখন একটি !$this->_rewrite->getId()
শর্ত হ'ল শর্তটি সরিয়ে ফেলতে হয় এবং তাই কোনও $fromstore
প্যারামিটার থাকাকালীন ম্যাজেন্টো সর্বদা পুনর্নির্দেশের সন্ধান করার চেষ্টা করে
catalog_url
সূচকটি ঠিক করা এবং এটি তৈরি করা ভুল পুনরায় লেখাকে সরিয়ে ফেলা ভাল।
এখানে দ্রুত কাজের জন্য কোড ( Mage_Core_Model_Url_Rewrite_Request
আপনার নিজের দ্বারা একটি মডিউল তৈরি করতে হবে এবং পুনরায় লেখার শ্রেণি প্রয়োজন হবে ):
protected function _rewriteDb()
{
if (null === $this->_rewrite->getStoreId() || false === $this->_rewrite->getStoreId()) {
$this->_rewrite->setStoreId($this->_app->getStore()->getId());
}
$requestCases = $this->_getRequestCases();
$fromStore = $this->_request->getQuery('___from_store');
if ($fromStore) {
$stores = $this->_app->getStores(false, true);
if (!empty($stores[$fromStore])) {
/** @var $store Mage_Core_Model_Store */
$store = $stores[$fromStore];
$fromStoreId = $store->getId();
} else {
return parent::_rewriteDb();
}
$this->_rewrite->setStoreId($fromStoreId)->loadByRequestPath($requestCases);
if (!$this->_rewrite->getId()) {
return parent::_rewriteDb();
}
// Load rewrite by id_path
$currentStore = $this->_app->getStore();
$this->_rewrite->setStoreId($currentStore->getId())->loadByIdPath($this->_rewrite->getIdPath());
$this->_setStoreCodeCookie($currentStore->getCode());
$targetUrl = $currentStore->getBaseUrl() . $this->_rewrite->getRequestPath();
$this->_sendRedirectHeaders($targetUrl, true);
}
if (!$this->_rewrite->getId()) {
return parent::_rewriteDb();
}
$this->_request->setAlias(Mage_Core_Model_Url_Rewrite::REWRITE_REQUEST_PATH_ALIAS,
$this->_rewrite->getRequestPath());
$this->_processRedirectOptions();
return true;
}