Magento

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

1
จะสร้างฟิลด์แบบฟอร์มโดยใช้องค์ประกอบของ UI แบบอ่านอย่างเดียวได้อย่างไร
ฉันมีคำจำกัดความองค์ประกอบ UI ของฟิลด์ฟอร์มในโมดูล Magento 2 ของฉัน <field name="name"> <argument name="data" xsi:type="array"> <item name="config" xsi:type="array"> <item name="dataType" xsi:type="string">text</item> <item name="label" xsi:type="string" translate="true">Some Label</item> <item name="formElement" xsi:type="string">input</item> <item name="source" xsi:type="string">something_here</item> <item name="sortOrder" xsi:type="number">10</item> <item name="dataScope" xsi:type="string">name</item> <item name="notice" xsi:type="string" translate="true">Enter something here</item> <item name="validation" xsi:type="array"> <item name="required-entry" xsi:type="boolean">true</item> </item> </item> </argument> </field> …

3
ข้อผิดพลาดในการเข้าสู่ระบบของผู้ดูแลระบบ - Magento 2.1
ฉันได้ติดตั้ง Magento 2.1 พร้อม PHP 7.0.11 บนเว็บเซิร์ฟเวอร์ nginx / PHP-FPM เมื่อฉันไปที่ URL ผู้ดูแลระบบ Magento และเข้าสู่ระบบด้วยข้อมูลประจำตัวของฉันฉันได้รับข้อผิดพลาด - " คำเตือน: is_dir (): ข้อ จำกัด open_basedir มีผลบังคับใช้ไฟล์ (/ etc / pki / tls / certs) ไม่อยู่ในเส้นทางที่อนุญาต " สิ่งนี้ดูเหมือนจะเป็นปัญหากับ Magento 2.1 เนื่องจากฉันยังไม่ได้พบสิ่งนี้ในการติดตั้ง Magento 2.0 ด้วยการตั้งค่าเซิร์ฟเวอร์เดียวกัน เพื่อแก้ไขปัญหาฉันเพิ่ม"/etc/pki/tls/certs"การตั้งค่า open_basedir ของฉัน คำถามของฉันคือ: ข้อผิดพลาด open_basedir นี้เป็นปัญหาอย่างแท้จริงหรือมีสาเหตุมาจากสิ่งอื่นหรือไม่ การเพิ่ม"/etc/pki/tls/certs"การตั้งค่า open_basedir …

1
วิธีรับรหัสเว็บไซต์ปัจจุบันในแผงการดูแลระบบ
ฉันทำงานกับส่วนขยายที่กำหนดเองที่เกี่ยวข้องกับหลายเว็บไซต์ ฉันประสบกับปัญหากำหนดรหัสสคริปต์ดำเนินการในแผงการดูแลระบบโดยรับรหัสเว็บไซต์ ฉันคาดหวังผลลัพธ์website_idเช่น 0 (ID เริ่มต้นในstore_websiteตาราง) แต่เมื่อฉันใช้ฟังก์ชั่นด้านล่างมันจะคืนค่า 1 เสมอ /** @var \Magento\Store\Model\StoreManagerInterface */ $this->_storeManager->getStore()->getWebsiteId(); //return 1, expect 0 $this->_storeManager->getWebsite()->getId(); //return 1 คำถามของฉัน : มีวิธีใดบ้างที่จะรับกระแสwebsite_idในแผงผู้ดูแลระบบหรือกำหนดฟังก์ชั่นการทำงานในadminhtmlพื้นที่ หมายเหตุ: ฟังก์ชั่นนี้ต้องทำงานกับส่วนหน้าและส่วนหลัง ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชม

