Перейти к содержанию
kleo

Не работают анкеры на странице [решено]

Рекомендуемые сообщения

Столкнулся с такой проблемой:Создал новую статью и написал там длинный текст. Чтобы было удобно навигировать, поставил анкеры и сделал вверху страницы ссылки на них.НО в магазине, когда щелкаешь на одну из этих ссылок, открывается почему-то "Главная" !?!Скопировал исходный код этой самой страницы с длинным текстом в Joomla, без каких либо изменений: все работает!!!В чем может быть причина?Заранее признателен!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ужасный вариант, но рабочий.

вместо ссылок типа "якорь на страницу" сделайте ссылки типа "URL" с адресами вида:

http://ваш_сайт/index.php?route=information/information&information_id=номер_статьи#тут_имя_вашего_анкера
  • +1 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тоже встал на эти грабли. Причина в следующем:

В шапке шаблона содержится тег: <base href="http://ваш_домен/" /> который указывает браузеру, что все относительные ссылки нужно делать от корня сайта, а не от текущего адреса страницы.

Решений множество:

1. Удаляем в файле /catalog/view/theme/ваша_тема/template/common/header.tpl строку с этим тегом. Я у себя так и сделал, пока полёт нормальный, глюков не обнаружил, хотя и опасался, что в аяксе что-либо перестанет работать или ещё где.

2. Присваиваем правильное значение переменной $base, это нужно в файле /catalog/controller/common/header.php поправить вот этот код:

if (isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))) {
$this->data['base'] = HTTPS_SERVER;
} else {
$this->data['base'] = HTTP_SERVER;
}

К адресу сервера нужно добавить адрес страницы. Этот способ не пробовал, он по своему эффекту должен быть абсолютно идентичен первому, т.к. при отсутствии в <head> тега <base> за базу принимается текущий адрес.

Странно, что эта ошибка так скромно обсуждается, что, никто не пользует якоря на свих сайтах?

  • +1 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2. Присваиваем правильное значение переменной $base, это нужно в файле /catalog/controller/common/header.php поправить вот этот код:

if (isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))) {
$this->data['base'] = HTTPS_SERVER;
} else {
$this->data['base'] = HTTP_SERVER;
}

Что на что меняем, с base в хеадере только код <base href="<?php echo $base; ?>" его закоментировал, вставил ваш код в ничего не изменилось. Вернее якоря заработали, а некоторые ссылки, например поиск перестали.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.