เทมเพลต phtml ถูกสร้างขึ้นเมื่อใดและอย่างไรใน view_preprocess


11

ฉันเห็นไฟล์ phtml จำนวนมากที่สร้างขึ้นvar/view_preprocessed/htmlจากโมดูลหลักและจากโมดูลที่กำหนดเอง ดูเหมือนว่าเทมเพลตเหล่านี้จะถูกใช้ทั้งหมดพร้อมกับช่องว่างที่ถูกปล้น

Alan Kent เขียนในฉันจะอัปเดตไฟล์ php ของ Magento 2 ใน Grunt ได้อย่างไร? :

คุณไม่ได้ "ปรับใช้" ไฟล์ PHTML มีการอ้างอิงโดยบล็อกในไฟล์เลย์เอาต์และประมวลผลทางฝั่งเซิร์ฟเวอร์ ดังนั้น "เสี้ยงฮึดฮัด" ไม่เกี่ยวข้องที่นี่และการปรับใช้เนื้อหาแบบคงที่ในทำนองเดียวกันไม่เกี่ยวข้อง

และเมื่อวิเคราะห์การปรับใช้เนื้อหาแบบคงที่และเวิร์กโฟลว์เสี้ยงฮึดฮัดแสดงความไม่พบสิ่งที่เกี่ยวข้องกับแม่แบบดังนั้นฉันคิดว่านี่ยังคงเป็นจริง

แต่ไฟล์เหล่านี้จะถูกสร้างขึ้นเมื่อใด มีอะไรเกิดขึ้นจริงที่นั่นและทำไม?


เมื่อฉันหาไฟล์เหล่านี้จะถูกสร้างขึ้นด้วยคำสั่งคงที่เนื้อหา: ปรับใช้ ด้วยเหตุผลบางอย่างคุณต้องลบไฟล์ทั้งหมดใน var / view_preprocessed เพื่อให้การเปลี่ยนแปลงของคุณใช้งานได้
Kevin Krieger

คำตอบ:


9

เมื่อเรียกbin/magento static-content:deployสิ่งนี้จะได้รับชื่อ: \Magento\Deploy\Console\Command\DeployStaticContentCommand::execute()

วิธีนี้เรียกว่า

    $deployer = $this->objectManager->create(
        'Magento\Deploy\Model\Deployer',
        ['filesUtil' => $filesUtil, 'output' => $output, 'isDryRun' => $options[self::DRY_RUN_OPTION]]
    );
    $deployer->deploy($this->objectManagerFactory, $languages);

ซึ่งแปล\Magento\Deploy\Model\Deployer::deployว่า ที่ด้านล่างของวิธีนี้คุณจะพบ

   foreach ($this->filesUtil->getPhtmlFiles(false, false) as $template) {
        $this->htmlMinifier->minify($template);
        if ($this->output->getVerbosity() >= OutputInterface::VERBOSITY_VERBOSE) {
            $this->output->writeln($template . " minified\n");
        } else {
            $this->output->write('.');
        }
        $this->count++;
    }

หากคุณต้องการคุณสามารถเจาะลึกลง\Magento\Framework\App\Utility::getPhtmlFilesไปเพื่อดูวิธีการดึงแม่แบบ
เวอร์ชั่นสั้น:
มันเรียกaccumulateModuleTemplateFilesและaccumulateThemeTemplateFilesมาจากคลาสเดียวกัน วิธีการเหล่านี้ใช้ (ในสุด) globและนิพจน์ปกติบางอย่างเพื่อดึงไฟล์เทมเพลตทั้งหมดจากโมดูลและจากชุดรูปแบบและการลดขนาดทำได้โดย\Magento\Framework\View\Template\Html\Minifier(ที่ดำเนินการ\Magento\Framework\View\Template\Html\MinifierInterface) ตามนิพจน์ปกติที่แปลก ๆ (ดูminifyวิธีการ)
สิ่งที่ฉันยังไม่รู้มันเป็นอย่างไรเทมเพลตเหล่านี้ถูกโหลดมาใช้ เทมเพลตเอ็นจิ้นอาจโหลดได้บ่อยที่สุด ฉันจะโพสต์กลับมาที่นี่ถ้า / เมื่อฉันพบว่า

[แก้ไข]
ฉันพบเมื่อมีการใช้แม่แบบย่อ เมื่อคุณตั้งค่าเป็นStore->Configuration->Developer->Template Settings->Minify HTMLถึงYesและเมื่ออยู่ในโหมดการผลิต


ขอบคุณสำหรับคำตอบ. ฉันพบว่าStore->Configuration->Developer->Template Settings->Minify HTMLมันยังไม่โหลด Minified HTML มีอะไรที่สามารถบล็อกสิ่งนี้ได้หรือไม่ ใช้งานได้ในโหมดการผลิตเท่านั้นหรือไม่
TheBlackBenzKid
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.