Magento

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

1
ใช้ ORM ของวีโอไอพีเพื่อแทรกฟิลด์ ID ที่ระบุ
มีวิธีใช้ ORM ( Mage_Core_Model_AbstractและMage_Core_Model_Resource_Abstract) แบบง่ายของ Magento เพื่อแทรกแถวแบบจำลองด้วยคีย์หลักที่เฉพาะเจาะจงหรือไม่ ตัวอย่างเช่นถ้าฉันวิ่งระบบต่อไปนี้กับระบบ Magento ที่ว่างเปล่า Mage::getModel('core/website')->setData(array ( 'website_id' => 2, 'code' => 'foo', 'name' => 'Main Website', 'sort_order' => 0, 'default_group_id' => 1, 'is_default' => 1, )); ฉันคาดว่าจะมีรายการใหม่ในcore_websiteตาราง อย่างไรก็ตามวีโอไอพีไม่ได้ทำอะไรที่นี่อย่างเงียบ ๆ ขุดลงไปในทรัพยากรดูเหมือนว่าฉันตกหลุมนี้ในชั้นเรียนทรัพยากรฐานข้อมูล #File: app/code/core/Mage/Core/Model/Resource/Db/Abstract.php if (!is_null($object->getId()) && (!$this->_useIsObjectNew || !$object->isObjectNew())) { //update stuff here } else …
14 model 

3
กำลังโหลดมุมมองผลิตภัณฑ์ในรายการหมวดหมู่ด้วย AJAX
อิ่มพยายามโหลดบล็อกมุมมองสินค้าในหน้าหมวดหมู่รายการด้วย AJAX ใช้ajaxify ทุกอย่างทำงานได้ดีปัญหาเดียวคือกล่องตัวเลือก (childhtml "container1") ไม่ได้โหลดอย่างถูกต้อง มันไม่แสดงตัวเลือก ใครบ้างมีประสบการณ์กับสิ่งนี้หรืออาจลองแบบนี้บ้าง ฉันตั้งค่าผลิตภัณฑ์ที่ใช้งานในตัวควบคุมโดยใช้ $productId = (int) $this->getRequest()->getParam('product_id'); Mage::helper('catalog/product')->initProduct($productId, $this); ก่อนเรนเดอร์โครงร่าง ฉันคิดว่ามันมีบางอย่างเกี่ยวกับข้อเท็จจริงที่ว่ามีการเพิ่มตัวเลือกในมุมมองในส่วนอื่น ๆ ของ catalog.xml [...] <PRODUCT_TYPE_configurable translate="label" module="catalog"> <label>Catalog Product View (Configurable)</label> <reference name="product.info"> <block type="catalog/product_view_type_configurable" name="product.info.configurable" as="product_type_data" template="catalog/product/view/type/default.phtml"> <block type="core/text_list" name="product.info.configurable.extra" as="product_type_data_extra" translate="label"> <label>Product Extra Info</label> </block> </block> </reference> <reference name="product.info.options.wrapper"> <block …
14 ce-1.7.0.2  ajax 

2
การเพิ่มเลย์เอาต์ที่กำหนดเองสำหรับการใช้ CMS และหมวดหมู่ด้วยปัญหาโมดูลที่กำหนดเอง
ฉันมีหมวดหมู่ในร้านค้าของฉันที่ต้องใช้เลย์เอาต์ที่แตกต่างกันโดยสิ้นเชิงกับเลย์เอาต์ Magento มาตรฐาน ดังนั้นฉันจึงสร้างสำเนา 1column.phtml ใหม่และเปลี่ยนชื่อใหม่และทำการทดสอบเพียงเล็กน้อย ตอนนี้ปัญหาคือว่าเค้าโครงที่กำหนดเองไม่ปรากฏขึ้น ฉันสร้างโมดูล (ซึ่งทำงานตามที่เห็นใน Admin> Config> ภาพรวมขั้นสูง) ไฟล์และเนื้อหาของฉันมีดังนี้: app / etc / โมดูล / Test_Page.xml <?xml version="1.0"?> <config> <modules> <Test_Page> <active>true</active> <codePool>community</codePool> <version>0.1.0</version> <depends> <Mage_Page /> </depends> </Test_Page> </modules> </config> app / รหัส / ท้องถิ่น / ทดสอบ / หน้า / etc / config.xml <?xml version="1.0"?> …

