Pull to refresh

Comments 38

UFO landed and left these words here
Да, хорошие статьи. Работаю с Joomla/Joostina, но так же сейчас буду осваивать и Drupal.
Добавил в избранное себе, спасибо.
Кстати, раз уж упоминаете ZEN, объясните простому нубу — почему бы просто ZEN и не использовать в качестве основы для своей темы? В чем принципиальное отличие вашего варианта? ZEN, как ни крути, уже законченное решение — кучу всего можно сделать вообще не трогая сами шаблоны, а тупо через CSS. Ну и вообще — работаешь с одной стороны не с совсем голым листом, а с другой — не надо ничего именно переделывать — только дополнять большей частью. Ну а это уж проблем не доставляет — це ж Друпал…
Давно делаю темы на ZEN. Надоело каждый раз вычищать лишние стили и другие «фишки» родительской темы. Наконец то добрался и сделал идеальный (для меня, конечно же) шаблон темы отвязанной от ZEN. Мне было необходимо выделить шапку с подвалом в отдельные шаблоны и обрабатывать отдельно каждый регион. К тому же, такая структура темы как у меня, мне кажется, более удобна и наглядна. Ну и плюс — не надо таскать с собой родительскую тему.
Мммм… А что именно вы там вычищаете? Там, по-моему, кроме меню и табов и вычищать-то нечего.
Опять же — может быть стоило в целях расширяемости и т.п. оформить вашу тему в качестве подтемы ZEN? Чтобы и все фишки ZEN остались и все, что вы пишите — про отдельные файлы и т.п.
Практически всё что я тут изложил позаимствовано из темы ZEN, переделано и улучшено. Что такого вы в ней нашли? Я не вижу особых бонусов в дочерних темах.
Я понял вашу позицию. :-) Спасибо.
Тогда уж присмотреться к теме basic. Она является «вычищенным вариантом» zen, регулярно обновляется, уже есть RC для drupal7, поддерживает skinr и прочие приятности…
Осталось в себе креативность работы развить) остальное уже понятно
Забыли сказать как заставить Drupal увидел изменения в info для темы.
Хотя, о вариантах темизации в Drupal можно писать бесконечно, сколько разработчиков, столько и вариантов будет :).
info как и template.php кэшируются. Чтобы друпал увидел изменения, надо почистить кэш.
;) нужно обновить реестр тем /admin/build/themes/select просто зайти и пересохранить его, или дернуть через API
забыли про очень важную переменную $closure.
Очень важная переменная $closure определяет регион под футером, если мне память не изменяет. У меня в теме её нет.
То есть данные, записываемые в неё, у вас нигде не выводятся или записываются в другую переменную?
Просто для примера, могу сказать, что если не сделать вывод $closure в page.tpl.php, то не будут работать как минимум два модуля: Administration menu и FCKeditor.
admin_menu и ckeditor работают, не волнуйтесь =) Если хотите, добавьте $closure в page.tpl.php
Спасибо, исправлю. В $closure некоторые модули добавляют скрипты.
* — $closure: Final closing markup from any modules that have altered the page.
* This variable should always be output last, after all other dynamic content.
не знаю как у вас, но я долго бился со статистикой от googla по конверcии магазина ubercart, пока не поставил этот closure в тему.
Вы не поверите. И у меня $closure тоже нужен.
В том и минус малообкатанных тем, косяки в них вылазят с некоторыми модулями…

Я одно время игрался с генезисом, так там модуль аякс-комментариев не работал, в теме АТСК не хватало стандартный переменных и т.д…

В общем нафиг-нафиг, теперь только Zen, тем более его отвязать от родительской темы легче легкого, и css использовать можно только свои, без его зоопарка :)
zen можно использовать еще вот так:

MYTHEME.info
...

base theme = zen 

  ; Set the default settings to be used in theme-settings.php
