Magento

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

4
Magento 2 WYSIWYG Directive image image โดยใช้ url ของผู้ดูแลระบบ
เหตุใด magento 2 จึงสร้างคำสั่งสำหรับรูปภาพสื่อโดยใช้ URL ของผู้ดูแลระบบ ตัวอย่างเช่นเมื่อฉันเพิ่มภาพในหน้าหมวดหมู่ WYSIWYG มันจะเพิ่ม <img src="{{media url="wysiwyg/image.jpg"}}" alt="" /> แต่วีโอไอพีจะแยกวิเคราะห์สำหรับส่วนหน้าและเป็นเช่นนี้ <img src="https://domain.co.uk/admin/cms/wysiwyg/directive/___directive/e3ttZWRpYSB1cmw9Ind5c2l3eWcvQ29udmV5b3JfYmVsdHNfZmFzdF9kZWxpdmVyeS5qcGcifX0,/key/b67d0a8069ef28a8443e0bad6d912512704213d60e1d9021b1ec2b9dd34bf390/" alt=""> เนื่องจากการเชื่อมโยงไปยังผู้ดูแลระบบวิธีเดียวที่จะโหลดบนเบราว์เซอร์คือหากคุณลงชื่อเข้าใช้ในการดูแลระบบ นอกจากนี้ยังก่อให้เกิดปัญหาด้านความปลอดภัยเนื่องจากมีการเปิดเผยเส้นทางของผู้ดูแลระบบที่ส่วนหน้า ฉันดูในผู้ขาย / magento / module-cms / Helper // Wysiwyg / images.php และดูเหมือนว่าฟังก์ชั่นgetImageHtmlDeclaration ()สร้างสิ่งนี้ public function getImageHtmlDeclaration($filename, $renderAsTag = false) { $fileurl = $this->getCurrentUrl() . $filename; $mediaUrl = $this->_storeManager->getStore()->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_MEDIA); $mediaPath = …

1
คุณสามารถปรับใช้ดาวน์ไทม์ดาวน์ให้เป็นศูนย์ด้วย magento2 ได้หรือไม่?
หากคุณมีโมดูลใหม่และคุณจำเป็นต้องเรียกใช้setup:upgradeแล้วฉันไม่เห็นวิธีที่คุณสามารถมีการหยุดทำงานเป็นศูนย์ มันจะลดลง 10-20 วินาทีเสมอเพราะคุณต้องอัปเกรดฐานข้อมูล หรือฉันกำลังพลาดอะไรอยู่? แม้ว่าคุณจะปรับใช้กับโฟลเดอร์อื่นและเมื่อไฟล์ทั้งหมดถูกสร้างขึ้นคุณจะเชื่อมโยงสภาพแวดล้อมจริงกับโฟลเดอร์นี้คุณยังคงต้องดูแลฐานข้อมูล

1
การกำหนดค่า RequireJs แบบมีเงื่อนไข (โหลด requirejs-config.js โดยทางโปรแกรมหรือไม่)
ฉันต้องการแทนที่คอมโพเนนต์ RequireJs ตามเงื่อนไขบางอย่างเท่านั้น (เช่นตามการกำหนดค่า) มีวิธีใดที่จะป้องกันไม่ให้โหลดโมดูลของฉันrequirejs-config.jsหรือวิธีอื่นเพื่อให้บรรลุโดยทางโปรแกรมหรือไม่

1
Magento2: วิธีที่ดีที่สุดในการโหลดลูกค้าด้วยรหัสลูกค้า
วิธีที่ดีที่สุดในการโหลดรหัสลูกค้าคืออะไร? ใช้ส่วนต่อประสานลูกค้าหรือโรงงานของลูกค้าหรือวิธีอื่น? ในวิธีแก้ปัญหาส่วนใหญ่ที่ฉันพบนั้นทำได้โดยใช้โดยตรงobjectManager(ซึ่งไม่ควรใช้)

