กฏเป้าหมายเพิ่มขึ้น


9

ฉันมีปัญหาแปลก ๆ กับ Magento Target ที่ขายออกมา

สถานการณ์สมมติ: Magento EE 1.12 30+ store views ใน Magento เช่นเดียวกัน 30k + ผลิตภัณฑ์ ผลิตภัณฑ์ส่วนใหญ่มีการตั้งค่าเดียวกันในทุกมุมมองร้านค้า ฉันได้สร้างกฎสำหรับแสดง upsells ดังนี้ “ แสดงผลิตภัณฑ์จากหมวดหมู่เดียวกันด้วยราคา 100% หรือมากกว่านั้นซึ่งเป็นผลิตภัณฑ์ปัจจุบัน” การตั้งค่าสำหรับการแสดงยอดขาย: 'กฎตามเท่านั้น' (ปัญหาจะสร้างซ้ำสำหรับ 'กฎที่เลือกและเลือก') ฉันบันทึกกฏแล้ว ทำดัชนีใหม่ทุกอย่าง ทุกสิ่งที่ดูเหมือนจะตกลงตกลงปรากฏขึ้น (สำหรับผลิตภัณฑ์ที่ฉันทดสอบ) ตามที่กำหนดโดยกฎ แต่หลังจากผ่านไประยะเวลาหนึ่งสำหรับผลิตภัณฑ์เดียวกันในร้านหนึ่งมุมมองของ upsells จะปรากฏขึ้นและในมุมมองร้านอื่น ๆ ที่พวกเขาทำไม่ได้ ผลิตภัณฑ์มีการตั้งค่าเดียวกันในทุกมุมมองร้านค้า (และควรมี upsells เดียวกัน)

ถ้าฉันแก้ไขบางอย่างในกฎและบันทึกอีกครั้ง upsells จะเริ่มปรากฏในทุกมุมมองร้าน แต่หลังจากผ่านไประยะหนึ่งปัญหาก็จะเกิดขึ้นอีกครั้ง

หลังจากขุดในรหัสฉันพบว่า upsells ที่สร้างขึ้นโดยกฎเป้าหมายจะถูกเก็บไว้ในตาราง enterprise_targetrule_index_upsell ตารางเพื่อหลีกเลี่ยงการแยกวิเคราะห์กฎทั้งหมดในแต่ละครั้ง นี่คือวิธีการทำงาน (ตารางจะถูกตัดทอนเมื่อบันทึกกฎ) หากมี 'ups กฎเป้าหมาย' ในตารางที่ฉันกล่าวถึงพวกเขาจะถูกเรียกคืน หากไม่เป็นเช่นนั้นกฎจะถูกแยกวิเคราะห์และผลลัพธ์จะถูกวางในตารางดัชนี นี่คือบันทึกบางส่วนจากตารางนั้นสำหรับผลิตภัณฑ์เฉพาะ

+-----------+----------+-------------------+---------------------------------------------------------------------+---------------------+
| entity_id | store_id | customer_group_id | product_ids                                                         | customer_segment_id |
+-----------+----------+-------------------+---------------------------------------------------------------------+---------------------+
|     17372 |        2 |                 0 | 17373,350,583,487,17664,29737,14719,443,445,29502,17666,17667,17668 |                   0 |
|     17372 |        5 |                 0 | 17373,350,583,487,17664,29737,14719,443,445,29502,17666,17667,17668 |                   0 |
|     17372 |       17 |                 0 | 17373,350,583,487,17664,29737,14719,443,445,29502,17666,17667,17668 |                   0 |
|     17372 |       18 |                 0 | 17373,350,583,487,17664,29737,14719,443,445,29502,17666,17667,17668 |                   0 |
|     17372 |       19 |                 0 | 17373,350,583,487,17664,29737,14719,443,445,29502,17666,17667,17668 |                   0 |
|     17372 |       20 |                 0 |                                                                     |                   0 |
|     17372 |       21 |                 0 | 17373,350,583,487,17664,29737,14719,443,445,29502,17666,17667,17668 |                   0 |
|     17372 |       22 |                 0 | 17373,350,583,487,17664,29737,14719,443,445,29502,17666,17667,17668 |                   0 |
|     17372 |       23 |                 0 | 17373,350,583,487,17664,29737,14719,443,445,29502,17666,17667,17668 |                   0 |

ในขณะที่คุณสามารถดู upsells สำหรับผลิตภัณฑ์ที่มี id 17372 เหมือนกันในทุกมุมมองร้านค้ายกเว้น store_id 20 ซึ่งเป็นที่ว่างเปล่า ไม่มีอะไรพิเศษเกี่ยวกับร้านค้า 20 ผลิตภัณฑ์ทั้งหมดที่เกี่ยวข้องที่นี่มีอยู่ในร้านค้าทั้งหมด

ความคิดใด ๆ

ขอบคุณ Marius


1
มีการcronกำหนดค่าของคุณอย่างถูกต้อง IIRC กฎจะถูกสร้างขึ้นใหม่ทุกคืนและไม่มีการใช้งานcronจะสร้างพฤติกรรมแปลก ๆ
Ben Lessani - Sonassi

cron ทำงานและทำงานทุกเช้าโดยไม่มีปัญหา
Marius

