การเขียน 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 เราหวังว่าคุณจะพบว่ามีประโยชน์ เราขอขอบคุณสำหรับความคิดเห็นของคุณและการสนับสนุนเพิ่มเติมในบทความ
ขอบคุณมากสำหรับเวลาของคุณ!
ทีม สนับสนุนมาเกโซลูชั่น !