4
เป็นการดีที่จะยกตัวอย่างคลาส getModel บนเทมเพลต phtml หรือไม่?
นี่เป็นคำถามเกี่ยวกับวิธีปฏิบัติในการเขียนโปรแกรมที่ดีใน Magento ฉันต้องการแสดง (ในรายการหมวดหมู่ผลิตภัณฑ์) ผลิตภัณฑ์ที่มีผลิตภัณฑ์ที่เกี่ยวข้องในรูปขนาดย่อ ดังนั้นฉันจึงแก้ไขmypackage/mytheme/template/catalog/product/list.phtmlบางอย่างเช่นนี้ <?php $related=$_product->getRelatedProductIds(); if(count($related)>0){ echo '<div class="a'.$ap.'"></div>'; echo '<div class="li_p"><ul>'; foreach($related as $rela){ $rela_nom=Mage::getModel('catalog/product')->load($rela); echo '<li><a href="'.$rela_nom->getProductUrl().'"> <img src="'.$this->helper('catalog/image')->init($rela_nom, 'small_image')->resize(20).'" width="20" height="20"> </a><li>'; } echo '</ul></div>'; } ?> และมันใช้งานได้ดีมาก แต่คำถามของฉันคือ: สิ่งนี้ถูกต้องหรือไม่ที่จะยกตัวอย่างคลาสโมเดลในไฟล์ phtml? ถ้าไม่ใช่จะเป็นวิธีที่ดีที่สุดในการบรรลุฟังก์ชั่นนี้? ฉันหมายถึงไฟล์ไหนดีกว่าที่จะแก้ไขหรือคลาสไหนดีกว่าที่จะเพิ่มที่ไหน ผู้ช่วยหรือไม่? คุณช่วยยกตัวอย่างเล็ก ๆ น้อย ๆ หรือให้ฉันดูไฟล์ที่ดีกว่าในการแก้ไข

5
กรองการรวบรวมผลิตภัณฑ์ตามคุณลักษณะที่ไม่ใช่แบบแบน
ฉันกำลังทำสิ่งต่อไปนี้: $productCollection = Mage::getModel('catalog/product') ->getCollection(); $productCollection ->addAttributeToFilter('my_attribute', 1); my_attribute ไม่ได้อยู่ในตารางแบน แต่เปิดใช้งานตารางแบน ฉันได้รับการเก็บเต็ม เหตุผลน่าจะเป็น\Mage_Catalog_Model_Resource_Product_Collection::addAttributeToSelect: $columns = $this->getEntity()->getAttributeForSelect($attributeCode); ไม่มี$this->getEntity()เป็นอินสแตนซ์Mage_Catalog_Model_Resource_Product_Flatที่ดึงฟิลด์แบน - และหากไม่พบจะส่งคืนค่าว่าง วิธีที่สะอาดในการเพิ่มแอตทริบิวต์ที่ไม่ใช่แบบแบนไปยังตัวกรองการเก็บคืออะไร? ในกรณีของฉันมันไม่มีเหตุผลที่จะเพิ่มคุณลักษณะไปยังตารางแบน

2
การปรับเปลี่ยนที่จำเป็นสำหรับการใช้น้ำยาเคลือบเงาบน Magento CE
ฉันกำลังดิ้นรนเพื่อหาตัวอย่างการทำงานที่ดีในสิ่งที่จำเป็นต้องมีการแก้ไขเพื่อให้วานิชแคชเว็บไซต์วีโอไอพี โดยหลักการแล้วฉันต้องการรายการงานเช่นสิ่งที่ต้องปิดการใช้งาน / เปิดใช้งานและตำแหน่งที่จะมองหา นอกจากนี้ยังเป็นการดีที่จะมี Varnish config ที่การเปลี่ยนแปลงเหล่านั้นได้รับการออกแบบให้ทำงานร่วมกับ คู่มือการใช้งานวีโอไอพีพูดถึง Varnish เป็นอย่างมากดังนั้นฉันจึงรู้ว่ามันเคยทำมาก่อน แต่มันไม่ได้อธิบายวิธีการใช้งานจริง

