Magento

คำถาม & คำตอบสำหรับผู้ใช้แพลตฟอร์ม Magento e-Commerce

2
$ _product-> getProductUrl () กำลังให้เส้นทาง URL โดยไม่มีคีย์ URL
ฉันได้รับชุดผลิตภัณฑ์บางประเภทในหน้าหนึ่งในเว็บไซต์ Magento ที่แตกต่างกัน รหัสของฉันสำหรับรับชุดคือ: $category = new Mage_Catalog_Model_Category(); $category->load($id); $collection = $category->getProductCollection(); $collection->addAttributeToSelect('*'); $collection->addAttributeToFilter('status', 1); $collection->addFieldToFilter(array(array('attribute'=>'visibility', 'neq'=>"1" ))); $collection->getSelect()->limit(12); foreach ($collection as $shopProduct) : echo $shopProduct->getProductUrl(); endforeach; ปัญหาของฉันคือว่าหนึ่งในเว็บไซต์ Magento ที่เรากำลังเรียกใช้ProductUrl()นั้นเป็น URL ที่http://www.my site.com/catalog/product/view/id/2309/s/shopcat/category/373/ไม่เหมือนhttp://www.site.com/shopcat/product-url-key.htmlใคร แต่ในเว็บไซต์อื่น ๆ มันปรากฏตามที่เราต้องการ ไม่มีใครรู้ว่าทำไมสิ่งนี้อาจเป็นเพราะอะไร? ขอบคุณ! ฉันลองใช้getUrlPath()ด้วย แต่ก็ไม่ได้อะไรกลับมา ฉันรู้ว่าฉันสามารถทำสิ่งนี้ได้โดยทำสิ่งที่ชอบ<?php echo $this->getBaseUrl().$shopProduct->getUrlKey().".html"; ?>แต่วิธีการนั้นดูเหมือนไม่มีประสิทธิภาพ! แก้ไข 21/03/14:ฉันยังคงมีปัญหานี้ ฉันได้รับรู้ถึงการgetProductUrl()ดึง URL ที่ต้องการในไฟล์เทมเพลตบางไฟล์ของเว็บไซต์ ตัวอย่างเช่นฉันกำลังโหลดคอลเล็กชันหนึ่งในหน้าแรกและมันมอบ …
15 url  products 

