Есть интересный вопрос: Использую на сайте 5 различных тем, ситуация такова, что у меня есть для каждой темы порядка 20-30 функций вида phptemplate_что-то код которых абсолютно эдентичен.
Что хочу: вынести все эти функции из тем в какой-то один файл и что-бы он работал один для всех тем сайта.
Пути решения: ???? я знаю в ядре есть файл themes/engines/phptemplate/phptemplate.engine - можно ли дописывать в него свои функции (теоретически и практически можно, пробовал и даже работает), какие последствия при обновлении соответственно перетрет (т.е. надо всегда помнить о том что там у меня свои функции).
Или есть решение более лаконичное?? может создать какой-то файл со спецфическим именем?? в папке engines или как-то еще иначе???
Комментарии
Если все функции являются уникальными (т.е. НЕ перекрывают стандартные функции theme_*), то я бы сделал модуль my_theme_helper (например), где бы их и определил:
<?php
function theme_something () {}
?>
Таким образом, все функции собраны в одном файлике, в любой части кода их можно вызвать через theme('something').
Все функции перекрывают стандартные функции theme_* но они отдают одинаковую структуру контента для каждой темы.
т.е. 5 функций phptemplate_view_list(); внутри которых совершенно одинаковый код. но их 5-ть, в каждой теме по одной в файле template.php а я хочу все такие функции собрать в один файл чтоб их было по одной но этот файл юзался для всех тем сайта. по возможности не используя phptemplate.engine туда запихнуть можно но что-то подсказывает мне что не нужно.
Первый пришедший в голову вариант - выделить функции в отдельный файл и include_once
Буду рассматривать как вариант.
Может получится сделать одну из тем родительской, а остальные как подтемы (по примеру garland и minelli). Тогда все phptemplate-функции можно разместить в родительской теме.
Этот вариант тоже буду пробовать.
Теперь на счет коварного phptemplate.engine: подрупалоргил и к сожалению ничего не нашел, может как-то плохо искал??? но суть проблемы осталась неразрешенной
неужели никогда не стояла задача уменьшить и с оптимизировать количество кода. ведь данный файл работает для всего сайта и всех тем, но хакать ядро не хорошо (во всяком случае так учили).
Эх буду дальше лопатить доку... Если победю или побежду (хз как правильно) то выложу на всеобщее рассмотрение.
ЗЫ. Конструктивные предложения приветствуются, спасибо всем кто написал и еще будет писать.
Можно сделать свою theme engine, взяв за основу phptemplate.engine (перенаправляя вызовы стандартных функций своего движка на phptemplate.engine). Так, например, сделано в smarty.engine.