Смешивается дизайн

Аватар пользователя speedsoft speedsoft 3 июня 2008 в 1:44

Сразу оговорюсь, Друпал осваиваю меньше недели, поэтому прошу сразу не бить. У меня вот какая проблема. Я для админки назначил один стиль, а для сайта другой. при работе с админкой он в некоторых случаях (например при добавлении страницы) скидывает меня на стиль сайта. почему так происходит?

Комментарии

Аватар пользователя mityok mityok 3 июня 2008 в 1:55

Потому что оформление админки относиться ко всем адресам, которые отвечают маске "admin/*", а страница добавления материала имеета адрес вида "node/add/......", аналогично страница редактирования имеет адрес вида "node/edit/...."

Аватар пользователя gorr gorr 3 июня 2008 в 12:05

можно попробовать создать свой модуль, в котором
global $theme;
if(arg(0) == 'node' && (arg(1)=='add' || (is_numeric(arg(1)) && arg(2) == 'edit'))) {
$theme == 'garland';
}

Аватар пользователя speedsoft speedsoft 3 июня 2008 в 13:28

хм... я только неделю мучаю друпал, и уже своим модули? Smile
пока рановато, буду изыскивать другие пути.

неужели эта недокументированная возможность только меня беспокоит? навернякак ее уже решал кто-то

Аватар пользователя wanders.32 wanders.32 3 июня 2008 в 13:43

подобная проблема, страница admin/build/modules . при сабмите админ дизайн слетает, показывается дизайн сайта, и при рефреше страницы - админ дизайн возвращается

Аватар пользователя speedsoft speedsoft 5 июня 2008 в 15:31

Я упертый. gorr огромное спасибо. перелапатил кода немеренно (но зато поосвоился Smile )

вот решение проблемы, которое я нашел. Думаю многим пригодится. (еще раз спасибо gorr)

Находим функцию function init_theme() в файле theme.inc

function init_theme() {
global $theme, $user, $custom_theme, $theme_engine, $theme_key;

// If $theme is already set, assume the others are set, too, and do nothing
if (isset($theme)) {
return;
}

drupal_bootstrap(DRUPAL_BOOTSTRAP_DATABASE);
$themes = list_themes();

// Only select the user selected theme if it is available in the
// list of enabled themes.
$theme = $user->theme && $themes[$user->theme]->status ? $user->theme : variable_get('theme_default', 'garland');

// И ВОТ СЮДА ВСТАВЛЯЕМ КОД, ПРЕДЛОЖЕННЫЙ GOORом
if(arg(0) == 'node' && (arg(1)=='add' || (is_numeric(arg(1)) && arg(2) == 'edit'))){
$theme = 'garland'; //имя вашей темы для админки.
}

Если я не правильно сделал (но так у меня работает), то готов выслушать критику.

Аватар пользователя gorr gorr 5 июня 2008 в 16:29

Да не за что, я из кода этой функции и исходил, но лучше вынести код в отдельный модуль, а то потом забудете, что вносили изменения в ядро и при обновлении версии, весьма возможном- бац, сюрприз!:)

Аватар пользователя speedsoft speedsoft 5 июня 2008 в 21:52

для меня пока слова создать модуль, вынести в отдельный модуль в новинку (в плане друпала). наберусь опыта - обязательно вынесу.

Аватар пользователя Splinter Splinter 6 июня 2008 в 7:30

а в чем преемущества когда для админки и просто для пользователя разные темы стоят?

Аватар пользователя wanders.32 wanders.32 9 июня 2008 в 17:21

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

Аватар пользователя speedsoft speedsoft 10 июня 2008 в 0:00

Удобство еще в том, что если за 10 сайтами следит один человек, то ему не нужно к каждому дизу привыкать. у него есть один, в котором он хорошо ориентируется и никаких проблем. ему плевать как выглядит сам сайт.