Разработка фронт-энда сайта Drupal - основы - PullRequest
2 голосов
/ 04 августа 2011

Недавно мне дали существующий проект Drupal и попросили улучшить интерфейс (HTML, JavaScript, CSS). У меня есть большой опыт разработки на стороне и на бэкэнде на Django, PHP, Ruby и т. Д., Но у меня нет никакого предшествующего опыта работы с Drupal, и выяснение того, что происходит в проекте, в лучшем случае оказывается проблематичным.

Кто-нибудь может дать краткое изложение (или предоставить несколько ссылок) того, как типичный сайт Drupal слипается, и что мне нужно сделать, чтобы добавить элементы страницы, изменить CSS и добавить функциональность JavaScript? Какие подходящие места для этого?

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


Вот то, что я видел до сих пор, после 2 часов работы в коде и в Интернете:

Существует множество модулей, а файлы тем (CSS, некоторые изображения) находятся на сайтах / all / themes / theme_name / ...

Файлы HTML (шаблоны) кажутся разбросанными случайным образом повсюду - в модулях, * .tpl.php файлах и т. Д.

В теме есть .info-файл, среди прочего, содержащий определения регионов. Эти области соответствуют переменным в файлах шаблонов - но где переменные определены / отредактированы?


Это заставляет меня вырывать волосы из головы, любая помощь в том, как изменить внешний вид, была бы великолепна!

Ответы [ 6 ]

6 голосов
/ 04 августа 2011

В долгосрочной перспективе использование тематической инфраструктуры, такой как Zen (при условии, что на более чем несколько часов легких обновлений у вас есть бюджет) - это хороший подход, особенно для начинающих пользователей Drupal, поскольку разработчики Zen продумали все множество деталей. которые позволяют теме хорошо работать на разных сайтах и ​​в разных браузерах.

Может быть, я неверно истолковываю предложение Скотта, но я думаю, что его главное в том, что, изучая структуру дзен, вы изучите лучшие практики. Это также верно - просмотр существующих тем и каркасов тем является отличным способом увидеть, например, как должен быть структурирован файл template.php и как должны быть включены файлы JS.

С точки зрения деталей реализации, есть некоторые основы, которые, вероятно, помогут вам начать работу:

Регионы / блоки:

  • когда вы определяете регион в файле info, например regions[header], переменная $header становится доступной вам в шаблоне страницы (например, page.tpl.php). Когда вы создаете новый регион, чтобы получить к нему доступ в своих шаблонах, вам необходимо очистить кэш вашей темы . Вы можете включить свой регион в любом месте шаблона страницы, распечатав переменную:

    <?php print $header; ?>

    Как только ваши регионы были добавлены, вы обычно используете блоки для заполнения этого региона. Документация Drupal о блоках находится здесь . Вы можете создать новые блоки вручную, нажав «Добавить блок». Вы также можете создавать новые динамические блоки, создавая новый вид (см. Ниже). Блоки также часто добавляются модулями при их установке.

JavaScript / JQuery:

  • вы можете включить файлы JavaScript либо с drupal_add_js() в ваш template.php, либо включив их в ваш информационный файл, например так: scripts[] = js/myscript.js. Вам также нужно будет очищать кэш темы каждый раз, когда вы изменяете файл info.

    Если вы используете Drupal 7, , эта страница дает вам отличный обзор того, как структурировать ваши файлы JS и как включить их в вашу тему. Для Drupal 6 (или 5) эта страница охватывает эти темы.

    Вы, наверное, уже знаете это, но библиотека JQuery уже включена в Drupal. Версия jQuery обычно ниже текущей выпущенной версии, хотя при необходимости вы можете обновить ее как минимум до более высокой версии, используя jQuery Update .