ฉันพบอีกสิ่งหนึ่ง หลังจากบันทึกกฎแล้วตาราง 'enterprise_targetrule_product' จะมีผลิตภัณฑ์ทั้งหมด แต่หลังจากเวลาผ่านไปผลิตภัณฑ์ทั้งหมดจะหายไปยกเว้นผลิตภัณฑ์หนึ่งผลิตภัณฑ์ไม่ใช่ผลิตภัณฑ์เดียวกันเสมอไป ตราบใดที่รหัสผลิตภัณฑ์อยู่ในตารางด้านบนทุกอย่างทำงานได้
Marius

1
เมื่อบันทึกผลิตภัณฑ์กฎเป้าหมายจะได้รับการจัดทำดัชนีสำหรับผลิตภัณฑ์นั้นและจะทำสิ่งนี้: (Mage_Rule_Model_Resource_Abstract :: bindRuleToEntity ()) $ adapter-> ลบ ($ this-> getTable ($ entityInfo ['associations_table']), $ adapterInfo -> quoteInto ($ entityInfo ['rule_id_field']. 'IN (?) และ', $ ruleIds). $ adapter-> quoteInto ($ entityInfo ['entity_id_field']. 'ไม่ได้อยู่ใน (?)', $ entityIds); การทำเช่นนี้จะลบผลิตภัณฑ์อื่นทั้งหมดออกจากรายการผลิตภัณฑ์ที่ได้รับผลกระทบถ้าฉันตั้งค่าโหมดสำหรับดัชนีเป้าหมายเป็น 'คู่มือ' ปัญหาไม่ได้ทำซ้ำ แต่วิธีนี้ไม่สามารถแก้ไขได้มันแค่ซ่อนไว้
Marius

มีเหตุผลสำหรับคนที่ลงคะแนนนี้หรือไม่
FlorinelChis

คำตอบ:


7

ใน EE 1.13 ข้อผิดพลาดนี้ดูเหมือนจะได้รับการแก้ไข (แต่ EE 1.13 หายไป)

ในEnterprise_TargetRule_Model_Resource_Index::saveProductIndexบรรทัดที่มีปัญหาถูกแทนที่ด้วย (คำใบ้: พารามิเตอร์ที่ 4 "เท็จ")

$targetRule->bindRuleToEntity($ruleId, $productId, 'product', false);

และในMage_Rule_Model_Resource_Abstractฟังก์ชันbindRuleToEntityถูกเปลี่ยนเป็น:

public function bindRuleToEntity($ruleIds, $entityIds, $entityType, $deleteOldResults = true)

และสาย$adapter->delete(...)ถูกห่อเข้า

if ($deleteOldResults) {
    $adapter->delete($this->getTable($entityInfo['associations_table']),
           $adapter->quoteInto($entityInfo['rule_id_field']   . ' IN (?) AND ', $ruleIds) .
           $adapter->quoteInto($entityInfo['entity_id_field'] . ' NOT IN (?)',  $entityIds)
    );
 }

ข้อผิดพลาดอื่น ๆ shell / indexer.php --reindex targetrule ไม่ได้ทำอะไรดังนั้นคุณไม่สามารถสร้างดัชนีใหม่ผ่าน cron / console แก้ไขโดยเพิ่มในEnterprise_TargetRule_Model_Index:

public function reindexAll() {
    return $this->_getResource()->cleanIndex();
}

LATER: ดูแพทช์นี้https://github.com/magendooro/targetrulefix


ฉันใช้งาน 1.13.1 และฉันมีIntegrity constraint violation:for key '5B1C775075460366570ABDA2839BC68A'-> คีย์นี้มาจากenterprise_targetrule_index_related... คุณมีความคิดใด ๆ หรือไม่ที่เกี่ยวข้องกับการเปลี่ยนแปลงที่กล่าวถึง
Fra

1

ฉันตัดสินใจที่จะเพิ่มสิ่งที่ฉันพบว่าเป็นคำตอบดังนั้นคำถามนี้จะไม่ถูกทำเครื่องหมายว่าไม่ได้ตอบ

เมื่อบันทึกผลิตภัณฑ์กฎเป้าหมายจะได้รับการจัดทำดัชนีสำหรับผลิตภัณฑ์นั้นและในที่สุดก็ทำเช่นนี้ :( Mage_Rule_Model_Resource_Abstract::bindRuleToEntity())

$adapter->delete($this->getTable($entityInfo['associations_table']), $adapter->quoteInto($entityInfo['rule_id_field'] . ' IN (?) AND ', $ruleIds) . $adapter->quoteInto($entityInfo['entity_id_field'] . ' NOT IN (?)', $entityIds); 

จะเป็นการลบผลิตภัณฑ์อื่นทั้งหมดจากรายการผลิตภัณฑ์ที่ได้รับผลกระทบ หากฉันตั้งค่าโหมดสำหรับดัชนี targetrule เป็น 'manual' ปัญหาจะไม่เกิดขึ้นอีก แต่นี่ไม่ได้แก้มัน มันซ่อนมันไว้

จากมุมมองของฉันนี้เป็นข้อบกพร่องร้ายแรงวีโอไอพี


คำตอบที่ได้รับการยอมรับช่วยแก้ปัญหาของคุณหรือไม่? ฉันมีปัญหาเดียวกันใน EE 1.11.1.0
dchayka

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