Các mẫu phtml được tạo trong view_pre được xử lý khi nào và như thế nào?


11

Tôi thấy rất nhiều tệp phtml được tạo trong var/view_preprocessed/html, từ các mô-đun lõi cũng như từ các mô-đun tùy chỉnh. Dường như đây là tất cả các mẫu được sử dụng với khoảng trắng bị tước.

Alan Kent đã viết trong Làm cách nào để cập nhật các tệp Magento 2 phtml trong Grunt? :

Bạn không "triển khai" tệp PHTML. Chúng được tham chiếu bởi các khối trong tệp bố cục và được xử lý ở phía máy chủ. Vì vậy, "grunt" không liên quan ở đây và việc triển khai nội dung tĩnh tương tự không liên quan.

Và khi phân tích quy trình triển khai nội dung tĩnh và quy trình xử lý nội dung tĩnh, tôi không tìm thấy bất cứ điều gì liên quan đến các mẫu, vì vậy tôi đoán điều này vẫn đúng.

Nhưng khi các tập tin này được tạo ra? Và những gì đang thực sự xảy ra ở đó và tại sao?


Như tôi đã tìm ra, các tệp này sẽ được tạo bằng lệnh static-content: triển khai. Vì một số lý do, bạn phải xóa tất cả các tệp trong var / view_pre được xử lý để các thay đổi của bạn hoạt động.
Kevin Krieger

Câu trả lời:


8

Khi gọi bin/magento static-content:deployđiều này được gọi là: \Magento\Deploy\Console\Command\DeployStaticContentCommand::execute()

Phương thức này gọi

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

mà dịch sang \Magento\Deploy\Model\Deployer::deploy. Ở dưới cùng của phương pháp này, bạn sẽ tìm thấy

   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++;
    }

Nếu bạn muốn, bạn có thể tìm hiểu sâu hơn \Magento\Framework\App\Utility::getPhtmlFilesđể xem các mẫu được lấy như thế nào.
Phiên bản ngắn:
Nó gọi accumulateModuleTemplateFilesaccumulateThemeTemplateFilestừ cùng một lớp. Các phương thức này đang sử dụng (cuối cùng) globvà một số biểu thức thông thường để truy xuất tất cả các tệp mẫu từ các mô-đun và từ các chủ đề và thu nhỏ được thực hiện bởi \Magento\Framework\View\Template\Html\Minifier(thực hiện \Magento\Framework\View\Template\Html\MinifierInterface) dựa trên một số biểu thức chính quy lạ. (xem minifyphương pháp).
Điều tôi chưa biết, đó là những mẫu này được tải để sử dụng như thế nào. rất có thể chúng được tải bởi công cụ mẫu. Tôi sẽ đăng lại ở đây nếu / khi tôi tìm thấy điều đó.

[EDIT]
Tôi tìm thấy khi các mẫu được rút gọn được sử dụng. Khi bạn thiết lập giá trị cho Store->Configuration->Developer->Template Settings->Minify HTMLđến Yeskhi về phương thức sản xuất.


Cảm ơn câu trả lời. Tôi đã thấy rằng Store->Configuration->Developer->Template Settings->Minify HTMLnó vẫn không tải HTML được tối thiểu hóa. Có bất cứ điều gì có thể ngăn chặn điều này? Điều này chỉ làm việc trong chế độ sản xuất?
TheBlackBenzKid
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.