2
การใช้ Magento CE patches
ตามหน้าดาวน์โหลด Magento ภายใต้ส่วนแพตช์ โปรดอัปโหลดแพตช์ลงในไดเรกทอรีรากของวีโอไอพีของคุณและรันคำสั่ง SSH ที่เหมาะสม: สำหรับไฟล์แพตช์ที่มีนามสกุลไฟล์ `.sh: sh patch_file_name.sh ตัวอย่าง: sh PATCH_SUPEE-1868_CE_1.7.0.2_v1.sh Magento แนะนำให้เรียกใช้shคำสั่งโดยตรงเพื่อเรียกใช้ตัวแก้ไขโปรแกรมแก้ไข นามสกุลของไฟล์.shนี้รองรับเช่นกัน แต่ถ้าคุณมองไปที่ด้านบนของแต่ละไฟล์วิ่งแพทช์ที่จุดเส้น shebang bashไป #!/bin/bash # Patch apllying tool template # v0.1.2 # (c) Copyright 2013. Magento Inc. # โปรแกรมเมอร์ในตัวผมต้องการที่จะไว้วางใจแฟ้มแหล่งที่มา แต่กระบวนการ wonk ต้องการที่จะทำตามสิ่งที่เขียนไว้ในเว็บไซต์วีโอไอพีมหัศจรรย์ถากถางถ้าแพทช์ได้รับการทดสอบกับความแตกต่างระหว่างการทุบตีและการดวลจุดโทษ
15 patches  shell 

7
การพิมพ์ข้อยกเว้นถูกปิดใช้งานโดยค่าเริ่มต้นด้วยเหตุผลด้านความปลอดภัย [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Magento Stack Exchange ปิดให้บริการใน4 ปีที่แล้ว ฉันพยายามตั้งค่าวีโอไอพีของฉันไปที่โฮสต์ของฉัน ดังนั้นฉันจึงสร้างฐานข้อมูลใหม่และฉันก็นำเข้าไฟล์ sql ของฉันและเปลี่ยนการตั้งค่าใน local.xml สำหรับฐานข้อมูล แต่ตอนนี้ฉันได้รับข้อยกเว้นการพิมพ์ถูกปิดใช้งานโดยค่าเริ่มต้นด้วยเหตุผลด้านความปลอดภัย

1
เวลาตอบสนองนานสำหรับ Mage_Core_Model_Session_Abstract_Varien :: start
ดังนั้นฉันจึงสังเกตเห็นใน New Relic บนเว็บไซต์ของเรามากมายการโหลดหน้าเว็บมากมายของเราเกิดขึ้นเนื่องจาก Mage_Core_Model_Session_Abstract_Varien :: เริ่ม ฉันได้ทำการวิจัยแล้วและไม่เคยเห็นใครพูดถึงเรื่องนี้เลย เราใช้ Nginx, PHP FPM, Redis สำหรับการแคชและ Memcache สำหรับเซสชัน ความคิดของฉันบางอย่างอาจเป็นอย่างอื่นที่ใช้เวลานานและปรากฏว่าการโหลดเซสชันเป็นปัญหา หรืออย่างใดมีรหัสที่กำหนดเองบางอย่างที่เพิ่มข้อมูลจำนวนมากไปยังเซสชั่นที่ก่อให้เกิดเซสชันขนาดใหญ่ ฉันไม่ได้มีความรู้ในแง่ของเซสชันและวิธีการจัดการ แต่ฉันพบบทความบางอย่างที่พูดถึงการล็อคเซสชัน อย่างไรก็ตามฉันไม่คิดว่าผู้คนจะเปิดหลายหน้าพร้อมกัน บางส่วนของโหลดเหล่านี้มีความยาว 20 - 30 วินาที ฉันแค่อยากรู้อยากเห็นถ้าใครสังเกตเห็นสิ่งนี้หรือมีความรู้เพิ่มเติมเกี่ยวกับวิธีการวิเคราะห์คำขอแบบยาวเหล่านี้เนื่องจากเซสชัน

1
วิธีการแทนที่ config.xml
ฉันต้องเปลี่ยนประเภทเทมเพลตอีเมลหน้าติดต่อเราจาก "text" เป็น "HTML" ฉันพบว่ามันอยู่ใน config.xml <email> <contacts_email_email_template translate="label" module="contacts"> <label>Contact Form</label> <file>contact_form.html</file> <type>text</type> </contacts_email_email_template> </email> วิธีการแทนที่ config.xml อย่างถูกต้อง [แก้ไข] นี่สำหรับแอปไฟล์ / รหัส / core / mage / contact / etc / config.xml และคำตอบด้านล่างจะใช้ได้กับ ... / mage / ANYTHING / etc / config.xml

5
แคชแบบเต็มหน้าใน CE 1.8 - โมดูล Magento FPC? วานิช? ทั้งสอง?
ล็อคแล้ว คำถามและคำตอบของคำถามนี้ถูกล็อคเนื่องจากคำถามอยู่นอกหัวข้อ แต่มีความสำคัญทางประวัติศาสตร์ ขณะนี้ไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ ดังนั้นฉันสับสนเล็กน้อยเมื่อฉันทำการค้นคว้า Full Page Caching สำหรับ Community Edition 1.8 ฉันได้ติดตั้ง Redis Cache สองระดับ CDN ปรับ my.cnf ของ MySQL เพื่อประสิทธิภาพสูงสุด (w / ฐานข้อมูลอยู่บนเซิร์ฟเวอร์ที่แยกต่างหากแน่นอน) และฉันมี 2 เซิร์ฟเวอร์ที่โฮสต์ร้านค้าของเราอยู่ด้านหลังตัวโหลดบาลานซ์ ฉันบอกว่าจะชี้ให้เห็นว่าฉันไม่ได้กระโดดสำหรับ FPC ทันทีก่อนที่จะทำการปรับแต่งประสิทธิภาพเริ่มต้น ฉันไม่เคยใช้ Varnish มาก่อนในเว็บไซต์ทุกรูปแบบ Magento นับประสาและฉันก็ไม่เคยตั้ง FPC ใน Magento เช่นกัน ฉันเข้าใจว่าวานิชเป็นพร็อกซีที่ทำหน้าที่เป็นจุดเชื่อมต่อระหว่าง CDN และหน้าแคชด้วยตัวเองโดยส่งข้อมูลไปยังเบราว์เซอร์ก่อนที่คำขอจะเข้าสู่เว็บเซิร์ฟเวอร์ และเพื่อความเข้าใจของฉันโมดูล FPC สร้างแคชเฉพาะที่เว็บเซิร์ฟเวอร์เองออก ฉันรู้ว่าสำหรับการตั้งค่าทั้งสองคุณต้องทำ "การเจาะรู" เพื่อรับเนื้อหาแบบไดนามิกไปยังเบราว์เซอร์ (แม้ว่าเทคนิคจะแตกต่างกันระหว่างการใช้โมดูลหรือการใช้วานิช) …


2
อีเมลการทำธุรกรรม: วิธีการเทมเพลต 'sales_email_order_items' (หรือวิธีการแทนที่เทมเพลต adminhtml)
ในรหัสอีเมลธุรกรรมฉันเห็นสิ่งนี้: {{layout handle="sales_email_order_items" order=$order}} {{var items_html}} ซึ่งฉันเชื่อว่าหมายถึงไฟล์เทมเพลตนี้: /app/design/adminhtml/default/default/template/email/order/items.phtml ฉันพยายามสร้างโฟลเดอร์ใหม่ด้วยธีมของเราเพื่อหลีกเลี่ยงการเขียนทับไฟล์หลัก: /app/design/our_theme/default/default/template/email/order/items.phtml แต่ดูเหมือนจะใช้งานไม่ได้มีวิธีที่เหมาะสมในการแทนที่ไฟล์นี้โดยไม่ต้องเขียนทับแกนหรือไม่?

2
ฉันจะให้สิทธิ์ใช้งานโมดูลของฉันได้อย่างไร
ฉันมีโมดูลที่ฉันเขียนให้กับ บริษัท ของฉัน ใช้ข้อมูลจากโซลูชัน back office ของเราและนำเข้าสู่ Magento นอกจากนี้ยังรับออเดอร์จาก Magento และนำเข้ามาในซอฟแวร์ Back Office ฉันได้อ่านใบอนุญาตประเภทต่างๆที่ฉันสามารถใช้ได้แล้วแต่ไม่ทราบว่าควรใช้ใบอนุญาตประเภทใด ข้อกำหนดพื้นฐานของฉันคือ: ฉันไม่ต้องการให้ใครบางคนทำสำเนา / แจกจ่ายรหัสเป็นงานของตัวเอง รหัสเขียนด้วยตัวเอง แต่เรียกฟังก์ชั่นหลักคุณภาพเยี่ยม โมดูลจะสามารถดาวน์โหลดได้ฟรี แต่ในการใช้งานคุณจะต้องมี Url บริการเว็บที่ บริษัท ของฉันจะให้บริการ (หลังจากได้รับการชำระเงินแล้ว) ฉันต้องการแจกจ่ายไปยัง Magento ทุกรุ่น (ยกเว้น GO (ฉันคิดว่า)) คำถามสองข้อที่มีอยู่ในใจข้างต้น: ใบอนุญาตใดที่เหมาะสมกับความต้องการของฉันมากที่สุด (ฉันไม่พบรายการที่ชัดเจนของพวกเขาทั้งหมดเพื่ออ่าน) ฉันจะบังคับใช้ใบอนุญาตนี้ได้อย่างไร การเพิ่มคำศัพท์บางส่วนลงบนสุดของแต่ละสคริปต์เพียงพอหรือไม่เพื่อให้แน่ใจว่ามีสิทธิ์การใช้งานอยู่หรือไม่ หากข้อมูลนี้มีอยู่ที่ใดที่หนึ่งโปรดอย่าลังเลที่จะเชื่อมโยงฉันเข้ากับข้อมูลนั้น แต่ฉันไม่พบสิ่งใดหลังจากการค้นหาของฉันที่ตอบสถานการณ์ของฉันโดยเฉพาะ

2
วิธีที่ดีที่สุดในการเพิ่มกริดแบบไดนามิกเป็นอินพุตใน Adminhtml ส่วนขยายที่กำหนดเอง
ฉันสร้างส่วนขยายตัวระบุตำแหน่งร้านค้าที่กำหนดเองด้วยตารางของตัวเองและแก้ไขหน้าใน Adminhtml และทุกอย่างใช้งานได้ดี สำหรับเวลาทำการของร้านค้าฉันต้องการใช้กริดแบบไดนามิกเช่นเดียวกับตัวเลือกคุณลักษณะ ตอนนี้ฉันได้พบวิธีแก้ปัญหา แต่ฉันหวังว่าจะมีวิธีที่ดีกว่าหรืออย่างน้อยก็สะอาดกว่า สิ่งที่ฉันมีจนถึงตอนนี้ก็คือการเพิ่มตัวแสดงผลลงในฟิลด์ในแบบฟอร์มfieldset class Redkiwi_Rkstorelocator_Block_Adminhtml_Rkstorelocator_Edit_Tab_General extends Mage_Adminhtml_Block_Widget_Form { protected function _prepareForm() { $form = new Varien_Data_Form(); $this->setForm($form); $fieldset = $form->addFieldset('rkstorelocator_form', array('legend'=>Mage::helper('rkstorelocator')->__('Store information'))); [...] $officehours_field = $fieldset->addField('office_hours', 'editor', array( 'name' => 'office_hours', 'label' => Mage::helper('rkstorelocator')->__('Office hours'), 'required' => false, )); $officehours_block = $this->getLayout() ->createBlock('rkstorelocator/adminhtml_rkstorelocator_edit_renderer_officehours') ->setData(array( 'name' => …

3
จะเขียนคลาสที่มีการเขียนใหม่ได้อย่างไร?
อัปเดต:ฉันพบว่าชั้นที่ฉันต้องการเขียนจริงนั้นSMDesign_SMDZoom_Block_Product_View_Mediaไม่SMDesign_ColorswatchProductView_Block_Product_View_Mediaเหมือนที่ฉันคิดไว้ในตอนแรก อย่างไรก็ตามปัญหาเดียวกันที่แน่นอนยังคงใช้ ส่วนขยายการออกแบบ SMDZoom เขียนคลาสบล็อกใหม่อีกครั้งว่า 'catalog / product_view_media' xml สำหรับที่มีลักษณะเช่นนี้: <global> ... <blocks> <smdzoom> <class>SMDesign_SMDZoom_Block</class> </smdzoom> </blocks> <blocks> <catalog> <rewrite> <product_view_media>SMDesign_SMDZoom_Block_Product_View_Media</product_view_media> </rewrite> </catalog> </blocks> .... </global> ฉันต้องการเขียนคลาสนี้อีกครั้ง ฉันต้องการเขียนคลาส catalog / product_view_media อีกครั้งว่าโมดูล smdzoom นี้กำลังเขียนใหม่ สามารถทำได้หรือไม่ config xml มีลักษณะอย่างไรในโมดูลของฉันเพื่อทำสิ่งนี้? ปัจจุบันนี้เป็นไฟล์โมดูล xml ของฉัน: <config> <modules> <Goorin_SMDZoom> <active>true</active> <codePool>local</codePool> </Goorin_SMDZoom> <depends> <Mage_Catalog /> …

2
โหลด / รับบล็อกนอก Magento เส้นทางสำหรับใช้ภายนอก
ฉันมีหน้าเว็บภายนอกและฉันพยายามดึงส่วนหัวของไซต์จากเฟรมเวิร์ก Magento เพื่อใช้เป็นส่วนหัวในหน้าภายนอกนี้ นี่คือสิ่งที่ฉันมี: // initialize Magento $rootPath = dirname(dirname(__FILE__)); $mageInc = $rootPath . "/app/Mage.php"; include_once $mageInc; Mage::app('admin')->setCurrentStore(0); $headerBlock = Mage::app()->getLayout()->createBlock('page/html_header'); //also tried //$headerBlock = Mage::app()->getLayout()->createBlock('page/html_header', 'header'); อย่างไรก็ตามการดำเนินการหยุดอยู่ตรงนั้นและฉันไม่ได้รับข้อความแสดงข้อผิดพลาด เป้าหมายของฉันคือดึงบล็อกMage_Page_Block_Html_Headerซึ่งฉันคิดว่าฉันสามารถใช้เพื่อโหลด<block type="page/html_header" name="header" as="header">และเนื้อหาทั้งหมดจากไฟล์เค้าโครง page.xml แท็ก XML นั้นห่ออยู่ข้างใน <default translate="label" module="page"> <block type="page/html" name="root" output="toHtml" template="page/1column.phtml"> แท็กดังนั้นฉันอาจต้องระบุว่าอย่างใด ฉันไม่แน่ใจว่าฉันทำอะไรผิดและไปจากที่นี่

4
Magento รุ่นที่กำหนดเอง (ไม่ใช่ eav), โหลดได้หลายช่อง
ฉันมีโมเดลที่กำหนดเองและโมเดลของทรัพยากร ฉันต้องการโหลดอินสแตนซ์เดียวของโมเดลโดยใช้มากกว่า 1 ฟิลด์ โมเดลมีฟิลด์ต่อไปนี้: id tag_name custom_name group_name ฉันต้องการโหลดโมเดลนี้โดยยึดตาม tag_name, custom_name และ group_name แทนที่จะเป็น id ขณะนี้ฉันกำลังใช้คอลเล็กชันและ addFilter สำหรับแต่ละฟิลด์ ใช้งานได้ แต่ฉันสงสัยว่ามีกลยุทธ์มาตรฐานสำหรับสิ่งประเภทนี้ใน Magento หรือไม่? แก้ไข Core magento ดูเหมือนจะไม่ใช้คอลเลกชันสำหรับสถานการณ์นี้ แต่ใช้การสอบถาม sql โดยตรงในโมเดลทรัพยากร ตัวอย่างของสิ่งนี้คือ: loadByAccountAndDate() ใน Mage_Paypal_Model_Resource_Report_Settlement มีเหตุผลสำหรับสิ่งนี้เมื่อคอลเลกชันดูเหมือนจะเป็นวิธีที่กระชับมากขึ้นในแง่ของจำนวนรหัสที่จะเขียน ฉันไม่รู้ว่าทำไมวีโอไอพีถึงเลือกทำแบบนี้
15 collection  model 

1
กลไกของตารางการเปลี่ยนแปลงใหม่ (เช่น: catalog_category_product_cat_cl)
ฉันเพิ่งเห็นตารางที่กล่าวถึงในฐานข้อมูล ฉันคิดว่ามันใหม่ใน Magento EE 1.13 และอาจเกี่ยวข้องกับการจัดทำดัชนีใหม่ + + ---------------------------------------- | catalog_category_flat_cl | | catalog_category_product_cat_cl | | catalog_category_product_index_cl | | catalog_product_flat_cl | | catalog_product_index_price_cl | | cataloginventory_stock_status_cl | | catalogsearch_fulltext_cl | | enterprise_url_rewrite_category_cl | | enterprise_url_rewrite_product_cl | | enterprise_url_rewrite_redirect_cl | + + ---------------------------------------- ตารางเหล่านั้นทำงานอย่างไร จุดประสงค์คืออะไร? พวกเขาทำความสะอาดโดยอัตโนมัติหลังจากเวลา มันสมเหตุสมผลหรือไม่ที่จะรวมตารางเหล่านั้นไว้ในการสำรองข้อมูล?
15 database  ee-1.13 

2
วิธีการจัดเรียงหมวดหมู่ตามที่ปรากฏในผู้ดูแลระบบ
นี่คือรหัส: $category = Mage::getModel('catalog/category')->load(3); $subCats = Mage::getModel('catalog/category')->load($category->getId())->getChildren(); $subCatIds = explode(',',$subCats); $currentUrl = Mage::helper('core/url')->getCurrentUrl(); กรุณาให้คำแนะนำขอบคุณ!
15 frontend 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.