Недочет разработчиков? Ну похоже вроде...

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

Аватар пользователя Химический Али Химический Али 18 апреля 2008 в 10:57

Функция menu_primary_links() из menu.inc (строка 832) формирует массив ссылок с параметрами для дальнейшего формирования html-кода.

В частности, если пункт меню активен, в конец стиля она дописывает модификатор "-active":

if (menu_in_active_trail_in_submenu($cid, $pid)) {
$index .= "-active";
}

Мне это показалось неверным, т.к. для написания CSS-стиля для этого пункта было бы лучше использовать модификатор "[пробел]active", ведь куда удобнее использовать стиль типа li.active, нежели кучу типа li.menu-3-2-1-active.

Прав ли я?

И вопрос в довесок: как переопределить для своей темы функцию menu_primary_links()? Я скопировал ее в свой template.php, переименовал в phptemplate_menu_primary_links() и изменил под себя (исправил вышеописанный "баг"), но никакого действия это не возымело. Наверное, ее нельзя переопределить?

зы. пока я тупо поправил menu.inc, но меня это не устраивает.

Комментарии

Аватар пользователя Химический Али Химический Али 18 апреля 2008 в 11:41

Попробовал темизировать ее, никакой реакции.

Придумал еще ход: разбирать массив $primary_links в page.tpl.php перед выводом, но этот вариант мне тоже не нравится.

Аватар пользователя goodboy goodboy 18 апреля 2008 в 13:15

У меня в page.tpl.php вот так сделано :

        <?php if (is_array($primary_links)) : ?>
        <ul>
        <?php $primary_link_first = true; foreach ($primary_links as $link_id => $link) : ?>
        <li<?php $primary_link_class = ""; if (stristr($link_id, 'active')) $primary_link_class .= "active"; if ($primary_link_first) $primary_link_class .= " first"; $primary_link_class = trim($primary_link_class); if ($primary_link_class) print ' class="'.$primary_link_class.'"'; $primary_link_first = false; ?>><?php print l($link['title'], $link['href'], $link['attributes'], $link['query'], $link['fragment']) ?></li>
        <?php endforeach; ?>
        </ul>
        <?php endif; ?>
Аватар пользователя FuN_ViT FuN_ViT 18 апреля 2008 в 17:49

У меня дергается из page.tpl.php своя функция

<? if (isset($primary_links))
                                      print phptemplate_gen_menu( $primary_links, array('class' => 'links primary-links'),$node)?>

которая находится в template.php

Аватар пользователя suna suna 24 сентября 2012 в 19:26

Ребят, подскажите пожалуйста...начал устанавливать новую тему professional_theme... и после установки на экране вся информация пропала...написана ошибка следующая

Fatal error: Call to undefined function i18n_menu_translated_tree() in /home/b/blabla/blabla.ru/public_html/sites/all/themes/themes/professional_theme/templates/page.tpl.php on line 79

подскажите пожалуйста что делать? как вернуть старую тему и всю информацию?