28-29 АВГУСТА
Киев, Украина

Разработка тем

Donetsk, Ukraine
Intermediate

Даже не знаю куда это отнести, поэтому пишу сюда.
Вопрос вот в чем.. Очень часто приходится видеть как разработывают темы на базе чего-то стандартного или на базе заготовок типа http://drupal.org/project/zen
К сожалению, часто разработчики не знают для чего нужно большенство кода из таких заготовок или же знают, но в данном конкретном проекте вся эта красота не юзается.

В моей практике пришлось столкнуться в разработкой на базе темы acquia_marina. Честно говоря, я был в шоке от template.php в 600 строк, учитывая что я догадывался что там максимум 20 строк может быть в этом проекте.

Так вот, вопросы:
1. Стоит ли в реальных проектах юзать базовые темы или любые готовые? Или же, только играть с ними на этапе изучения друпала?
2. Если стоит их юзать в реальных проектах, то на сколько легко по вашему потом такие проеты поддерживать?
3. Как быть если базовая тема изменит лицензию?

Моя позиция такова: для "поиграть" или для изучения базовые темы очень хороши, но для реальных проектов надо делать все с нуля, не захламляя код. Лишний код -- это зло..

А что вы думаете по этому поводу?

GN
Kyiv, Ukraine
Intermediate

Говорят, у человека в template.php и style.css геноме тоже куча лишнего кода, который не юзается - так что проблему можно было бы назвать "Разработка тем: эволюционизм или креационизм?" :))

А что касается конкретно Acquia Marina - я недавно наткнулся на парочку багов при дальнейшем подпиливании готовой темы, сделанной на основе Acquia Marina. Эти баги не проявлялись на одноязычном сайте, а только при переходе к многоязычию. Один из этих багов исправляется заменой одной переменной на другую в page.tpl.php, а для исправления второго народные умельцы нашли способ, заключающийся в закомментировывании в template.php пары десятков "лишних" строк, без которых вроде бы всё стало хорошо. Но зачем они вообще были нужны, и может ли без них в какой-то ситуации стать плохо, ни у кого времени разбираться не было. В том числе и у разработчиков темы Acquia Marina, которые ответили на bug report, что "won't fix", потому что тема всё равно сейчас переделывается под новую theme system под названием Fusion, которая является большим концептуальным шагом вперёд в сфере теморазработки, а исправлять баги в старой версии нет ни времени, ни смысла.
Кстати, нужно будет попробовать эту Fusion, когда она выйдет.

Donetsk, Ukraine
Intermediate

Я не против использования кода (пусть даже лишнего в данном конкретном случае), если человек знает что этот код делает. Если же это только лишь "Fusion, которая является большим концептуальным шагом вперёд в сфере теморазработки" и поэтому это круто и поэтому надо ее юзать в проекте "на одну трубку"... то я против.
Также, я против стрельбы из пушки по комарам.

Я за минимализм.

ЗЫ: не думаю что турист будет рад если ему засунут кучу хлама в рюкзак только потому что "а вдруг понадобится", не аргументируя это "а вдруг".

GN
Kyiv, Ukraine
Intermediate

Один вопрос - сколько времени (которое =деньги) у разработчика займёт написание темы с нуля специально под данный проект, и какие инструменты (в дополнение к голому ноутпаду) будут ему полезны. (В реальной жизни человек, скорее всего, разработает с нуля тему на первый проект, для второго проекта доработает тему из первого, а для третьего отдаст темизацию подмастерью, который станет допиливать предыдущие разработки, не всегда вникая, что там зачем. На десятом проекте в команду придёт новый темизатор, который наконец захочет полностью разобраться в коде, ужаснётся нагромождению лишнего и кривого, и перепишет всё наново. И цикл пойдёт по новой.)

Другой вопрос - насколько эффективно использование всяких theme construction kits, grid systems etc.; насколько это облегчает разработку, и насколько хорошим получается код.

Третий - какие из "blank canvas" тем действительно хорошие, с чистым кодом и robust. (Например, если тема плохо дружит с IE6 (как Zen), то её обставляют какими-то уродливыми костылями, и я не знаю что там в результате остаётся от исходной чистоты кода).

Donetsk, Ukraine
Intermediate

Видимо, у нас разные подходы к разработке тем. При наличии 4-5 сверстаных HTML страниц, я не очень понимаю как такую тему можно сделать на основе доработки предыдущей. Приходится создавать все с нуля. Хотя, можно выделить основные функции (2-3), которые можно использовать везде. Но эти функции мы копируем из прошлых работ по мере необходимости.

Как пример, многие копируют себе вот этот кусок кода:
$vars['tabs2'] = menu_secondary_local_tasks();

Однако, я еще не видел использование переменной $tabs2 в темах этих людей. На вопрос "зачем?" обычно отвечают "ну там же было".

Видимо в конторах с 10+ разработчиками использование template.php с 20+ функциями, из которых один разработчик юзает только 1, а второй порядка 15 -- хорошая практика. Но для 5 человек это не очень хорошо, как мне кажется. Это как с делфи -- скорость клепания поделок увеличилась, а уровень разработчиков упал.

Kyiv, Ukraine
Ninja

Мы у себя используем вылизанную типографическую базовую тему. Базовую в терминах друпала, а не в смысле что она копируется в новый проект и все изменения идут в нее. Новая тема создается рядом и наследуется от базовой. На нее теперь можно навешивать нужную верстку и стили, но почти вся обычная рутина, темизация админки и т.д. остается в базовой теме, что гипер-удобно.

Днепропетровск, Ukraine
Intermediate

Мы обычно пишем каждый раз с нуля, единственное что попадает в базис - это template.php, node.tpl.php, block.tpl.php из темы garland и то template.php зачастую урезается почти полностью в зависимости от предстоящей задачи. В случае когда необходимо повторить ситуацию которая уже была использована где-то в других проектах просто копируется кусок кода. Хотя в большинстве случаев пользуем свой внутренний модуль в котором есть ряд функций улучшающих и упрощающих дальнейшую темизацию к примеру добавление в настройках блока собственных классов индивидуальных для каждого отдельновзятого блока.

Anonymous

Первый раз за все время вижу нормальное обсуждения вопроса темизации в друпал )) Спасибо товарищи, я немного разобрался ) template.php - зло )))

Moscow, Russia
Intermediate

1) imho только для изучения, особенно если вы понимаете как делать верстку и обладаете минимальными понятиями в php.
2) в любом приличном проекте, любую тему, вы будет допиливать под себя. в этом случае, вам придется переносить свои наработки в выходящие обновление(если автор не забросил тему сам).

з.ы на этой странице id вида id="comment-337" повторяются

Kyiv, Ukraine
Intermediate

1 - вартує в випадку, якщо знаєш на що йдеш

2 - стандартні шаблони як правило володіють здатністю оновлюватись і фіксити баги, тому певна частина коду буде банально пофіксена "не Вами" - свої плюси.. Як і мінуси в якості "внесення чужих багів"

3 - збереження ліцінзійної угоди - основна умова!