Некорректно работает функция: drupal_is_front_page

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

Аватар пользователя naumov13 naumov13 9 октября 2007 в 12:14

проблема обнаружилась после обновления с версии 5.1 на 5.2.
на первой странице стали некорректно применяться стили.

у меня в файле page.tpl.php эта функция проверяет, первая ли страница открывается?
и если так, то нужные элементы отмечаются, как принадлежащие к определенному классу.
после чего уже к ним применяются необходимые стили.

для поиска причины создал блок содержащий эту функцию и выводящий только "1" или "0" (front page / not front page).
и что же - на всех страницах висит "0".
примечательно, что на свеже-поставленной версии 5.2. тот же блок честно показывает 1 на первой странице.

проверил в настройках сайта название нода, указанное как первая страница, все правильно написано.
да и не в этом дело если так подумать. сама то страница открываться не перестала.

вопрос собственно в том, как вернуть функции адекватное поведение.

Комментарии

Аватар пользователя Гость Гость (не проверено) 9 октября 2007 в 18:47

ну так в чем вопрос, посмотрите исходный код функции, по какому принципу работает

Аватар пользователя naumov13 naumov13 10 октября 2007 в 12:47

итак, что у меня было:

на 5.1
в настройках сайта первая страница была прописана как "frontpage"
но такой не существовало. существовали 2 других "ru/frontpage" и "en/frontpage"
несмотря на это - все прекрасно работало. каждая из них откорывалась на своем языке. как я понимаю, это заслуга модуля i18n.
функцией же любая из этих страницы тоже интерпретировалась - как ПЕРВАЯ.

на 5.2
открываются сами страницы исправно. все хорошо.
но вот функция это отрицает. она теперь честно ищет "frontpаge" и опять же честно разводит руками мол нету такой, и выдает -

фалсе.
и как следствие на страницах у меня снова непримененные стили.

модули все подключены. все точь в точь как было до апгрейда.
я даже сначала грешил что это происходит в процессе - отключения-включения модулей.
и рискнул переделать апдейт не выключаяя ни модули ни тему. результат тот же.

теперь что касается исходного кода. смотрим файл includes/path.inc

function drupal_is_front_page()

для 5.2
единственная строчка кода, упрощенно выглядит так

.....drupal_get_normal_path(....

тогда как в 5.1

if (function_exists('i18n_get_normal_path'))
{
...i18n_get_normal_path(.....
}
else
{
...drupal_get_normal_path(...
}

то есть если раньше функция drupal_is_front_page спрашивала помоши у модуля i18n, то теперь этого не происходит.
кого это не устраивает, смело меняем тело функции на предшевствующую версию и будет вам счастье Smile