Темизация формы авторизации, не получается! [решено]

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

Аватар пользователя Sever_a Sever_a 25 ноября 2012 в 21:25

Вообщем нашел вроде работающее решение, но у меня оно не работает ((

После добавления строк -

<?phpfunction MYTHEME_preprocess_page(&$variables, $hook) { 
  global $user;
 
  /* Login box */
  if($user->uid) {  // Внешний вид для вошедших пользователей
          // Приветствие пользователя
      $login_box = t('Добрый день, !username!', array('!username' => theme('username', array('account' => $user))));
          // Вставляем ссылки на профиль и выход
      $login_box .= l(t('Profilis'), 'user', array('attributes' => array(
            'id' => 'user-profile',
            'class' => array('user-link'),
            )));
      $login_box .= l(t('Atsijungti'), 'user/logout', array('attributes' => array(
            'id' => 'user-exit',
            'class' => array('user-link'),
            )));
      $variables['page']['login_box']['#markup'] = '<div class="logged">'.$login_box.'</div>';
  } else { // Выводим блок для пользователей которые не вошли в систему
      $variables['page']['login_box'] = drupal_get_form('user_login_block');
  }?>

выдает Parse error: syntax error, unexpected $end in /public_html/sites/all/themes/.../template.php on line 261 Не могу понять как это решить, вроде все правильно вставил!

Комментарии

Аватар пользователя Sever_a Sever_a 25 ноября 2012 в 22:45

Не помогло, извиняюсь, забыл написать при добавлении в конце «}» выдает другую ошибку - fatal error: cannot redeclare ...

Аватар пользователя HydroBlast HydroBlast 25 ноября 2012 в 23:14

Содержимое изнутри функции что вы написали перенесите внутрь функции , которая уже существует .

Содержимое - это то , что находится после фигурной скобки за именем функции .

Смысл в том чтобы не было одинаковых имен функций .

Аватар пользователя Sever_a Sever_a 25 ноября 2012 в 23:18

Только что попробовал сделать, еще же нужно перенести переменные в начале функции, правильно, в итоге получилось так -

<?phpfunction garland_preprocess_page(&$vars, &$variables, $hook) {
  // Move secondary tabs into a separate variable.
  $vars['tabs2'] = array(
    '#theme' => 'menu_local_tasks',
    '#secondary' => $vars['tabs']['#secondary'],
  );
  unset($vars['tabs']['#secondary']);

  if (isset($vars['main_menu'])) {
    $vars['primary_nav'] = theme('links__system_main_menu', array(
      'links' => $vars['main_menu'],
      'attributes' => array(
        'class' => array('links', 'inline', 'main-menu'),
      ),
      'heading' => array(
        'text' => t('Main menu'),
        'level' => 'h2',
        'class' => array('element-invisible'),
      )
    ));
  }
  else {
    $vars['primary_nav'] = FALSE;
  }
  if (isset($vars['secondary_menu'])) {
    $vars['secondary_nav'] = theme('links__system_secondary_menu', array(
      'links' => $vars['secondary_menu'],
      'attributes' => array(
        'class' => array('links', 'inline', 'secondary-menu'),
      ),
      'heading' => array(
        'text' => t('Secondary menu'),
        'level' => 'h2',
        'class' => array('element-invisible'),
      )
    ));
  }
  else {
    $vars['secondary_nav'] = FALSE;
  }

  // Prepare header.
  $site_fields = array();
  if (!empty($vars['site_name'])) {
    $site_fields[] = $vars['site_name'];
  }
  if (!empty($vars['site_slogan'])) {
    $site_fields[] = $vars['site_slogan'];
  }
  $vars['site_title'] = implode(' ', $site_fields);
  if (!empty($site_fields)) {
    $site_fields[0] = '<span>' . $site_fields[0] . '</span>';
  }
  $vars['site_html'] = implode(' ', $site_fields);

  // Set a variable for the site name title and logo alt attributes text.
  $slogan_text = $vars['site_slogan'];
  $site_name_text = $vars['site_name'];
  $vars['site_name_and_slogan'] = $site_name_text . ' ' . $slogan_text;
  
global $user;
 
  /* Login box */
  if($user->uid) {  // Внешний вид для вошедших пользователей
          // Приветствие пользователя
      $login_box = t('Добрый день, !username!', array('!username' => theme('username', array('account' => $user))));
          // Вставляем ссылки на профиль и выход
      $login_box .= l(t('Profilis'), 'user', array('attributes' => array(
            'id' => 'user-profile',
            'class' => array('user-link'),
            )));
      $login_box .= l(t('Atsijungti'), 'user/logout', array('attributes' => array(
            'id' => 'user-exit',
            'class' => array('user-link'),
            )));
      $variables['page']['login_box']['#markup'] = '<div class="logged">'.$login_box.'</div>';
  } else { // Выводим блок для пользователей которые не вошли в систему
      $variables['page']['login_box'] = drupal_get_form('user_login_block');
  }  
}?>

Ругаться стал на строку - <?php$variables['page']['login_box']['#markup'] = '<div class="logged">'.$login_box.'</div>';?> Все равно ругается - Fatal error: Cannot use string offset as an array in

Аватар пользователя Sever_a Sever_a 26 ноября 2012 в 0:18

http://gamover.net/blog/delaem-formu-vhoda-v-shapke-sayta7x.html
А вообще уже по всякому пробовал, не получается объединить эти функции, пробовал убрать уже запущенную функцию, оставить только нужный мне вариант, все работает, НО ругается в админке на отсутствие в template.php упоминаний о примари меню и секондари меню, а также о названии, слогане сайта.

Аватар пользователя Sever_a Sever_a 26 ноября 2012 в 1:05

Все, вроде заработало, просто когда я пытался объединить функции, делал это так - function garland_preprocess_page(&$vars, &$variables, $hook), т.е. пытался объединить еще и вводимые переменные, потом сделал так - garland_preprocess_page(&$vars, $hook) и соответственно в теле функции поменял все $variables на $vars, и все заработало.