Как создать шаблон, если сайт использует Divi? - PullRequest
4 голосов
/ 14 февраля 2020

Я делаю некоторую работу на сайте, и все сделано в Divi.

Я просто хочу создать несколько пользовательских шаблонов woocommerce для страницы продукта и т. Д. c .., используя код, но когда я добавляю Шаблоны в папке темы не перекрывают страницу продукта.

Когда я смотрю в отладочном запросе, он показывает, что вместо обычного шаблона продукта используется шаблон et page builder.

Их Все документы подготовлены для не кодировщиков, и только создание кода связано с созданием модулей.

Как мне сделать обычное переопределение шаблона из дочерней темы?

1 Ответ

0 голосов
/ 24 февраля 2020

Вы просто должны убедиться, что ваш путь к файлам шаблонов правильный. Например, если вы пытаетесь перезаписать шаблон single-product , который находится по адресу:

wp-content/plugins/woocommerce/templates/single-product.php

, просто скопируйте его в:

wp-content/themes/{your-child-theme}/woocommerce/single-product.php

и внесите свои изменения там.

Для любых файлов шаблонов просто сопоставьте путь минус папка templates.

Если у вас установлены какие-либо плагины для кэширования, вам может потребоваться очистить кэш, прежде чем появятся изменения.

Для проверки я скопировал single-product.php и product-image.php и внес следующие изменения:

single-product.php

product-image.php

И вы можете увидеть результат здесь: enter image description here

Если это не работает для вас, убедитесь, что ваша дочерняя тема настроена правильно.


Редактировать: Строитель тем Divi, после активации, заставляет сайт больше не использовать шаблоны страниц. Таким образом, нет никакого способа (кроме переписывания Theme Builder) переопределить его своими собственными файлами шаблонов.

Однако вы можете настроить модули Divi, используемые Theme Builder, хотя их редактирование немного сложнее.

Модули находятся в:

wp-content/themes/Divi/includes/builder/module/

Например, я переопределю модуль Заголовок WooCommerce.

wp-content/themes/Divi/includes/builder/module/woocommerce/Title.php

Сначала скопируйте этот файл в свою дочернюю тему и поместите в новую папку:

wp-content/themes/Divi-child/custom-modules/Title.php

Далее добавьте следующий код вашей дочерней темы functions.php для замены существующего модуля:

function divi_child_theme_setup() {
    if ( class_exists('ET_Builder_Module')) {
        get_template_part( 'custom-modules/custom-title' );
        $TE_ct = new Custom_ET_Builder_Module_Woocommerce_Title();
        remove_shortcode( 'et_pb_wc_title' );
        add_shortcode( 'et_pb_wc_title', array($TE_ct, '_shortcode_callback') );
    }
}
add_action('wp', 'divi_child_theme_setup', 9999);

Вызывайте вашу переменную ($TE_ct) и модуль (Custom_ET_Builder_Module_Woocommerce_Title) как хотите.

Наконец, отредактируйте модуль в своей дочерней теме. Убедитесь, что имя класса совпадает с тем, которое вы использовали в functions.php.

...
class Custom_ET_Builder_Module_Woocommerce_Title extends ET_Builder_Module {
    /**
     * Initialize.
     */
    public function init() {
        echo "<h1>CUSTOMIZED!!</h1>";
        $this->name       = esc_html__( 'Woo Title', 'et_builder' );
        $this->plural     = esc_html__( 'Woo Titles', 'et_builder' );
        $this->slug       = 'et_pb_wc_title';       
        $this->vb_support = 'on';
...

. Здесь я добавил простой echo, чтобы показать, что модуль переопределяется.

Результат :

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...