Вопросы темизации

Главные вкладки

Аватар пользователя glu2006 glu2006 30 сентября 2008 в 16:43

Есть интересный вопрос: Использую на сайте 5 различных тем, ситуация такова, что у меня есть для каждой темы порядка 20-30 функций вида phptemplate_что-то код которых абсолютно эдентичен.
Что хочу: вынести все эти функции из тем в какой-то один файл и что-бы он работал один для всех тем сайта.
Пути решения: ???? я знаю в ядре есть файл themes/engines/phptemplate/phptemplate.engine - можно ли дописывать в него свои функции (теоретически и практически можно, пробовал и даже работает), какие последствия при обновлении соответственно перетрет (т.е. надо всегда помнить о том что там у меня свои функции).

Или есть решение более лаконичное?? может создать какой-то файл со спецфическим именем?? в папке engines или как-то еще иначе???

Комментарии

Аватар пользователя whisk@drupal.org whisk@drupal.org 30 сентября 2008 в 17:02

Если все функции являются уникальными (т.е. НЕ перекрывают стандартные функции theme_*), то я бы сделал модуль my_theme_helper (например), где бы их и определил:

<?php
function theme_something () {}
?>

Таким образом, все функции собраны в одном файлике, в любой части кода их можно вызвать через theme('something').

Аватар пользователя glu2006 glu2006 30 сентября 2008 в 17:34

Все функции перекрывают стандартные функции theme_* но они отдают одинаковую структуру контента для каждой темы.
т.е. 5 функций phptemplate_view_list(); внутри которых совершенно одинаковый код. но их 5-ть, в каждой теме по одной в файле template.php а я хочу все такие функции собрать в один файл чтоб их было по одной но этот файл юзался для всех тем сайта. по возможности не используя phptemplate.engine туда запихнуть можно но что-то подсказывает мне что не нужно.

Аватар пользователя glu2006 glu2006 1 октября 2008 в 9:17

<a href="mailto:whisk@drupal.org">whisk@drupal.org</a> wrote:
Первый пришедший в голову вариант - выделить функции в отдельный файл и include_once :)

Буду рассматривать как вариант.

Аватар пользователя direqtor direqtor 1 октября 2008 в 3:55

Может получится сделать одну из тем родительской, а остальные как подтемы (по примеру garland и minelli). Тогда все phptemplate-функции можно разместить в родительской теме.

Аватар пользователя glu2006 glu2006 1 октября 2008 в 9:27

direqtor wrote:
Может получится сделать одну из тем родительской, а остальные как подтемы (по примеру garland и minelli). Тогда все phptemplate-функции можно разместить в родительской теме.

Этот вариант тоже буду пробовать.

Теперь на счет коварного phptemplate.engine: подрупалоргил и к сожалению ничего не нашел, может как-то плохо искал??? но суть проблемы осталась неразрешенной Sad неужели никогда не стояла задача уменьшить и с оптимизировать количество кода. ведь данный файл работает для всего сайта и всех тем, но хакать ядро не хорошо (во всяком случае так учили).
Эх буду дальше лопатить доку... Если победю или побежду (хз как правильно) то выложу на всеобщее рассмотрение.

ЗЫ. Конструктивные предложения приветствуются, спасибо всем кто написал и еще будет писать.

Аватар пользователя whisk@drupal.org whisk@drupal.org 1 октября 2008 в 14:09

Можно сделать свою theme engine, взяв за основу phptemplate.engine (перенаправляя вызовы стандартных функций своего движка на phptemplate.engine). Так, например, сделано в smarty.engine.