1
การปรับแต่งคำสั่งซื้อทั้งหมดและข่าวสารเพิ่มเติม
เมื่อต้องการให้มีลักษณะรวมของต่อไปนี้เมื่อcheckout/cart: ส่วนลด ไม่ทั้งหมด ค่าจัดส่งหรือข้อมูลข้อความ: "ไม่รวมค่าจัดส่ง" ข้อความเพิ่มเติม: "จัดส่งฟรีจาก 30EUR" (แสดงเสมอ) ผลรวมทั้งสิ้น รวม ภาษี ปัญหาที่เกิดขึ้น แม้ว่าเราจะตั้งค่า " ลำดับการจัดเรียงยอดชำระเงิน " ในแบ็กเอนด์อย่างถูกต้อง แต่ยอดรวมทั้งหมดจะปรากฏขึ้นที่ท้ายเสมอ จะวางบล็อคข้อมูลเพิ่มเติมระหว่างผลรวมได้อย่างไร วิธีการแสดงข้อความข้อมูลหากรวมเป็นไม่ได้อยู่ (ค่าจัดส่ง)
14 cart  template  totals 

2
การเปลี่ยนเค้าโครงของการนำทางแบบเลเยอร์
ฉันมีการนำทางแบบเลเยอร์และลูกค้าต้องการมี<select/>เขตข้อมูลแทนรายการลิงก์ที่มีความยาว ฉันคิดถึงการเปลี่ยนแม่แบบด้วยผู้สังเกตการณ์หากชื่อ / รหัสของตัวกรองตรงกัน มีข้อคิดเห็นหรือคำแนะนำที่ดีกว่านี้ไหม ทางเลือกในการเปลี่ยนเทมเพลตอาจจะเขียนทับ / เขียนบล็อกใหม่หรือเปลี่ยนคลาสบล็อกสำหรับตัวกรองทั้งสองเท่านั้น เหตุการณ์ใดที่จะใช้สำหรับการเปลี่ยนแม่แบบ ฉันมีปัญหาเดียวกันกับที่นี่/programming/14524791/magento-enable-or-disable-a-module-in-code/14529629เพราะฉันมีผู้สังเกตการณ์ที่เปลี่ยนสิ่งโครงร่าง นี่เป็นเพียงธีมที่เกี่ยวข้อง ดังนั้นการตรวจสอบธีมก่อนใช้งานการอัปเดตอาจเป็นความคิดที่ดีใช่ไหม


2
แบบฟอร์มการชำระเงิน - วิธีการห่อองค์ประกอบหลายรายการในชั้นเรียน - วีโอไอพี 2
คุณจะห่อองค์ประกอบของฟอร์มการชำระเงินสองส่วนไว้ใน div ได้อย่างไร ตัวอย่างเช่นสมมติว่าฉันต้องการห่อเขตข้อมูลประเทศและไปรษณีย์ / รหัสไปรษณีย์ใน div ด้วยคลาสของexample-classฉันจะทำสิ่งนี้ได้อย่างไร สิ่งที่ฉันได้ลอง ฉันพยายามที่จะบรรลุสิ่งนี้โดยการเพิ่มพวกเขาเป็นลูก ๆ ของ<item name="shippingAddress" xsi:type="array">แต่นั่นก็ทำให้เกิดข้อผิดพลาดในส่วนหน้า แม้ว่าฉันจะได้รับการป้อนข้อความเปล่าโดยไม่มีป้ายกำกับภายใน.example-classมีข้อผิดพลาดในส่วนหน้า ข้อผิดพลาด: Cannot read property 'indexedOptions' of undefined นี่คือความพยายามอย่างรวดเร็วของฉัน: Magento_Checkout / เว็บ / แม่แบบ / การจัดส่งสินค้าที่อยู่ / form.html <div id="shipping-new-address-form" class="fieldset address"> <div class="testing"> <!-- ko foreach: getRegion('example-class') --> <!-- ko template: getTemplate() --><!-- /ko --> …