1
วิธีจัดการ config.php ใน Magento 2
ก่อนอื่นอาจเป็นคำถามที่ตอบแล้ว แต่ฉันไม่พบอะไรเกี่ยวกับเรื่องนั้น มันไม่ใช่ปัญหา แต่เป็นคำถามเกี่ยวกับวิธีที่ดีที่สุดในการจัดการไฟล์config.phpใน Magento 2 ที่ จริงแล้วเราconfig.phpไม่ได้ทำเวอร์ชัน (ตามค่าเริ่มต้นใน.gitignoreไฟล์M2 ) ดังนั้นจึงไม่ได้อยู่ในที่เก็บของเรา ปัญหาคือเมื่อมีคนติดตั้งโครงการเขาไม่มีไฟล์นี้ แต่เขามีฐานข้อมูลอยู่แล้วเขาจึงไม่สามารถเรียกใช้bin/magento setup:install ...เพื่อสร้างไฟล์ได้ เราตระหนักดีว่าการbin/magento setup:upgradeเพิ่มโมดูลที่ไม่ได้ประกาศไว้นั้นจะเกิดขึ้นconfig.phpหากไฟล์นั้นมีอยู่และbin/magento module:enableสามารถเพิ่มโมดูลได้ แต่เราต้องการหลีกเลี่ยงการเปิดใช้งานทุกครั้งที่เราปรับใช้หรือติดตั้งโครงการ คำถามของฉัน (s): - เราจะต้องเอาconfig.phpจาก.gitignoreรุ่นมันได้หรือไม่ - เราจะต้องเพิ่มมันเป็นครั้งแรกในพื้นที่เก็บข้อมูลและปล่อยให้มันเป็นใน.gitignoreภายหลังหรือไม่? - วิธีที่ดีที่สุดในการจัดการไฟล์นี้คืออะไร?

5
ป๊อปอัป minicart เมื่อฉันเพิ่มผลิตภัณฑ์ลงในตะกร้า magento 2
ฉันใช้ magento 2.0.7 และสิ่งที่ฉันพยายามทำคือการป๊อปอัพรถเข็น (รถเข็น ajax minicart ด้านขวาบน) เมื่อฉันเพิ่มผลิตภัณฑ์ลงไป ฉันได้ลองเพิ่มคลาส "showcart" ลงในคลาสปุ่มสั่งซื้อของฉันแล้ว แต่ถ้าฉันทำเช่นนั้นปุ่มเพิ่งเปิดตะกร้าและไม่เพิ่มสินค้าอีกต่อไป ..
15 magento2  cart  popup 

3
Magento 2: การใช้สัญญาบริการมีประโยชน์อย่างไร?
ดังที่บางคนอาจจะรู้วิธีที่วีโอไอพี 2 แนะนำให้จัดการกับแบบจำลอง / การรวบรวมสำหรับการกระทำ CRUD คือการใช้สัญญาบริการ แต่ก็ยังเป็นไปตาม Magento SE Q&A ดูเหมือนว่าคนส่วนใหญ่มักจะใช้โมเดล / โมเดลทรัพยากร / คอลเลกชันโดยตรงแทน เป็นตัวอย่างในการโหลดใบเสนอราคาฉันสามารถทำได้โดยตรงผ่านทางโรงงานเช่นนี้: $this->quoteFactory->create()->load($quoteId); ในกรณีที่$this->quoteFactoryเป็นตัวอย่างของ\Magento\Quote\Model\QuoteFactory แต่ฉันสามารถทำได้ผ่านสัญญาบริการเช่นนี้: $this->quoteRepository->get($quoteId); ในกรณีที่$this->quoteRepositoryเป็นตัวอย่างของ\Magento\Quote\Api\CartRepositoryInterface ดังนั้นคำถามของฉันคือประโยชน์ของการใช้สัญญาบริการกับโรงงานมีอะไรบ้าง


2
สตริง“ # @ +” &“ # @ -” หมายถึงอะไรในความคิดเห็น?
ฉันเห็นสตริง "# @ +" & "# @ -" มากมายในความคิดเห็นของคลาส Magento 2 บางคลาส \Magento\Customer\Api\Data\AttributeMetadataInterface interface AttributeMetadataInterface extends \Magento\Framework\Api\MetadataObjectInterface { /**#@+ * Constants used as keys of data array */ const ATTRIBUTE_CODE = 'attribute_code'; ... const IS_SEARCHABLE_IN_GRID = 'is_searchable_in_grid'; /**#@-*/ ... } จุดประสงค์ของเครื่องหมายเหล่านี้คืออะไร?

3
Magento 2: รับเขียน url ผลิตภัณฑ์ใหม่
ฉันพยายามรับrewrite product urlจากload productโมดูลที่กำหนดเอง ฉันกำลังรับ URL ในhttp://localhost/m2/catalog/product/view/id/1401/category/23/รูปแบบ แต่ฉันต้องการ http://localhost/m2/juno-jacket.html นี่คือรหัส ในตัวสร้าง public function __construct( \Magento\Catalog\Helper\Product $catalogProductHelper, ) { $this->catalogProductHelper = $catalogProductHelper; } ฟังก์ชั่นที่กำหนดเอง public function abc(){ $product_id = '123'; return $this->catalogProductHelper->getProductUrl($product_id); } abc() method ส่งคืน URL เช่น http://localhost/m2/catalog/product/view/id/1401/category/23/

