ไฟล์โครงร่าง local.xml หลายไฟล์ในแพ็คเกจ


13

บอกว่ามีสองรูปแบบในแพ็คเกจ:

  • ฐาน (ตั้งเป็นค่าเริ่มต้น)
  • เด็ก (ตั้งเป็นธีมหลัก)

ทั้งคู่มี local.xml ในโฟลเดอร์โครงร่าง - เฉพาะ local.xml จากธีมลูกเท่านั้นที่จะถูกโหลดดังนั้นการอัปเดต CSS, JS หรือโครงร่างใด ๆ ใน Base local.xml จะไม่ถูกโหลด

โดยไม่ต้องใช้ page.xml (เพื่อให้มีการทำงานเหมือนกับ local.xml แต่มีการสืบทอด) ฉันจะมีไฟล์ xml สำหรับ Base และอีกไฟล์หนึ่งสำหรับ Child ที่ทั้งสองถูกเรียกได้อย่างไร

สิ่งนี้จะต้องสร้างโมดูลโดยมีวัตถุประสงค์เพียงอย่างเดียวในการเพิ่มไฟล์ xml ที่ใช้งานได้ (เช่น: base-local.xml) หรือไม่

คำตอบ:


9

คุณถูกต้องและนี่เป็นวิธีที่ถูกต้องและใช้สำหรับไซต์ที่มีหลายธีม มีตัวเลือกเพิ่มเติม (ที่ไม่ค่อยมีคนรู้จักและไม่ค่อยใช้) สองสามตัวเลือกซึ่งสามารถใช้สำหรับการอัปเดตเลย์เอาต์ที่ใช้กับขอบเขตร้านค้าที่แตกต่างกัน: ตัวจัดการร้านค้าและตัวจัดการธีม

จากแอ็คชันคอนโทรลเลอร์ superclass Mage_Core_Controller_Varien_Action(ลิงก์) :

public function addActionLayoutHandles()
{
    $update = $this->getLayout()->getUpdate();

    // load store handle
    $update->addHandle('STORE_'.Mage::app()->getStore()->getCode());

    // load theme handle
    $package = Mage::getSingleton('core/design_package');
    $update->addHandle(
        'THEME_'.$package->getArea().'_'.$package->getPackageName().'_'.$package->getTheme('layout')
    );

    // load action handle
    $update->addHandle(strtolower($this->getFullActionName()));

    return $this;
}

สำหรับร้านค้าที่มีรหัส 'deutsch' และการกำหนดค่าธีมของแพ็คเกจ 'default', 'german' ธีมตัวจัดการต่อไปนี้จะใช้กับเกือบทุกมุมมองเนื่องจากมุมมองส่วนใหญ่ใช้พวกเขา:

<STORE_deutsch>
<THEME_frontend_default_german>

<default />โดยการดำเนินการจับเหล่านี้สามารถนำไปใช้ประโยชน์ในทางเดียวกันมากเป็น


อา, มีประโยชน์ที่จะรู้ - ฉันคิดว่ากรณีการใช้ของฉันแตกต่างกันเล็กน้อยว่าสิ่งที่คุณแนะนำว่า - คุณจะยังคงมีหนึ่ง local.xml ในชุดรูปแบบ 'ฐาน' แต่จากนั้นใช้ <THEME_frontend_default_german> เพื่อกำหนดเป้าหมายธีมลูก จากชุดรูปแบบฐาน local.xml - ไม่มี local.xml แยกกันในแต่ละธีมลูก? ถูกต้องหรือว่าฉันเข้าใจผิด?
Glo

แค่นั้นแหละ. น่าเสียดายที่ตัวจัดการเป้าหมายถูกนำไปใช้อย่างกว้างขวางดังนั้นจึงไม่มีทางที่จะพูดว่า "อัปเดตเทมเพลตรูทบล็อกสำหรับหน้า catalog_product_view ใน store X" แต่ถ้าเก็บ X ต้องการไฟล์ JS <STORE_x><action method="addJs" block="head"><file>custom/js.js</file></action></STORE_x>ที่กำหนดเองในทุกหน้ามันจะเป็นไปได้ที่จะใช้งาน
benmarks

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