1
Magento 2: ฉันจะโหลดกริด admin ด้วยค่าตัวกรองที่กำหนดไว้ล่วงหน้าได้อย่างไร
ฉันต้องการสร้างลิงค์ไปยังกริดที่กำหนดเองในผู้ดูแลระบบของฉันด้วยตัวกรองที่กำหนดไว้ล่วงหน้า กริดนั้นสร้างขึ้นด้วย UI Listing Component (XML) และมีคอลัมน์ที่เรียกform_idว่าติดตั้งดังนี้: <column name="form_id"> <argument name="data" xsi:type="array"> <item name="config" xsi:type="array"> <item name="filter" xsi:type="string">textRange</item> <item name="label" xsi:type="string" translate="true">Form id</item> </item> </argument> </column> ตารางทำงานได้ดี ฉันสามารถใช้ตัวกรองและทุกอย่างทำงานได้ดี กริดได้รับการอัพเดทอย่างสวยงามด้วยคำขอ XHR อย่างไรก็ตาม ... ฉันต้องการที่จะมีค่าตัวกรองที่กำหนดไว้ล่วงหน้าในบางจุด ตัวอย่างเช่นฉันต้องการที่จะสามารถเปิดกริดเมื่อมันถูกกรองใน ID = 3 ดังนั้นฉันจึงลองโหลดหน้าเว็บที่มีพารามิเตอร์ URL เดียวกับคำขอ XHR รวมถึงเพียงเพิ่มพารามิเตอร์ที่จำเป็นเท่านั้น: ?namespace=form_response_listing&search=&filters[placeholder]=true&filters[form_id][from]=3&filters[form_id][to]=3&paging[pageSize]=20&paging[current]=1 เช่นเดียวกับ: ?filters[form_id][from]=3&filters[form_id][to]=3 ทั้งที่ไม่ประสบความสำเร็จ ดังนั้นฉันจะเติมตัวกรองล่วงหน้าโดยใช้ URL ได้อย่างไร แก้ไข: …
14 magento2  admin  grid  filter 

4
วิธีการแทนที่บล็อกใน v2.1
ฉันพยายามที่จะแทนที่บล็อก Topmenu ใน Magento 2.1 แต่ไม่สามารถหาคำแนะนำได้ ทุกสิ่งที่ฉันพบในที่นี้และที่อื่น ๆ ดูเหมือนว่าจะใช้เฉพาะกับเวอร์ชัน 2.0 ซึ่งดูเหมือนว่าจะใช้โครงสร้างโฟลเดอร์ที่แตกต่างกันหรือมีตัวอย่างโค้ดบางส่วนเท่านั้นซึ่งคาดว่าฉันจะรู้บริบทที่เหมาะสมของพวกเขาแล้ว app/design/frontend/Vendor/theme_nameโครงสร้างโฟลเดอร์ของฉันปัจจุบันสำหรับธีมที่กำหนดเองคือ ภายในนี้ฉันมีการลงทะเบียนธีมและไฟล์แต่งเพลงเช่นเดียวกับโฟลเดอร์สำหรับโมดูลต่างๆเช่นและMagento_ThemeMagento_Search จากสิ่งที่ฉันเข้าใจฉันต้องเริ่มต้นด้วยetc/di.xmlไฟล์เช่นด้านล่างแก้ไขจากที่นี่ : <?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd"> <preference for="Magento\Theme\Block\Html\Topmenu" type="[Namespace]\[Module]\Block\Html\Topmenu" /> </config> ฉันยังเข้าใจว่าขั้นตอนต่อไปคือการเพิ่มBlock/Html/Topmenu.phpไฟล์เช่นด้านล่าง (แก้ไขอีกครั้งจากแหล่งที่มาด้านบน): namespace [Namespace]\[Module]\Block\Html; class Topmenu extends \Magento\Theme\Block\Html\Topmenu { protected function _addSubMenu($child, $childLevel, $childrenWrapClass, $limit) { } } อย่างไรก็ตามมันไม่ชัดเจนสำหรับฉันสิ่งที่ฉันควรใช้สำหรับ[Namespace]และ[Module]หรือที่จะวางไฟล์เหล่านี้ ฉันได้ลองใช้ผู้ขายและชื่อชุดรูปแบบและการวางetcและBlockโฟลเดอร์ในapp/design/frontend/Vendor/theme_nameรวมถึงการapp/design/frontend/Vendor/theme_name/Magento_Themeแก้ไขการตั้งค่าเนมสเปซVendor\theme_name\Magento_Theme\Block\Htmlแต่ไม่มีผลใด ๆ หากใครสามารถช่วยอธิบายสิ่งที่ฉันต้องทำเพื่อแทนที่บล็อก Topmenu (และโดยการอนุมานบล็อกอื่น ๆ …