6
การติดตั้งในระบบ Magento 2 ไม่ได้สร้างไฟล์ในโฟลเดอร์ pub / static
ฉันเพิ่งติดตั้ง Magento 2 Community Edition พร้อมข้อมูลตัวอย่าง (ดาวน์โหลดจากเว็บไซต์ของพวกเขาและไม่ได้ติดตั้งกับผู้แต่ง) ภายในเครื่องผ่านทาง MAMP กระบวนการติดตั้งสำเร็จแล้ว แต่ไฟล์ทั้งหมดในโฟลเดอร์ pub / static หายไปยกเว้น. htaccess นั่นหมายถึง css, js และอื่น ๆ คืนค่า 404 ทั้งส่วนหน้าและส่วนหลัง ฉันใช้เวลาหลายชั่วโมงพยายามแก้ไขปัญหานี้โดยไม่มีโชค นี่คือสิ่งที่ฉันทำไปแล้ว: เปลี่ยนOptions Indexes FollowSymLinks AllowOverrideจาก 'ไม่มี' เป็น 'ทั้งหมด' ใน /MAMP/conf/apache/httpd.conf และเริ่ม MAMP ใหม่ ทำให้แน่ใจว่าLoadModule rewrite_module modules/mod_rewrite.soไม่มีการใส่เครื่องหมายใน httpd.conf ตั้งค่าโดเมนการพัฒนา (magento.dev) ใน MAMP ลองใช้งานphp bin/magento setup:static-content:deployใน root …

4
วิธีแสดงรายการผลิตภัณฑ์ที่ถูกปิดใช้งานทั้งหมดด้วย sql
ฉันต้องการแสดงรายการผลิตภัณฑ์ที่ถูกปิดใช้งานทั้งหมดโดยใช้แบบสอบถาม MySQL ฉันมีผลิตภัณฑ์มากเกินไปในฐานข้อมูลของฉันที่จะใช้สิ่งนี้ (สร้างคอลเลกชันโหลดและวนรอบ): http://www.srikanth.me/get-all-disabled-products-on-magento/
15 product  mysql  query 

2
Autologin บน frontend จาก backend
ดูสถานการณ์สมมติต่อไปนี้ ฉันมีโมดูลที่กำหนดเองที่อนุญาตให้ผู้ใช้ส่วนหน้าดำเนินการบางอย่างกับเอนทิตีที่กำหนดเองบางอย่าง (รายละเอียดไม่สำคัญจริงๆ) คำขอคือผู้ดูแลระบบควรสามารถเข้าสู่ระบบในส่วนหน้าด้วยบัญชีลูกค้า (โดยไม่ต้องมีรหัสผ่าน) และสามารถดำเนินการเหล่านั้นให้กับลูกค้าได้ เนื่องจากคุณไม่สามารถใช้เซสชั่นส่วนหน้าจากแบ็กเอนด์และฉันไม่ต้องการที่จะสร้างลิงค์อัตโนมัติสำหรับส่วนหน้าเนื่องจากอาจเป็นช่องโหว่ขนาดใหญ่นี่คือสิ่งที่ฉันทำมาจนถึงตอนนี้ เพิ่มแอตทริบิวต์ว่างสำหรับเอนทิตีลูกค้า (เรียกมันว่าlogin_key) เพิ่มปุ่มในแบ็กเอนด์บนหน้าแก้ไขลูกค้าว่าการเปลี่ยนเส้นทางไปยังผู้ดูแลระบบlogin_keyหน้าเว็บที่สตริงสุ่มถูกสร้างขึ้นและบันทึกไว้ในแอตทริบิวต์ ในการดำเนินการเดียวกันฉันเปลี่ยนเส้นทางผู้ดูแลระบบไปยัง URL ส่วนหน้าเช่นนี้autologin/index/index/customer_id/7/login_key/ajkshdkjah123123(ค่าที่สร้างขึ้นในขั้นตอนก่อนหน้า) ที่ส่วนหน้าของ url หากรหัสลูกค้าและlogin_keyตรงกับลูกค้าที่เฉพาะเจาะจงแล้วฉันจะตั้งวัตถุลูกค้าในเซสชั่น (เป็นเข้าสู่ระบบ) และลบlogin_keyดังนั้น URL จะไม่ทำงานในอนาคต ตะเข็บนี้ใช้งานได้ ฉันหมายถึงฉันเข้าสู่ระบบในฐานะลูกค้าที่เลือกและลิงค์ที่ใช้สำหรับออโตโลจินไม่ทำงานเป็นครั้งที่สอง ข้อเสียคือถ้าผู้ดูแลระบบ 2 คนคลิกที่ปุ่ม "autologin" ในเวลาเดียวกันคนหนึ่งจะล้มเหลวในการเข้าสู่ระบบ แต่นี่เป็นความเสี่ยงที่ยอมรับได้ ความกังวลหลักของฉันคือว่านี่อาจเป็นปัญหาความปลอดภัยขนาดใหญ่ (ไม่ใช่ว่า) บางคนเห็นสิ่งผิดปกติในแนวทางนี้หรือไม่? หรือแนะนำที่ดีกว่า ไม่สนใจข้อเท็จจริงที่ว่าบัญชีลูกค้าสามารถแยกได้จากเว็บไซต์ สิ่งนี้ไม่สำคัญและยังสามารถจัดการได้อย่างง่ายดาย

