การเขียน URL ใหม่ใน Magento
เผยแพร่แล้ว: 2014-09-11เป็นสิ่งสำคัญอย่างยิ่งที่เว็บไซต์ทั้งหมดจะต้องมี URL ที่เป็นมิตรต่อวัตถุประสงค์ SEO อย่างไรก็ตาม มันไม่ง่ายเสมอไปที่เราจะสร้างสิ่งเหล่านั้นใน Magento โดยเฉพาะอย่างยิ่งเมื่อคุณติดตั้งโมดูล เราจะแก้ไขปัญหานี้ในฐานะผู้ใช้ที่ไม่ใช่ด้านเทคนิคได้อย่างไร เรามีวิธีแก้ปัญหาที่เป็นไปได้ 2 วิธีสำหรับ การเขียน URL ใหม่ใน Magento และสร้าง URL ที่เหมาะสมตามที่คุณต้องการ คุณจะเห็นว่ามันจะไม่เป็นปัญหาใหญ่อีกต่อไป
ร้อน!! เวอร์ชัน 2.0 ของ Claue ได้รับการเผยแพร่แล้ว

ดูการสาธิต
Claue – ธีม Magento 2&1 ที่สะอาดและเรียบง่ายเป็นเทมเพลตที่ยอดเยี่ยมสำหรับร้านอีคอมเมิร์ซที่ทันสมัยและสะอาดตา พร้อมด้วยเลย์เอาต์ของหน้าแรกมากกว่า 40 แบบและตัวเลือกมากมายสำหรับร้านค้า บล็อก พอร์ตโฟลิโอ เลย์เอาต์ตัวระบุตำแหน่งร้าน และหน้าที่มีประโยชน์อื่นๆ Claue เวอร์ชัน 2. 0 มาพร้อมกับคุณสมบัติพิเศษมากมาย ได้แก่ :
- อิงจากธีม Luma
- ตรงตามมาตรฐานทั้งหมดของ Magento Theme
- การปรับปรุงประสิทธิภาพที่สำคัญ
- เข้ากันได้กับส่วนขยายของบุคคลที่สามส่วนใหญ่
- เข้ากันได้อย่างสมบูรณ์กับ Magento 2.4.x
รุ่นขั้นสูงที่สองนี้แตกต่างอย่างสิ้นเชิงจากรุ่นก่อน ดังนั้น หากคุณใช้ Claue เวอร์ชัน 1 และต้องการอัปเดตเป็น Claue เวอร์ชัน 2 คุณสามารถสร้างเว็บไซต์ใหม่ได้เท่านั้น แทนที่จะอัปเดตจากเวอร์ชันเก่า เอาล่ะ กลับมาที่หัวข้อหลัก
ก่อนที่เราจะเข้าใกล้วิธีแก้ปัญหาทั้ง 2 นี้ เรากำลังแสดงตัวอย่างเพื่ออธิบายว่า URL เริ่มต้นถูกสร้างขึ้นอย่างไรและความรู้ที่จำเป็นเบื้องต้นเพื่อซ่อมแซมบางอย่าง เช่น. เราได้สร้างโมดูลสำหรับ Blog ชื่อ Blog และเนมสเปซของมันคือ MGS โดยมีฟิลด์อย่างง่ายเช่น
| id | ชื่อ | คำอธิบาย |
ในส่วนแบ็คเอนด์ เมื่อเราสร้างโพสต์ เราจำเป็นต้องแทรกสองฟิลด์ กล่าวคือ ชื่อเรื่องและคำอธิบาย ID ของโพสต์จะถูกสร้างขึ้นโดยอัตโนมัติ เพื่อแสดงรายละเอียดการโพสต์ของ Blog เราอาศัยเราเตอร์ (ประกาศในไฟล์ config.xml เราประกาศบล็อก) ตัวควบคุม (เราตั้งชื่อว่า index ดังนั้นมันจะเป็นไฟล์ IndexControler.php ในโฟลเดอร์ควบคุม) การกระทำ (เราเรียกว่ามุมมอง , ฟังก์ชั่น viewAction ในไฟล์ IndexControler.php) และ id ของโพสต์
ดังนั้น URL เริ่มต้นของโพสต์ที่ส่วนหน้าจะมีลักษณะดังนี้:
http://domain.com/blog/index/view/id/1 (1 คือ ID ของโพสต์)
เท่าที่เราเห็น URL นี้ไม่ดีสำหรับ SEO โดยสิ้นเชิง ควรเขียนใหม่เพื่อให้กลายเป็น URL ที่เป็นมิตร กลับไปที่วัตถุประสงค์หลัก เราเสนอ 2 วิธีในการสร้าง URL ที่เป็นมิตร และไม่ว่าจะด้วยวิธีใด คุณจะต้องกำหนด URL ที่คุณต้องการ หรือคุณจะต้องปฏิบัติตามกฎทั่วไปเพื่อสร้าง URL (โดยปกติ เราจะใช้ชื่อบทความ แปลงอักขระทั้งหมดเป็นแบบปกติ แทนที่พื้นที่ว่างด้วย - เช่น ชื่อเรื่อง “ วิธีเขียน URL ใหม่ใน Magento ” จะกลายเป็น “ how-to-re-rewrite-url-in-magento
ในบทความนี้ เราจะใช้วิธีการกำหนด URL ดังนั้น เราจะเพิ่มอีกหนึ่งฟิลด์ในฐานข้อมูลด้านบนเพื่อบันทึก URL
| id | ชื่อ | คำอธิบาย | url |
ดังนั้น URL ของโพสต์จะถูกกรอก
เทคนิคแรกในการเขียน URL ใหม่
ใช้ฟังก์ชันเขียน URL ใหม่ของ Magento คุณสามารถดูรายละเอียดเพิ่มเติมได้ที่ Catalog-> URL Rewrite Management

คุณจะพบว่า Magento สร้างโมดูลเพื่อบันทึกการเขียน URL ใหม่สำหรับหมวดหมู่และผลิตภัณฑ์ Magento ยังให้คุณเพิ่มการเขียน URL ใหม่ได้ด้วยการคลิก “Add Url Rewrite” เพื่อเพิ่มการเขียน URL แบบกำหนดเองด้วย:
เส้นทางเป้าหมาย: เป็น URL ของโพสต์ เช่น บล็อก/ดัชนี/ดู/id/1
ขอเส้นทาง : เป็น URL เขียนใหม่ที่คุณจะแทรกเช่น How-to-rewrite-url-in-magento.html
แน่นอนว่าเราจะไม่เพิ่มข้อมูลนี้ด้วยตนเองเพื่อบันทึกการเขียน URL ใหม่ แต่เราจะใช้โมเดล url_rewrite ของโมดูลหลัก (Mage::getModel('core/url_rewrite')) เพื่อบันทึก URL ของบล็อกในตาราง core_url_rewrite หลังจากบันทึกข้อมูลบล็อก
หลังจากที่คุณบันทึกโพสต์ในบล็อกแล้ว คุณจะใช้รหัสต่อไปนี้เพื่อบันทึกการเขียน URL ใหม่:
Mage::getModel('core/url_rewrite')
->setIsSystem(true)
->setIdPath('blog/index/view/id/'.$blogId)
->setTargetPath('blog/index/view/id/'.$blogId)
->setRequestPath($url)
->save();
หมายเหตุ: $blogId คือรหัสของบล็อกหลังจากบันทึกแล้ว และ $url คือ URL ที่คุณกำหนด

หากคุณได้รับการเตือน คำสั่งดังกล่าวจะนำไปใช้กับโพสต์ใหม่ หากคุณต้องการแก้ไขโพสต์ที่มีอยู่ คุณต้องอัปเดตบันทึกนี้
เทคนิคที่สองในการเขียน URL ใหม่
ยังคงใช้โมดูลบล็อกและฟิลด์ข้อมูลเดิมตามที่กล่าวไว้ข้างต้น คุณสร้างโพสต์ในส่วนหลังรวมถึงข้อมูลชื่อ คำอธิบาย url ที่เพียงพอ
ไปที่ config.xml (app/code/local/MGS/Blog/etc)
ภายในแท็กส่วนกลาง:
<global> … </global>
เพิ่มรหัสต่อไปนี้
<events>
<controller_front_init_routers>
<observers>
<blog_custom_router>
<class>MGS_Blog_Controller_Router</class>
<method>initControllerRouters</method>
</blog_custom_router>
</observers>
</controller_front_init_routers>
</events>
ในโฟลเดอร์หลักของโมดูล app/code/local/MGS/Blog คุณจะสร้างโฟลเดอร์อื่นชื่อ Controller ซึ่งคุณจะสร้างไฟล์ชื่อ Router.php โดยมีเนื้อหาด้านล่าง:
<?php
class MGS_Blog_Controller_Router extends Mage_Core_Controller_Varien_Router_Abstract
{
/**
* Initialize Controller Router
*
* @param Varien_Event_Observer $observer
*/
public function initControllerRouters($observer)
{
/* @var $front Mage_Core_Controller_Varien_Front */
$front = $observer->getEvent()->getFront();
$front->addRouter('blog', $this);
}
/**
* Validate and Match Cms Page and modify request
*
* @param Zend_Controller_Request_Http $request
* @return bool
*/
public function match(Zend_Controller_Request_Http $request)
{
if (!Mage::isInstalled()) {
Mage::app()->getFrontController()->getResponse()
->setRedirect(Mage::getUrl('install'))
->sendResponse();
exit;
}
$identifier = trim($request->getPathInfo(), '/');
$condition = new Varien_Object(array(
'identifier' => $identifier,
'continue' => true
));
if ($condition->getRedirectUrl()) {
Mage::app()->getFrontController()->getResponse()
->setRedirect($condition->getRedirectUrl())
->sendResponse();
$request->setDispatched(true);
return true;
}
if (!$condition->getContinue()) {
return false;
}
$collection = Mage::getModel('blog/blog')
->getCollection();
if(count($collection)>0){
foreach($collection as $post){
if($identifier == $post->getUrl()){
$request->setModuleName('blog');
$request->setControllerName('index');
$request->setActionName('view');
$request->setParam('id', $post->getId());
return true;
}
}
}
}
} รหัสข้างต้นหมายถึง:
ตัวอย่างเช่น เมื่อคุณพิมพ์เส้นทางในเบราว์เซอร์:
http://domain.com/how-to-rewrite-url-in-magento
ฟังก์ชั่นจะเปรียบเทียบเส้นทาง: how-to-rewrite-url-in-magento.html กับ url ในตารางข้อมูลของบล็อก
หากเส้นทางคล้ายกับฟิลด์ URL ของเร็กคอร์ดใด ๆ ใน db แล้วมี 4 บรรทัดคำสั่ง:
$request->setModuleName('blog');
$request->setControllerName('index');
$request->setActionName('view');
$request->setParam('id', $post->getId());จะช่วยให้ระบบเข้าใจว่า URL นั้นสอดคล้องกับเราเตอร์: บล็อก, ตัวควบคุม: ดัชนี, การดำเนินการ: ดู และ id เป็นรหัสของบันทึกที่มี URL เหมือนกับเส้นทางในเบราว์เซอร์
เช่น. บันทึกที่มี URL how-to-rewrite-url-in-magento.html และ id 1 จากนั้น:
http://domain.com/how-to-rewrite-url-in-magento.html
สอดคล้องกับ
http://domain.com/blog/index/view/id/1
นี่คือสองวิธีแก้ไขปัญหาที่เราแนะนำในการแก้ปัญหาที่เป็นมิตรกับ URL ใน Magento เราหวังว่าคุณจะพบว่ามีประโยชน์ เราขอขอบคุณสำหรับความคิดเห็นของคุณและการสนับสนุนเพิ่มเติมในบทความ
ขอบคุณมากสำหรับเวลาของคุณ!
ทีม สนับสนุนมาเกโซลูชั่น !