Views / CCK

  • Если в теме есть какие-либо tpl-файлы, начинающиеся с views или node- / node--, они, вероятно, переопределяют виды / типы контента. Возможно, вы захотите познакомиться хотя бы с основами CCK / Views, так как они составляют основу для многих переопределений tpl.php. Возможно, вы не создаете новые Представления или типы контента, но если предыдущий разработчик сделал это, они, вероятно, создали некоторые файлы TPL, чтобы переопределить один или оба. Предполагая, что Views установлен и ваша пользовательская роль имеет к нему доступ, взгляните на различные Views, чтобы увидеть, как они работают. Если файл tpl.php начинается с views, он переопределяет что-то в представлении. Если он начинается с node (за исключением node.tpl.php, который является общим шаблоном для всех узлов Drupal), он обычно переопределяет тип контента (который обычно создается с использованием модуля CCK).

    Ключевым аспектом файлов tpl является то, что, как и CSS, они имеют каскад специфичности. Итак, в Drupal 6, если у вас есть page.tpl.php, это будет шаблон для всех страниц вашего сайта. Однако вы можете переопределить его для первой страницы с помощью шаблона page-front.tpl.php. Аналогично для node.tpl.php. Если у вас есть тип контента с именем Event, вы можете переопределить шаблон узла с помощью node-event.tpl.php. Понимание этой концепции поможет вам разобраться в соглашениях по присвоению имен в tpl.

Последнее замечание, и к этому, вероятно, потребуется некоторое время, чтобы привыкнуть. Общая проблема для новых пользователей Drupal заключается в том, что они видят, что могут использовать шаблон каждый раз, когда хотят переопределить что-то в интерфейсе.Поэтому, когда они хотят переопределить пять страниц или типов контента, они создают пять шаблонов.Это «работает», но часто излишне и может создавать проблемы с обслуживанием.По мере того, как вам станет удобнее пользоваться системой тем Drupal, вы обнаружите, что вы создаете все меньше и меньше page--blah-blah.tpl.php с и делаете больше переопределений шаблонов в template.php, где в идеале должна находиться большая часть логики темы.Это поможет вам консолидировать (и повторно использовать) переопределения шаблонов.Если бюджет / время не слишком ограничены, ознакомьтесь с функциями template.php.

1 голос
/ 04 августа 2011

В дополнение к превосходному ответу, приведенному выше, «HTML-файлы (шаблоны), кажется, разбросаны случайным образом повсеместно - в модулях, * .tpl.php-файлах и т. Д.»Они могут показаться случайно разбросанными, но файлы шаблонов обычно размещаются с тем, на что они напрямую влияют.Файлы шаблонов, которые размещаются в папках модуля, используются для шаблона вывода этого конкретного модуля (и ничего больше).

Шаблоны, которые находятся в папке темы, являются более общими, и их имя даст вам подсказки о том, как они влияют на конечный результат.Например, шаблоны страниц влияют на все страницы, тип узлов влияет на определенные типы узлов и т. Д. Упомянутое выше руководство по теме drupal объяснит, как все файлы шаблонов работают вместе.Это помогает думать о шаблонах как о строительных блоках, которые работают вместе для получения конечного результата.

1 голос
/ 04 августа 2011

Вот ссылка на руководство по темам Drupal: http://drupal.org/node/171194

Переменные в файлах шаблонов, как правило, можно изменить с помощью функций в файле template.php в каталогах sites/all/themes/theme_name/..., как вы их нашличерез такие функции, как template_preprocess ()

В Drupal API есть хорошая документация о том, какие переменные доступны в каждом файле .tpl.php, например page.tpl.php

1 голос
/ 04 августа 2011

Все просто, начните здесь: http://drupal.org/project/zen

0 голосов
/ 18 октября 2013

Это важная тема, и я нашел эту страницу с помощью поиска, поэтому люди все еще находят эту тему. Итак, вот мои советы:

  1. Чтобы завершить картину, я предлагаю отсканировать список навыков, необходимых для успешного веб-разработчика интерфейса - https://drupal.org/node/1245650. Для меня этот список был чрезвычайно полезен.

  2. Также важен фундамент. В настоящее время я бы предложил начать с темы, основанной на Twitter Bootstrap, а не на Zen. Bootstrap чрезвычайно популярен, и его богатая библиотека javascript позволяет выполнять множество манипуляций, просто добавляя CSS-классы, тем самым экономя огромное количество времени. Вот некоторые из лучших тем Drupal, основанных на начальной загрузке .

0 голосов
/ 04 августа 2011

Я рекомендую вам отсканировать книгу Pro Drupal Development , которая поможет вам лучше понять, как работает Drupal. В Drupal легко запутаться, если вы не знаете, что делаете, поэтому лучше всего посмотреть, как его предполагается сделать первым

...