settings[zen_block_editing]        = 1
settings[zen_breadcrumb]           = yes
settings[zen_breadcrumb_separator] = ' › '
settings[zen_breadcrumb_home]      = 1
settings[zen_breadcrumb_trailing]  = 1
settings[zen_breadcrumb_title]     = 0
settings[zen_rebuild_registry]     = 1
settings[zen_wireframes]           = 0

...


theme-settings.php
<?php
// $Id: theme-settings.php,v 1.7 2008/09/11 09:36:50 johnalbin Exp $

// Include the definition of zen_settings() and zen_theme_get_default_settings().
include_once './' . drupal_get_path('theme', 'zen') . '/theme-settings.php';


/**
 * Implementation of THEMEHOOK_settings() function.
 *
 * @param $saved_settings
 *   An array of saved settings for this theme.
 * @return
 *   A form array.
 */
function MYTHEME_settings($saved_settings) {

  // Get the default values from the .info file.
  $defaults = zen_theme_get_default_settings('MYTHEME');

  // Merge the saved variables and their default values.
  $settings = array_merge($defaults, $saved_settings);

  /*
   * Create the form using Forms API: http://api.drupal.org/api/6
   */
  $form = array();
  /* -- Delete this line if you want to use this setting
  $form['MYTHEME_example'] = array(
    '#type'          => 'checkbox',
    '#title'         => t('Use this sample setting'),
    '#default_value' => $settings['MYTHEME_example'],
    '#description'   => t("This option doesn't do anything; it's just an example."),
  );
  // */

  // Add the base theme's settings.
  $form += zen_settings($saved_settings, $defaults);

  // Remove some of the base theme's settings.
  unset($form['themedev']['zen_layout']); // We don't need to select the base stylesheet.

  // Return the form
  return $form;
}


в результате имеете дополнительные настройки темы от zen
А что мешает дополнительные настройки для своей темы сделать?
если достаточно настроек от zen, то и велосипед изобретать не надо.
если надо добавить свои, то их очень просто добавить (см. $form['MYTHEME_example']).
Я писал шаблон для создания тем в будущем. Мне половины стандартных настроек то не надо, не говоря уж о других. Вы можете использовать приведенный мной код на свой вкус. Повторюсь, я ставил цель не использовать родительские темы, я ставил цель сделать гибкую свою автономную тему. А что использовать — ваш выбор.
Мне половины стандартных настроек то не надо

я ставил цель сделать гибкую свою автономную тему

Как-то не вяжется ;)
А вы статью читали? Там в конце написано в чём гибкость
Я Вас понял.
Удачи ;)
Тема ZEN бесспорно хороша, просто цель была другая.
Есть достаточно хорошая книга на тему разработки тем :):
Drupal 6 Themes (Packt)

pdf'ник гуглится достаточно быстро.
Спасибо, почитаю на досуге.
Отличный материал для начинающих, но ваш вариант темизации отказался работать. В частности те самые header и footer не отображают содержимое в шаблоне page.tpl.php. Возможно я делаю что то не так, хотя все достаточно очевидно. Может есть какие то особые параметры, которые необходимо задать?
Спасибо огромное за статью. Только есть один вопросец. Как можно вытащить картинки из той папки images, которую мы создали в sites/all/mytheme/images/?
В статье она помоему фигурирует только один раз в info файле. В остальном я использую картинки из CSS, так что смело можете кидать их куда угодно.
есть шаблон для вывода определенного типа данных — в какую директорию его поместить что бы все темы его видели, надо для мультисайтовой инсталяции друпала
Поместите его в каждую тему либо создайте свой модуль и пропишите в нем шаблон.
В header.tpl.php переменная $front_page — выдает адрес главной страницы, что бы определить главная или нет в preprocess-page.inc в переменных для шапки определил $is_front. Плюс для удобства определил $head_title,
$head, $styles, $scripts.
Хороший пост. Может кто подскажет еще как вывести искомую строку. Не могу найти переменную. Количество результатов @count, а вот переменную самой стоки какую ищу не могу найти.
Only those users with full accounts are able to leave comments. Log in, please.