Как я могу создать модуль предварительного просмотра темы в Drupal 6? - PullRequest
0 голосов
/ 06 декабря 2011

Я пытаюсь создать простой модуль для предварительного просмотра тем в Drupal. У каждого пользователя есть свой собственный узел, и я хочу показать ему предварительный просмотр того, как будет работать тема, без фактического включения ее. Прямо сейчас это то, что у меня есть:

function theme_preview_info($new_theme, $node_id)
{
    global $custom_theme;
    $custom_theme = $new_theme;

    $node = node_load($node_id);

    return $node->body;

}

Будет отображаться содержимое узла, но форматирование все перепутано. Как я могу правильно отобразить узел точно так же, как если бы я пошел в узел / 1, но вместо этого просмотреть его в theme_preview / theme_name / 1?

1 Ответ

5 голосов
/ 06 декабря 2011

Есть ли у вас опыт создания модулей Drupal?

Если нет, вы можете обнаружить, что то, что вы пытаетесь сделать, не так просто. Вам понадобится некоторый интерфейс, чтобы пользователь мог выбрать, какую тему он просматривает. Затем вам нужно будет подключиться к маршрутизации Drupal, чтобы направить пользователей к соответствующему узлу с помощью предварительного просмотра выбранной темы на основе настроенного псевдонима пути (theme_preview / theme_name / 1). Скорее всего, есть много других дополнительных ресурсов, которые я не ожидаю в данный момент.

Если у вас есть опыт создания модулей Drupal, это может не иметь большого значения.


Переключение темы, вероятно, самая простая часть. Если вы находитесь в Drupal 7, вы можете использовать реализацию hook_custom_theme (), чтобы изменить тему, используемую для определенных узлов, на основе ваших предполагаемых критериев (то есть, какую тему выбрал пользователь).

http://api.drupal.org/api/drupal/modules--system--system.api.php/function/hook_custom_theme/7

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

Я не уверен, как именно вы будете создавать интерфейс переключения тем пользователя или направлять пользователя к определенному псевдониму пути для каждой выбранной темы.

Вы также можете захотеть заглянуть в модуль ThemeKey (http://drupal.org/project/themekey). Возможно, вы можете использовать этот модуль как-то просто для настройки ab-версии каждого узла для просмотра в каждой отдельной теме.

...