Панели Drupal, отсутствуют вкладки «панель редактирования»

#php #drupal #drupal-6 #drupal-themes

#php #drupal #drupal-6 #drupal-темы

Вопрос:

Я заметил кое-что странное при переключении тем. В garland я вижу кнопки вкладок «Просмотр» и «Панель редактирования»; но когда я переключаюсь обратно на свою пользовательскую тему, она исчезает.

У меня уже есть строка tabs:

 <?php if ($tabs): print '<ul class="tabs primary">'. $tabs .'</ul></div>'; endif; ?>
  

Но это просто не отображается. Почему это?

Вот часть кода для page.tpl.php:

     <div class="main-container">
<div class="mcontent">
        <div id="content-header">
      <?php if ($mission): print '<div id="mission">'. $mission .'</div>'; endif; ?>
      <?php if ($tabs): print '<div id="tabs-wrapper" class="clear-block">'; endif; ?>
      <?php if ($title): print '<h2'. ($tabs ? ' class="with-tabs"' : '') .'>'. $title .'</h2>'; endif; ?>
      <?php if ($tabs): print '<ul class="tabs primary">'. $tabs .'</ul></div>'; endif; ?>
      <?php if ($tabs2): print '<ul class="tabs secondary">'. $tabs2 .'</ul>'; endif; ?>
      <?php if ($show_messages amp;amp; $messages): print $messages; endif; ?>
      <?php print $help; ?>
        </div> <!-- /#content-header -->

<?php print $content; ?> 
</div>
</div>
  

Ответ №1:

Я использовал этот код во многих пользовательских темах до сих пор без каких-либо проблем.

Трудно понять, не видя сайт / ваш код, но есть пара возможностей:

  • очистка кэша (Производительность> Очистить кэш сайта)
  • убедитесь, что переменная $ tabs находится в page.tpl.php , а не node.tpl.php etc.

Другие вещи, которые могут быть (но, возможно, нет, если работают другие темы):

  • у вашего пользователя нет разрешений на использование этого формата ввода (PHP-код, полный HTML и т.д.)
  • сеанс не работает или вы вышли из системы, находясь на этих страницах (конечно, вы сразу увидите это, если, например, появится ваше меню администратора. Хотя я видел, как это происходило в некоторых настройках)

Обычно либо код находится не в том месте, он скрыт (с помощью CSS / форматирования страницы), либо у пользователя нет прав на его просмотр.

Если ничего из вышеперечисленного не работает, вы можете захотеть восстановить разрешения (в Drupal 6, Управление контентом> Настройки публикации> Восстановить разрешения) или поиграть с включением существующих разрешений, чтобы увидеть, является ли это причиной.

Комментарии:

1. Привет, @cache: уже сделал это, похоже, не работает @ $ tabs: ну, это уже в page.tpl.php , ничего в node.tpl.php но добавление этого в node.tpl ничего не дает @user: я администратор : ( Я должен быть в состоянии видеть, что … у всего остального контента, такого как страницы или истории, есть вкладки редактирования .. за исключением panel @ css: хм, возможно, нет, потому что я только что проверил источник, и div-оболочка tabs пуста : o … Я не помню, чтобы отключал вкладки редактирования панели…

2. Я предполагаю, что это может быть что-то в вашей теме, поскольку тема Garland работает. Вы также можете захотеть проверить template.php файл в вашей теме (или в базовой теме, если применимо), чтобы проверить, $var['tabs'] не переопределяется ли _preprocess_page. Смотрите drupal.org/node/936918 для примера, как это может вызвать проблемы.

Ответ №2:

Я нанял кого-то, чтобы устранить проблему, вот что сделано:

     <?php
/**
* Override of theme_menu_local_tasks().
* Add argument to allow primary/secondary local tasks to be printed
* separately. Use theme_links() markup to consolidate.
*/
function kidstoria_menu_local_tasks($type = '') {
  if (module_exists('ctools')) {

    if ($primary = ctools_menu_primary_local_tasks()) {
        $primary = $primary;
      }
      if ($secondary = ctools_menu_secondary_local_tasks()) {
        $secondary = $secondary;
      }
  }
  else
  {

    if ($primary = menu_primary_local_tasks()) {
        $primary = $primary;
      }
      if ($secondary = menu_secondary_local_tasks()) {
        $secondary = $secondary;
      }

  }

  switch ($type) {
    case 'primary':
      return $primary;
    case 'secondary':
      return $secondary;
    default:
      return $primary . $secondary;
  }
}