Ссылка в горизонтальном меню

Автор Sp, 07 ноября 2016, 10:59:44

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Sp

Привет, уважаемые!

Хочу добавить к ссылкам входа и регистрации - якоря, чтобы удобно было сразу вводить данные в форму, а не прокручивать страницу вниз.

Ссылку хочу добавить в горизонтальное меню, в две кнопки: Вход и Регистрация.
- ссылка Вход /index.php?action=login
- ссылка Регистрация /index.php?action=register

Код этого меню находится в файле шаблона index.template.php.

Код состоит из функции и вывода меню на странице:

// Generate a strip of buttons.
function template_button_strip($button_strip, $direction = 'top', $strip_options = array())
{
global $settings, $context, $txt, $scripturl;

if (!is_array($strip_options))
$strip_options = array();

// List the buttons in reverse order for RTL languages.
if ($context['right_to_left'])
$button_strip = array_reverse($button_strip, true);

// Create the buttons...
$buttons = array();
foreach ($button_strip as $key => $value)
{
if (!isset($value['test']) || !empty($context[$value['test']]))
$buttons[] = '
<li><a' . (isset($value['id']) ? ' id="button_strip_' . $value['id'] . '"' : '') . ' class="button_strip_' . $key . (isset($value['active']) ? ' active' : '') . '" href="' . $value['url'] . '"' . (isset($value['custom']) ? ' ' . $value['custom'] : '') . '><i class="fa fa-'.$key.' fa-fw"></i><span>' . $txt[$value['text']] . '</span></a></li>';
}

// No buttons? No button strip either.
if (empty($buttons))
return;

// Make the last one, as easy as possible.
$buttons[count($buttons) - 1] = str_replace('<span>', '<span class="last">', $buttons[count($buttons) - 1]);

echo '
<div class="buttonlist', !empty($direction) ? ' float' . $direction : '', '"', (empty($buttons) ? ' style="display: none;"' : ''), (!empty($strip_options['id']) ? ' id="' . $strip_options['id'] . '"': ''), '>
<ul class="nav nav-pills">',
implode('', $buttons), '
</ul>
</div>';
}

Вывод на странице:

echo '', template_menu(), '';
Вопрос:

Из какого файла, скрипт меню тянет нужные мне две ссылки?

Спасибо, заранее.

Sp



Sp

Но я так и не понял, откуда массив берет эти ссылки?
Можете конкретно указать файл, где эти ссылки ?action=login и ?action=register - лежат?
В базе их тоже не нашел.

digger®

Цитата: Sp от 07 ноября 2016, 17:27:46Но я так и не понял, откуда массив берет эти ссылки?
Можете конкретно указать файл, где эти ссылки ?action=login и ?action=register - лежат?
В базе их тоже не нашел.
Вам не нужно знать где они лежат
В цикле
foreach ($button_strip as $key => $value)
{
if (!isset($value['test']) || !empty($context[$value['test']]))
$buttons[] = '
<li><a' . (isset($value['id']) ? ' id="button_strip_' . $value['id'] . '"' : '') . ' class="button_strip_' . $key . (isset($value['active']) ? ' active' : '') . '" href="' . $value['url'] . '"' . (isset($value['custom']) ? ' ' . $value['custom'] : '') . '><i class="fa fa-'.$key.' fa-fw"></i><span>' . $txt[$value['text']] . '</span></a></li>';
}
Ловите по условию $value['id'] == 'login' и добавляйте к $value['url'] свой якорь

Sp

#5
Нет, этот код к кнопкам горизонтального меню не имеет отношение.
Для проверки, я удалил этот код, из шаблона, а кнопки выводятся, как и раньше.
И это не из кеша, а в живую. Для проверки удалил другую функцию и её удаление сразу повлияло на вывод на странице.
Поэтому это не кеш.
Я там выше я написал, какой код отвечает за кнопки горизонтального меню.
И там за ссылку отвечает:
', $button['href'], '

Где берет ссылку непонятно мне.


Sp

Добавил и к нужным ссылкам добавились якоря.
Эти ссылки видны, когда пользователь неавторизирован, так и должно быть. То что нужно.

Если залогиниться, то эти две ссылки должны скрываться.
После добавления якорей в ссылки, в меню появились две ссылки вида:

<li id="button_login">
 <a href="#login">
 <div class="firstlevel"></div>
 </a>
</li>

<li id="button_login">
 <a href="#register">
 <div class="firstlevel"></div>
 </a>
</li>


Можете добавить условие, чтобы якоря не генерировали ссылки при авторизации?

digger®

Цитата: Sp от 07 ноября 2016, 19:27:52Можете добавить условие, чтобы якоря не генерировали ссылки при авторизации?

if (!empty($context['menu_buttons']['login'])) $context['menu_buttons']['login']['href'] .= '#login';
if (!empty($context['menu_buttons']['register'])) $context['menu_buttons']['register']['href'] .= '#register';

Sp

Да, теперь как надо.

Большое спасибо!