[РЕШЕНО]Как переключить тему для определенных страниц и определенных ролей ?

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

Аватар пользователя muaddip muaddip 21 ноября 2012 в 19:29

На сайте есть две темы, самописная (написанная с нуля) и для админки тема Seven. Есть 3 группы пользователей (как обычно): незарегистрированный, зарегистрированный и администратор. Дал доступ на создание некоторых материалов незарегистрированными и зарегистрированными пользователями. Соответственно переходя по ссылке типа node/add/type-name у незарегистрированного отображается тема самописная, а для зарегистрированного выводится тема Seven.
Нужно чтобы все роли кроме администратора видели только самописную тему.
Seven не убираю, так как там больше полей, в которых выводится админ. информация.

Понимаю, что нужно делать проверку типа

<?php
global $user;
if (!(
$user->uid===1)) {
    
установка каких-то параметров
}
?>

Только по результатам проверки непонятно что и где устанавливать.
Буду рад любой подсказке.
ПыСы Только если будете тыкать на апи.друпал.орг, то давайте ссылки на страницу конкретно по этой теме, а не на заглавную страницу посвященную темизации Smile

Комментарии

Аватар пользователя muaddip muaddip 22 ноября 2012 в 14:10

ser_house wrote:
Не проще просто отключить редактирование материалов для административной темы?

Грубовато, но подойдет такой вариант. Как переключить редактирование материалов с административной темы на самописную тему Smile
Подскажете?

Аватар пользователя Geldora Geldora 22 ноября 2012 в 3:42

"ser_house" wrote:
Не проще просто отключить редактирование материалов для административной темы?

нет. написал же ТС:

"muaddip" wrote:
Seven не убираю, так как там больше полей, в которых выводится админ. информация

ТС, попробуйте контексты как вариант...

Аватар пользователя muaddip muaddip 22 ноября 2012 в 15:42

Geldora wrote:
Лично я решила по другому: field_group + настройка для каждого типа ноды, отображения + horizontal tabs...

field_group уже используется на этой странице, но я не понимаю вашего решения. При чем здесь field_group и horizontal tabs ? Field group используется для отображения формы, а мне нужно направить всю страницу в нужную тему.
Пункт "настройка для каждого типа ноды, отображения" объясните по подробнее, пожалуйста.

Аватар пользователя ser_house ser_house 22 ноября 2012 в 5:12

"Geldora" wrote:
нет

Geldora, я так понял, у ТС админ. информация для админов...

А контексты вроде тему не переключают, не?

На drupal.org если задать поиск по модулям для "theme", можно найти много чего, в том числе и для переключения тем.

Аватар пользователя ser_house ser_house 22 ноября 2012 в 16:15

"muaddip" wrote:
Как переключить редактирование материалов с административной темы на самописную тему

Если Вы снимите галку в настройках оформления с «Использовать при редактировании документов» для выбранной административной темы, то... )

Контекст тему не переключит, там максимум — вставить текст в page. На дорге есть другие модули, в том числе и для переключения по ролям, адресам и вообще, как душа пожелает.

Только искать надо))

Аватар пользователя muaddip muaddip 22 ноября 2012 в 16:51

ser_house wrote:

Если Вы снимите галку в настройках оформления с «Использовать при редактировании документов» для выбранной административной темы, то... )

Контекст тему не переключит, там максимум — вставить текст в page. На дорге есть другие модули, в том числе и для переключения по ролям, адресам и вообще, как душа пожелает.

Только искать надо))

Да нашел еще позавчера два: самый простойPage theme, и чут-чуть сложнее Content theme.
Последний и стоит сейчас, но тему он почему-то не поменял. Есть у него отладочный подмодуль, который выводит информацию, какая тема на каком этапе определяется, показал следующее:
Default theme: customtheme
Theme customtheme is set by content_theme_custom_theme()
Theme Seven is set by system_custom_theme()

И судя по коду отладчика он выводит через module_implements(), то есть после дефалтной темы пишет, в том порядке, в котором hook_custom_theme() вызывается. И я не могу понять, почему из системного модуля этот хук вызывается уже после кастомного модуля, ведь должно быть наоборот.

Галочку снял, помогло. Спасибо.