6
Magento 2: วิธีการแสดงฟิลด์ที่อยู่ในแบบฟอร์มลงทะเบียน?
ฉันต้องการแสดงฟิลด์ที่อยู่ (เพื่อบันทึกในที่อยู่สำหรับการเรียกเก็บเงินเริ่มต้น) ในแบบฟอร์มลงทะเบียนลูกค้า ฉันรู้ว่าต้องทำอย่างไรใน Magento 1. แต่ฉันหลงทางกับ Magento 2. เคยมีใครทำแบบนี้มาก่อน .. ? การอัปเดตไฟล์ xml ใด ๆ เช่นใน magento 1 <customer_account_create> <reference name="customer_form_register"> <action method="setData"><key>show_address_fields</key><value>1</value></action> </reference> </customer_account_create>

3
Magento2 - วิธีการแสดงเนื้อหาบล็อกในหน้าแรก
จะแสดงเนื้อหาบล็อกในหน้าแรกได้อย่างไร? หลังจากติดตั้ง magento2 โดยไม่มีข้อมูลตัวอย่างฉันเลือกชุดรูปแบบ 'Magento Luma' และเพิ่มบล็อก 'Home Page Block' และคัดลอกรหัสจากที่เก็บตัวอย่าง แต่ไม่มีอะไรปรากฏขึ้นในหน้าแรกฉันจะแสดงบล็อก cms ของฉันในหน้าแรกเช่นที่เก็บตัวอย่างได้อย่างไร บ้านของฉัน เก็บตัวอย่าง

4
การวางตำแหน่ง / สั่งซื้อไฟล์ CSS ใน Magento 2 เป็นวิธีที่เหมาะสมอย่างไร
ในMagento 2 DevDocมันบอกว่า หากต้องการรวมไฟล์ CSS ให้เพิ่มส่วน <css src = "<path> / <file>" media = "print | <option>" /> ในส่วน <head> ในไฟล์เลย์เอาต์ อย่างไรก็ตามมันไม่ได้บอกว่าเราจะมีอิทธิพลต่อลำดับของไฟล์ CSS ของเราได้อย่างไร และถ้าเราเพิ่มไฟล์ CSS ด้วยวิธีนี้ในธีมที่กำหนดเองซึ่งมีธีมหลักผลก็คือไฟล์จะถูกเพิ่มที่ส่วนบนของส่วน <head> พร้อมกับไฟล์ CSS อื่น ๆ จำนวนมากด้านล่างหมายความว่าลำดับความสำคัญของพวกเขาค่อนข้างมาก ต่ำและเราไม่สามารถแทนที่กฎได้อย่างง่ายดายจากธีมหลักหรือส่วนขยาย มีปัญหาคล้ายกันใน Magento 1 และมีวิธีแก้ไขเฉพาะหน้า บางคนทำความสะอาดมากกว่าคนอื่นน้อย วิธีที่ดีที่สุดในการสั่งซื้อไฟล์ CSS ของธีมที่กำหนดเองที่ด้านล่างของ <head> ใน Magento 2 คืออะไรถ้าเป็นไปได้ให้ปฏิบัติตามแนวทางการจัดวาง Magento 2 สำหรับธีมที่กำหนดเอง
14 magento2  layout  css  head 

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