Как совместить в template.php два препроцесса, вместе никак не работают:
function MYTHEME_preprocess_page(&$vars) {
global $user;
if (!$user->uid && arg(0) != 'user') {
drupal_add_library('system', 'ui.dialog');
drupal_add_library('system', 'effects.explode');
drupal_add_library('system', 'effects.slide');
$vars['login_button'] = l(t('Login'), 'user', array('attributes' => array('class' => array('user-login'))));
}
if (isset($vars['node'])) {
$vars['theme_hook_suggestions'][] = 'page__type__'. $vars['node']->type;
$vars['theme_hook_suggestions'][] = "page__node__" . $vars['node']->nid;
}
if (!empty($variables['page']['#views_contextual_links_info']['views_ui']['view_display_id'])) {
$variables['theme_hook_suggestions'][] = 'page__views__' . $variables['page']['#views_contextual_links_info']['views_ui']['view_display_id'];
}
// Page шаблон на основе предложений от URL псевдоним
$alias=drupal_get_path_alias($_GET['q']);
$args=explode('/', $alias);
if ($args[0]=='premium') {
$vars['theme_hook_suggestions'][] = 'page__premium';
}
global $user;
if (!$user->uid && arg(0) != 'user') {
drupal_add_library('system', 'ui.dialog');
drupal_add_library('system', 'effects.explode');
drupal_add_library('system', 'effects.slide');
$vars['login_button'] = l(t('Login'), 'user', array('attributes' => array('class' => array('user-login'))));
}
if (isset($vars['node'])) {
$vars['theme_hook_suggestions'][] = 'page__type__'. $vars['node']->type;
$vars['theme_hook_suggestions'][] = "page__node__" . $vars['node']->nid;
}
if (!empty($variables['page']['#views_contextual_links_info']['views_ui']['view_display_id'])) {
$variables['theme_hook_suggestions'][] = 'page__views__' . $variables['page']['#views_contextual_links_info']['views_ui']['view_display_id'];
}
// Page шаблон на основе предложений от URL псевдоним
$alias=drupal_get_path_alias($_GET['q']);
$args=explode('/', $alias);
if ($args[0]=='premium') {
$vars['theme_hook_suggestions'][] = 'page__premium';
}
// any other page preprocessing here
}
как не пробовал либо то, либо другое не работает.
Комментарии
Наверно надо использовать одну функцию а содержимое второй вставить в первую, так как 2 их быть не может в template.php, если же нужно разделить их по времени после того как отработаю все _preprocess можно воспользоваться функцией _process которая выполняется позже.
Решается с помощью Ctrl+C и Ctrl+V
<?php
function ИМЯТЕМЫ_preprocess_page(&$vars) {
global $user;
if (!$user->uid) {
drupal_add_library('system', 'ui.dialog');
$vars['login_button'] = l(t('Login'), 'user', array('attributes' => array('class' => array('user-login'))));
}
if (isset($vars['node'])) {
$vars['theme_hook_suggestions'][] = 'page__type__'. $vars['node']->type;
$vars['theme_hook_suggestions'][] = "page__node__" . $vars['node']->nid;
}
}
?>
Так пробовал, должно идти, но не идет:
function ИМЯТЕМЫ_preprocess_page(&$vars) {
global $user;
if (!$user->uid) {
drupal_add_library('system', 'ui.dialog');
$vars['login_button'] = l(t('Login'), 'user', array('attributes' => array('class' => array('user-login'))));
}
if (isset($vars['node'])) {
$vars['theme_hook_suggestions'][] = 'page__type__'. $vars['node']->type;
$vars['theme_hook_suggestions'][] = "page__node__" . $vars['node']->nid;
}
}
Parse error: syntax error, unexpected
есть другие предложения?
Совмещать я пробовал, но первая не работает без "$hook", а вторая с онной
Да. На вопрос что такое syntax error легко ответит гугл.
global $user;
// Подключаем библиотеку только для анонимов
if (!$user->uid) {
drupal_add_library('system', 'ui.dialog');
// Добавляем ссылку, при нажатии на которую будет показываться логин
$vars['login_button'] = l(t('Login'), 'user', array('attributes' => array('class' => array('user-login'))));
}
}
Что-то я сегодня туплю.
Действительно все работает. Еще раз огромное спасибо, проверю все и поставлю решено!