Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

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


pashast

Recommended Posts

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

 

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

 

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

 

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

 

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

Змінено користувачем pashast
Надіслати
Поділитися на інших сайтах

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

 

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

 

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

 

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

 

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

 

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

Надіслати
Поділитися на інших сайтах

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

 

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

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

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

 

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

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

 

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

 

 

 

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

 

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

Надіслати
Поділитися на інших сайтах

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

 

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

 

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

Надіслати
Поділитися на інших сайтах

Баги могут быть с модулями, которые 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 и тп)

Надіслати
Поділитися на інших сайтах

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

 

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

 

_product_layout.tpl

 

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

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

 

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

Змінено користувачем pashast
Надіслати
Поділитися на інших сайтах

Вот код (подсветка почему-то не работает) из шаблона 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 такой код дружить будет.

Надіслати
Поділитися на інших сайтах

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

 

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

 

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

 

 

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

Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.