Jump to content
Sign in to follow this  
pashast

Можно ли использовать в шаблонах <?php include *.tpl ?

Recommended Posts

Верстаю шаблон. Вместо нескольких одинаковых шаблонов модулей bestseller.tpl, .featured.tpl, special.tpl итд создал один _product_layout.tpl.

 

В каждом из них вместо кучи кода прописал одну строку 

 

<?php include DIR_APPLICATION . '/view/theme/themename/template/module/_product_layout.tpl';

 

Работает все нормально.

 

Кто-то уже делал так? Чем грозит такой подход? Могут ли быть баги?

Edited by pashast

Share this post


Link to post
Share on other sites

Верстаю шаблон. Вместо нескольких одинаковых шаблонов модулей bestseller.tpl, .featured.tpl, special.tpl итд создал один _product_layout.tpl.

 

В каждом из них вместо кучи кода прописал одну строку 

 

<?php include DIR_APPLICATION . '/view/theme/themename/template/module/_product_layout.tpl';

 

Работает все нормально.

 

Кто-то уже делал так? Чем грозит такой подход? Могут ли быть баги?

 

Да можно в принципе, но как то костыльно с точки зрения культуры кода :)

Share this post


Link to post
Share on other sites

Да можно в принципе, но как то костыльно с точки зрения культуры кода :)

 

Так один и тот же код в разных файлах - это не хуже ли?

делать одни и те же правки сразу в 5 или более файлах - разве это "культура кода"? По моему, это на онанизм больше похоже.

Вероятность ошибок возрастает очень сильно, т. к. никогда не будешь уверен, что сделал правки везде.

 

Вроде учили структурному программированию, ООП и т. д. и т. п. 

А тут на выходе один и тот же код в нескольких местах... кошмар, однако.

 

Работает все нормально.

 

 

 

Я так делал. особенно когда времени мало. проблем не было замечено.

 

И вообще, я за костыли если для заказчика основной критерий - сделать побыстрее и подешевле.

Share this post


Link to post
Share on other sites

А я бы сделал (и делаю) всё это в контроллере соответствующих модулей или через vqmod/ocmod.

И никаких <?php include

Edited by serega-lomik

Share this post


Link to post
Share on other sites

можно, конечно - шаблон нативный-php

 

Минус если такой инклуд в цикле, но если немного извратиться :) и сделать его через eval :)

 

ps. далее не обсуждаю - бессмысленно.

Share this post


Link to post
Share on other sites

Верстаю шаблон. Вместо нескольких одинаковых шаблонов модулей bestseller.tpl, .featured.tpl, special.tpl итд создал один _product_layout.tpl.

 

В каждом из них вместо кучи кода прописал одну строку 

 

<?php include DIR_APPLICATION . '/view/theme/themename/template/module/_product_layout.tpl';

 

Работает все нормально.

 

Кто-то уже делал так? Чем грозит такой подход? Могут ли быть баги?

Баги могут быть с модулями, которые c помощью vqmod/ocmod ищут определённые .tpl в папке module, к примеру - latest.tpl. В вашем случае мод его не найдёт и придётся править ручками. 

Share this post


Link to post
Share on other sites

Баги могут быть с модулями, которые c помощью vqmod/ocmod ищут определённые .tpl в папке module, к примеру - latest.tpl. В вашем случае мод его не найдёт и придётся править ручками. 

согласен, это уже напоминает шаблоны-конструкторы pavothemes

 

Верстаю шаблон. Вместо нескольких одинаковых шаблонов модулей bestseller.tpl, .featured.tpl, special.tpl итд создал один _product_layout.tpl.

 

В каждом из них вместо кучи кода прописал одну строку 

 

<?php include DIR_APPLICATION . '/view/theme/themename/template/module/_product_layout.tpl';

 

Работает все нормально.

 

Кто-то уже делал так? Чем грозит такой подход? Могут ли быть баги?

 

с точки удобства - да, удобней

но в оригинале-то по-другому, отсюда и проблемы могут возникнуть с другими модулями (которые обращаются именно к featured/bestseller/latest и тп)

Share this post


Link to post
Share on other sites

_product_layout.tpl

 

Вот именно, не забывайте, что он-то в цикле

Share this post


Link to post
Share on other sites

Баги могут быть с модулями, которые c помощью vqmod/ocmod ищут определённые .tpl в папке module, к примеру - latest.tpl. В вашем случае мод его не найдёт и придётся править ручками. 

 

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

 

_product_layout.tpl

 

Вот именно, не забывайте, что он-то в цикле

Нет, не в цикле. Цикл в этом файле.

 

Минусов не увидел. Буду так верстать.  :-)

Edited by pashast

Share this post


Link to post
Share on other sites
Цикл в этом файле.

 

Тогда - ок

Share this post


Link to post
Share on other sites

согласен, это уже напоминает шаблоны-конструкторы pavothemes

Точно, я все думал, где я такое встречал.

Share this post


Link to post
Share on other sites

Вот код (подсветка почему-то не работает) из шаблона journal2 

(Хотя, ИМХО, за такой код в шаблоне нужно руки выкручивать) 

 

if (class_exists('VQMod')) {
        global $vqmod;
        if ($vqmod !== null) {
            require $vqmod->modCheck(DIR_TEMPLATE .
$this->config->get('config_template') .
"/template/journal2/headers/{$header_type}.tpl");
        } else {
            require VQMod::modCheck(DIR_TEMPLATE .
$this->config->get('config_template') .
"/template/journal2/headers/{$header_type}.tpl");
        }
    } else {
        require DIR_TEMPLATE . $this->config->get('config_template') .
"/template/journal2/headers/{$header_type}.tpl";
    }

 

Так один и тот же код в разных файлах - это не хуже ли?
делать одни и те же правки сразу в 5 или более файлах - разве это "культура кода"? По моему, это на онанизм больше похоже.
Вероятность ошибок возрастает очень сильно, т. к. никогда не будешь уверен, что сделал правки везде.
 
Вроде учили структурному программированию, ООП и т. д. и т. п. 
А тут на выходе один и тот же код в нескольких местах... кошмар, однако.

ну зачем же так? можно ведь и правильный код написать и не дублировать его и сохранить и ООП и MVC

 

Напр. что мешает этот шаблон вызвать не из другого шаблона, а в контроллере, результат записать в переменную напр. $products_html и уже эту переменную красиво передать другому шаблону и вывести ее там?

При этом и код правильный и красивый. И конфликтов меньше будет. И с vqmod такой код дружить будет.

Share this post


Link to post
Share on other sites
Напр. что мешает этот шаблон вызвать не из другого шаблона, а в контроллере, результат записать в переменную напр. $products_html и уже эту переменную красиво передать другому шаблону и вывести ее там?

 

Абсолютно ничего, за редким исключением :)

 

Редкое исключение - некий модуль без vqmod со своим формирователем ЧПУ

 

 

Именно так я в одном из своих проектах передаю повторяющийся массив ссылок, и различных пременных

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.