1
Magento 2.1.1 - ปรับปรุงความปลอดภัยด้วยนโยบายความปลอดภัยของเนื้อหา
ฉันมีร้านค้าที่ใช้งานได้ดีกับ Magento รุ่นล่าสุด (ปัจจุบัน 2.1.1) และฉันพยายามปรับปรุงความปลอดภัยผ่านนโยบายความปลอดภัยเนื้อหาใน Apache 2.4.7 (Ubuntu 14.04) ฉันลบแท็ก "<script>" ทั้งหมดออกจากหน้าเนื้อหาและสร้าง files.js ที่แยกจากกัน ในเรื่องความปลอดภัยของ Apache ฉันได้ตั้งค่าไว้: ส่วนหัวตั้งนโยบายความปลอดภัยเนื้อหา "default-src 'self'" อย่างไรก็ตามมันไม่ทำงาน ดูเหมือนว่าวีโอไอพีเองจะเพิ่มแท็ก "<script>" บางส่วน ตัวอย่างจากบรรทัดซอร์สแรกสุด: <! doctype html> <html lang = "pt-BR"> <head> <script> var ต้องการ = { "baseUrl": " http://example.com/pub/static/frontend/Magento/luma/pt_BR " }; </ script> ดังนั้นฉันจึงดูเหมือนว่าเพื่อให้มีการกำหนดค่า CSP ฉันต้องเปิดใช้งาน "ไม่ปลอดภัยแบบอินไลน์" …

1
Magento 2: วิธีเพิ่มข้อความตัวยึดตำแหน่งลงในช่องถนนในการชำระเงินได้อย่างไร
ในส่วนหลังฉันได้กำหนดที่อยู่ให้มี 3 บรรทัด ฉันต้องการวางตัวแทนที่แตกต่างกันในแต่ละฟิลด์: ถนน อาคาร / อพาร์ทเม้นท์ พื้นที่ วิธีนี้ผู้ใช้สามารถป้อนข้อมูลในรูปแบบที่มีโครงสร้างมากขึ้น คำถามที่คล้ายกันสามารถพบได้ที่นี่: Magento 2 - วิธีส่งผลกระทบต่อที่อยู่ในรูปแบบเช็คเอาต์โดยมีอาร์กิวเมนต์ xml / ui ของโครงร่าง อย่างไรก็ตามคำตอบไม่ได้มีวิธีการแก้ปัญหาที่จะรวมตัวยึดในฟิลด์ที่อยู่ สิ่งที่ฉันต้องการที่จะบรรลุคือการตั้งค่าตัวยึดที่แตกต่างกันสำหรับแต่ละเขตข้อมูลที่อยู่บนถนน รหัสของฉัน: แอป / รหัส / Jsp / ตัวยึด / etc / module.xml: <?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="Jsp_Placeholder" setup_version="2.0.0" /> </config> app / code / Jsp / Placeholder …