1
วิธีที่ดีที่สุดในการขยายโมดูลที่พบน้อยลงในเว็บ / css / source / module เช่น _minicart.less?
วิธีใดเป็นวิธีที่ดีที่สุดในการขยายเนื้อหาไฟล์ให้น้อยลง<module>/web/css/source/module/เช่นMagento_Checkout/web/css/source/module/_minicart.less? สมมติว่า A) OVERRIDE ธีมที่เกี่ยวข้องน้อยกว่าคุณจะต้องสร้าง (หรือคัดลอก) ธีมที่มีชื่อเดียวกันของธีมหลักและวางไว้ในธีมของคุณเช่นนี้theme-frontend-blank/web/css/source/_buttons.less-><your-theme>/web/css/source/_buttons.less เฉพาะโมดูลน้อยคุณต้องสร้าง (หรือคัดลอก) น้อยกว่าด้วยชื่อเดียวกันของธีมหลักและวางไว้ในชุดรูปแบบของคุณเช่นนี้theme-frontend-blank/Magento_Theme/web/css/source/_module.less-><your-theme>Magento_Theme/web/css/source/_module.less UI lib น้อยลงคุณต้องสร้าง (หรือคัดลอก) น้อยลงด้วยเนื้อหาชื่อเดียวกันในโฟลเดอร์ไลบรารีและวางในธีมของคุณเช่นนี้magento2-base/lib/web/css/source/lib/_buttons.less-><your-theme>Magento_Theme/web/css/source/lib/_buttons.less และ B) ขยาย ธีมที่เกี่ยวข้องน้อยลงคุณต้องสร้างไฟล์ _extend.less ในธีมของคุณเพิ่ม_extendในชื่อเช่นนี้<your-theme>/web/css/source/_navigation_extend.lessเพื่อขยายtheme-frontend-blank/web/css/source/_navigation.lessและลงทะเบียนไฟล์นั้นด้วยคำสั่ง@importใน _extend.less ของเนื้อหาธีมในเว็บ / css / source ->@import "_navigation_extend.less" เฉพาะโมดูลน้อยคุณต้องสร้างไฟล์ _extend.less ในพา ธ โมดูลธีมของคุณเช่นนี้<your-theme>Magento_CatalogSearch/web/css/source/_extend.lessซึ่งขยาย Magento_CatalogSearch original _module.less UI lib น้อยลงคุณต้องสร้างน้อยด้วยเนื้อหาชื่อเดียวกันในโฟลเดอร์ไลบรารีเพิ่ม_extendในชื่อเช่นนี้<your-theme>Magento_Theme/web/css/source/lib/_buttons_extend.lessเพื่อขยายmagento2-base/lib/web/css/source/lib/_buttons.lessและลงทะเบียนไฟล์ที่มีคำสั่ง@importใน _extend.less ของเนื้อหาธีมในเว็บ / css / แหล่งที่มา - >@import "lib/_buttons_extend.less" ทฤษฎีต้องแนะนำให้คุณสร้าง …

6
วิธีการพิมพ์แบบสอบถามคอลเลกชัน mysql ใน magento 2?
มีgetSelect()->__toString();อยู่ใน Magento 1 สำหรับแบบสอบถามการพิมพ์ของชุดสะสม เหมือนตัวอย่างด้านล่าง $products = Mage::getModel(‘catalog/product’) ->addAttributeToFilter(‘status’, array(‘eq’ => 1)); echo $products->getSelect()->__toString(); magento 2 มีวิธีใดบ้าง? ฉันพบสิ่งนี้->printLogQuery(true);แต่ไม่ได้ผลสำหรับฉัน อัปเดต: ด้านล่างเป็นรหัส ฉันกำลังพยายามหาสินค้าขายดี มันใช้งานได้ดี แต่ฉันต้องการพิมพ์แบบสอบถามเพื่อแก้ไขข้อบกพร่อง $this->_collection->getSelect() ->joinLeft( 'sales_order_item', 'e.entity_id = sales_order_item.product_id', array('qty_ordered'=>'SUM(sales_order_item.qty_ordered)')) ->group('e.entity_id') ->order('qty_ordered '.$this->getCurrentDirectionReverse());

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