1
วิธีการเก็บข้อมูลหน้า Magento 2 CMS หน้า getList () ไม่ส่งคืนวัตถุที่คาดหวัง
ฉันต้องการลบหน้า CMS ทั้งหมด นี่คือรหัส: เนมสเปซเร็ว ๆ นี้ \ Core \ Setup; ใช้ Magento \ Cms \ Api \ PageRepositoryInterface ใช้ Magento \ Framework \ Api \ SearchCriteriaInterface ระดับซม { / ** * @var SearchCriteriaInterface * / เกณฑ์ $ ส่วนตัว / ** * @var PageRepositoryInterface * / $ cmsPageRepository ส่วนตัว / …
10 magento2 

3
ไม่ได้ตั้งรหัสพื้นที่
ฉันพยายามที่จะหลีกเลี่ยงรหัสพื้นที่นี้ไม่ได้ตั้งข้อผิดพลาดและมีการอ้างอิงคนอื่น ๆ ที่นี่ แต่มีปัญหาในการติดตามมัน ฉันพยายามอัพเกรด 2.0.7 เป็น 2.1.0 และเมื่อฉันไปถึงจุดที่ฉันเรียกใช้: การตั้งค่า php bin / magento: อัพเกรด -vvv ฉันได้รับสิ่งนี้เป็นข้อผิดพลาด [Magento \ Framework \ Exception \ SessionException] ไม่ได้ตั้งรหัสพื้นที่: ต้องตั้งรหัสพื้นที่ก่อนเริ่มเซสชัน ข้อยกเว้น: () ที่ /opt/bitnami/apps/magento/htdocs/vendor/magento/framework/Session/SessionManS.php:176 Magento \ Framework \ Session \ SessionManager-> start () ที่ / opt / bitnami / แอป / magento / htdocs …

1
โมดูลถูกลบ แต่ตารางที่เหลืออยู่ในฐานข้อมูลใน Magento2
ฉันสร้างหนึ่งโมดูล / ส่วนขยายโดยใช้สคริปต์การติดตั้งใน magento2 หลังจากนั้นฉันก็ลบมัน แต่ตารางในฐานข้อมูลยังคงอยู่เหมือนเดิม ทุกคนสามารถบอกวิธีถอนการติดตั้งโมดูล / ส่วนขยายได้อย่างสมบูรณ์และลบตารางของส่วนขยาย / โมดูลออกจากฐานข้อมูลได้หรือไม่

1
การเปลี่ยนแปลงการกำหนดค่าคิวข้อความใน Magento 2 EE 2.1
ฉันได้ดูการทำงานของคิวข้อความ EE แต่ดูเหมือนว่าจะไม่สมบูรณ์ ก่อนหน้า 2.1 มีการใช้งานที่สมเหตุสมผลซึ่งอนุญาตให้คุณสร้าง a etc/queue.xmlเพื่อกำหนดผู้เผยแพร่หัวข้อผู้บริโภคและคิวตามที่อธิบายไว้ในเอกสารประกอบอย่างเป็นทางการ: http://devdocs.magento.com/guides/v2.0/config-guide /mq/config-mq.html มีข้อ จำกัด เช่นไม่สามารถสร้างการผูกเว้นแต่ว่าตรงกับหัวข้อที่กำหนดในการกำหนดค่าซึ่งจำกัดความยืดหยุ่นตามที่คุณต้องกำหนดความเป็นไปได้ของหัวข้อที่เป็นไปได้ทั้งหมด การไม่มีสคริปต์การติดตั้งที่เกิดซ้ำยังทำให้คุณต้องแฮ็คเพื่อให้สคริปต์ตัวติดตั้งทำงานอีกครั้ง ในฐานะที่เป็น 2.1 ผู้เผยแพร่หัวข้อผู้บริโภคและองค์ประกอบการผูกในetc/queue.xmlได้รับการคัดค้านและการกำหนดค่าจะถูกแยกระหว่างetc/queue.xmlและetc/communication.xmlตามที่สามารถเห็นได้ที่นี่: https://github.com/magento/magento/magento2-samples/blob/master/sample- โมดูลตัวอย่างข้อความคิว / etc / ผู้เผยแพร่ / หัวข้อ / consumer / bind ที่เลิกใช้แล้วนั้นยังสามารถใช้แยกกันได้ แต่ไม่สามารถใช้ร่วมกับ schema โบรกเกอร์ / คิวที่ปรับปรุงใหม่ได้ อย่างไรก็ตามไม่มีสิ่งนี้ปรากฏในเอกสารอย่างเป็นทางการและไม่ชัดเจนในทันทีว่าทำไมการกำหนดค่าจึงถูกแยกออกและจำเป็นต้องทำซ้ำในบางกรณี ที่สำคัญดูเหมือนว่าจะไม่มีสิ่งอำนวยความสะดวกในการกำหนดการเชื่อมโยงในขณะนี้ด้วยชื่อหัวข้อที่ใช้เป็นรหัสเส้นทางแทน สิ่งนี้จะทำให้ไม่สามารถใช้อักขระพิเศษสำหรับการผูกคิวได้ ดังนั้นจึงดูเหมือนว่าได้รับการปรับโครงสร้างใหม่ แต่การทำงานที่สูญเสีย เมื่อทราบบวกโมดูลตอนนี้ใช้สคริปต์ติดตั้งที่เกิดขึ้นเพื่อให้มีการเปลี่ยนแปลงการตั้งค่าคิวมีการติดตั้งเมื่อคุณเรียกใช้magento/module-amqp magento setup:upgradeการเปลี่ยนแปลงนี้ยังไม่ถูกนำไปใช้กับmagento/module-mysql-mqโมดูล ดังนั้นฉันอยากรู้ว่า: a) ฉันผิดทั้งหมดและมีวิธีสร้างการผูกและยืดหยุ่นกว่าที่คิดหรือไม่ b) ทำไมการกำหนดค่าจึงถูกแบ่ง? ตามบันทึกข้างเป็นฉันได้รับการทดสอบด้วยนี้ฉันได้รับการใช้หนึ่งในตัวอย่างที่โทโพโลยีจากบทเรียน RabbitMQ …

1
วิธีการเปลี่ยนชุดรูปแบบใน Magento 2.1rc3
ฉันลองทั้งสองMagento v2.1rc3และMagento2พัฒนารุ่นจากที่เก็บ git ปัญหาคือเมื่อฉันพยายามเปลี่ยนMagento 2ธีมฉันทำตามขั้นตอนด้านล่าง: Open BO -> Stores -> Configurations -> General -> Design และฉันไม่เห็นส่วน " ออกแบบธีม " พร้อมเลือกธีมdropdownอีกต่อไป system.xml(Magento\Backend module)ผมพยายามที่จะมองลึกในเรื่องนี้และพบโหนดที่มีการกำหนดค่านี้ถูกลบออกจาก ฉันพบกระทำกับการลบโหนดนี้ในประวัติศาสตร์ของพื้นที่เก็บข้อมูล git Magento2 และมีข้อความ " ลบรหัสเก่า " ดังนั้นฉันหวังว่านี่configurationจะถูกย้ายไปที่อื่นใน Back Office of Magento แต่ฉันไม่พบมันในsystem.xmlไฟล์ใด ๆ บางทีบางคนอาจรู้ว่าทำไมมันถึงเกิดขึ้นและฉันจะเปลี่ยนธีมของ Magento 2 ได้อย่างไร?

5
วิธีเปิดใช้งาน AJAX สำหรับปุ่ม 'ใส่ในรถเข็น' ของวิดเจ็ตผลิตภัณฑ์ใน Magento 2
ใน Magento 2 Add to Cartปุ่มปกติมีตรรกะตาม AJAX ที่ดีมากในการเพิ่มผลิตภัณฑ์ลงในรถเข็น อย่างไรก็ตามเมื่อเราใช้Catalog Products Listวิดเจ็ตเช่นในหน้า CMS ปุ่มในรายการผลิตภัณฑ์นี้ทำงานร่วมกับHTTP POSTที่โหลดหน้าปัจจุบันใหม่ ประสบการณ์ของผู้ใช้จะได้รับความทุกข์ทรมานจากสิ่งนี้และมันจะเป็นที่ต้องการหากปุ่มนั้นจะมีตรรกะ AJAX ที่เหมือนกันเช่นในรายการผลิตภัณฑ์หมวดหมู่เริ่มต้นหรือบนหน้าผลิตภัณฑ์ เราจะขยายCatalog Products Listวิดเจ็ตเพื่อที่จะใช้ปุ่มที่ดีกว่าได้ Add to Cartอย่างไร? หรืออาจจะมีวิธีแก้ปัญหาอื่น?

2
Magento2.1 หมวดหมู่แอตทริบิวต์ที่กำหนดเองแบบเลื่อนลง
ขั้นตอนในการทำซ้ำ 1. สคริปต์โมดูล UpgradeData.php ประกอบด้วย: $categorySetup->addAttribute(Category::ENTITY, 'roflcopter', [ 'type' => 'int', 'label' => 'CMS Block', 'input' => 'select', 'source' => 'Magento\Catalog\Model\Category\Attribute\Source\Page', 'required' => false, 'sort_order' => 20, 'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_STORE, 'group' => 'Display Settings', ]); 2. ดู / adminhtml / ui_component / category_form.xml <?xml version="1.0" encoding="UTF-8"?> <form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Ui:etc/ui_configuration.xsd"> <fieldset …

2
รับ SKU ผลิตภัณฑ์ใน mini-cart
ฉันต้องการที่จะแสดงผลิตภัณฑ์SKUในรถเข็นขนาดเล็กของเว็บไซต์ Magento 2 แต่ฉันไม่แน่ใจว่าจะใช้KnockoutJSเพื่อดึงข้อมูลผลิตภัณฑ์เพิ่มเติมได้อย่างไร เทมเพลตที่ถูกเรียกใช้อยู่ที่นี่: ผู้ขาย / วีโอไอพี / โมดูลเช็คเอาต์ / view / ส่วนหน้า / เว็บ / แม่แบบ / minicart รายการ / / default.html และมีรหัสเช่น: <strong class="product-item-name"> <!-- ko if: product_has_url --> <a data-bind="attr: {href: product_url}, text: product_name"></a> <!-- /ko --> <!-- ko ifnot: product_has_url --> <!-- ko text: product_name …

3
Magento 1: การปรับปรุงประสิทธิภาพเพื่อลบเอนทิตี
ฉันกำลังพยายามปรับปรุงสองโมดูลเกี่ยวกับประสิทธิภาพ บางท่านอาจรู้จักการใช้walk()วิธีการในการรวบรวมซึ่งมีประโยชน์มากในการหลีกเลี่ยงการวนซ้ำผ่านผลิตภัณฑ์โดยตรง ยิ่งไปกว่านั้นและขอบคุณ @Vinai เราสามารถใช้delete()วิธีการรวบรวมได้เช่นกัน แต่ฉันสังเกตเห็นว่าไฟล์ดั้งเดิมของ Magento 1 ไม่ได้ใช้วิธีการใด ๆ ในการลบ หนึ่งในรหัสที่เลวร้ายที่สุดที่ผมเคยเห็นเป็นmassDelete()วิธีการจากการapp/code/core/Mage/Adminhtml/controllers/Catalog/ProductController.phpที่ผลิตภัณฑ์จะถูกโหลดในวงก่อนที่จะลบ foreach ($productIds as $productId) { $product = Mage::getSingleton('catalog/product')->load($productId); Mage::dispatchEvent('catalog_controller_product_delete', array('product' => $product)); $product->delete(); } ดังนั้นฉันจึงทำการทดสอบประสิทธิภาพเพิ่มการเรียกการบันทึกเพื่อตรวจสอบเวลาที่ใช้และการใช้หน่วยความจำสำหรับการลบผลิตภัณฑ์ 100 รายการ ทดสอบ 1: walkวิธีการ ฉันแทนที่รหัสเดิมที่วางไว้ด้านบนด้วยรหัสนี้: $collection = Mage::getResourceModel('catalog/product_collection') ->addAttributeToSelect('entity_id') ->addIdFilter($productIds) ->walk('delete'); และผลลัพธ์ของฉันมีดังต่อไปนี้บนเซิร์ฟเวอร์ dev ของฉันเส็งเคร็ง (โดยเฉลี่ยจากการทดสอบ 10 ครั้ง): รหัสเดิม: 19.97 วินาทีใช้ 15.84MB รหัสที่กำหนดเอง: …

2
Magento 2: วิธีการระบุ“ Semantic Versioning” Dependencies ในโมดูลของผู้แต่งของฉัน
การพัฒนาและการปรับใช้ของ Magento 2 รวมถึงกระบวนการอย่างเป็นทางการสำหรับการกำหนดเวอร์ชันซึ่งโมดูลหลักของระบบวีโอไอพีรุ่นหลักและรุ่นรองจะถูกชนตามการเปลี่ยนแปลงในคุณสมบัติที่เข้ากันได้แบบย้อนหลัง ในฐานะนักพัฒนาโมดูล Magento ฉันจะสร้างรายการข้อกำหนดในไฟล์ composer.json ของฉันเองได้อย่างไร ฉันต้องดูโมดูลของฉันด้วยตนเองทุกครั้งที่ฉันใช้โค้ดหลักของวีโอไอพีและเพิ่มrequire:...บรรทัดใน composer.json หรือไม่ หรือมีเครื่องมืออัตโนมัติที่สามารถทำได้สำหรับฉัน ฉันจะระบุรุ่นที่จะรวมในของฉันได้composer.jsonอย่างไร ควรเป็นรุ่นโมดูลเฉพาะที่ฉันพัฒนาขึ้นมาหรือไม่? หรือควรมีไวด์การ์ดที่เกี่ยวข้องกับฉันไหม หรือฉันจำเป็นต้องตัดสินใจตามการแลกเปลี่ยน? ถ้าเป็นเช่นนั้นอะไรคือข้อตกลงที่เกี่ยวข้องกับรูปแบบของแต่ละรุ่นที่ระบุ? มีคำอธิบายระดับสูงจำนวนมากของคุณลักษณะนี้ที่ลอยอยู่รอบ ๆ - แต่ก็ไม่ชัดเจนว่าขั้นตอนการปฏิบัติที่นักพัฒนาควรจะทำคืออะไรและ / หรือผลที่แท้จริงของขั้นตอนเหล่านั้นคืออะไร

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