Как правильно добавить ссылку в главное меню VAM shop

19.03.2010 | Написал

Казалось бы особых проблем при добавлении ссылки в главное меню магазина возникнуть не должно, но есть один нюанс. давайте посмотрим на код:

<div id="menu">
<ul>
<li{$1}><a href="{$mainpage}"><span>{#text_mainpage#}</span></a></li>
{if $account}{if $smarty.session.customer_id}
<li{$2}><a href="{$account}"><span>{#link_account#}</span></a></li>
{/if}{/if}
<li{$3}><a href="{$cart}"><span>{#link_cart#}</span></a></li>
<li{$4}><a href="{$checkout}"><span>{#link_checkout#}</span></a></li>
{if $smarty.session.customer_id}
<li{$5}><a href="{$logoff}"><span>{#link_logoff#}</span></a></li>
{else}
<li{$6}><a href="{$login}"><span>{#link_login#}</span></a></li>
{/if}    
</ul>
</div>

Каждая строка списка имеет свою переменную — li{$1}, li{$2} и так далее. Эти переменные служат для того, чтобы определять текущую страницу и применять к ней стиль current. Другими словами, выделять кнопку со ссылкой на страницу, если мы на ней же и находимся.
Эти переменные записаны в файле includes/header.php в самом конце файла, начиная с:

// Метки для закладок
 
if (strstr($PHP_SELF, FILENAME_DEFAULT)) {
$vamTemplate->assign('1',' class="current"');
}
....................

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

if (strstr($PHP_SELF, FILENAME_REVIEWS)) {
$vamTemplate->assign('9',' class="current"');
}

FILENAME_REVIEWS — в данном случае, метка нужной нам страницы, посмотреть которые можно в файле includes/filenames.php. Цифра 9 в конструкции assign(‘9′,’ class=»current»‘) — новая переменная {$9} в шаблоне.
И еще один пример, для более сложной страницы, например, для страницы «Контакт».

if (strstr($PHP_SELF, FILENAME_CONTENT) && $_GET['coID'] == 7) {
$vamTemplate->assign('10',' class="current"');
}

Как видите, мы добавили && $_GET[‘coID’] == 7, где 7 — соответствующий айди информационной страницы.
Ну, а в меню шаблона, добавляем:

<li{$9}><a href="reviews.php"><span>{#link_reviews#}</span></a></li>
<li{$10}><a href="shop_content.php?coID=7" class="last">
<span>{#link_contact_us#}</span></a></li>

И не забудьте добавить link_reviews и link_contact_us в языковые файлы. Хотя если, язык у Вас только один, то можно просто написать текстом, не используя языковые метки.

Метки:
18 комментариев читателей статьи "Как правильно добавить ссылку в главное меню VAM shop"
  • Александр пишет:

    Прочитал Вашу статью,очень интересный материал,подскажите я не совсем понял,если я хочу в главном меню ссылаться на произвольную статью которая лежит в отдельном файле у меня должна быть заглушка ({$mainpage},
    {$account}и т д)заглушки жестко определенные для index,как создать заглушку?Переход по ссылке как в html не работает.Cпасибо.

  • Евгений Молодецкий пишет:

    {$mainpage} и т.д. ведь не заглушки, а переменные, которые заранее определены. Если Вам нужна ссылка на произвольную страницу, её и указывайте, все сылки прекрасно работают. Правда, я не вижу смысла делать совсем отдельную html-страницу, для этого лучше использовать инфостраницы, html-код там поддерживается, да и вставить отдельную страницу с php-кодом также можно, если положить её в папку media и дать ссылку при создании страницы в админке. Так будет правильней и с точки зрения внесения последующих правок менеджером, не разбирающимся в тонкостях html.
    Если же нужно все же выделение для страницы, которую Вы создали минуя админку, то сначала добавьте ее в includes/filenames.php, дав соответствующее имя, по этому имени можно создать дополнительный код для назначения класса current в includes/header.php, как я описывал.

  • Вячеслав пишет:

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

    как это можно сделать?

    • Евгений Молодецкий пишет:

      Да зачем же велосипед изобретать. Ставить нужно метку бокса поиска — {$box_SEARCH}. Ну и со стилями самого бокса поработать, для нужного Вам вида.

  • керакам пишет:

    Добрый день, а подскажите где еще прописывается меню кроме index.html
    просто пропадают добавленные кнопки в карточке товара.

    • Евгений Молодецкий пишет:

      Во всех html-файлах в корне шаблона. Если для карточки товара сделан отдельный шаблон, то называться он должен product_info.php.html. Если отдельный шаблон не делался, то карточка товара будет описываться index.html

  • керакам пишет:

    спасибо, начал перелопачивать зачем-то паку modules , потом что-то стукнуло в голову и заглянул в корень шаблона. еще раз спасибо.

  • Евгений Молодецкий пишет:

    В папке module лежат «внутренние» шаблоны, т.е. непосредственно то, что выводится в метке {$main_content}

  • Александр пишет:

    Евгений, подскажите
    Сделал закладку такого вида
    В другой Магазин >>>
    А в header.php как правильно написать, если не метка,а ссылка?

  • Александр пишет:


    if (strstr($PHP_SELF, В другой Магазин) {
    $vamTemplate->assign('7',' class="current"');
    }

    Такой синтаксис правильный? Помогите плизз написать правильно.

  • Евгений Молодецкий пишет:

    А, вот от чем речь. Нет, так не верно. Если там внешняя ссылка, то нет вообще смысла там навешивать через переменную класс class=»current» . Если же страница внутрення, то все нужно делать, как я и писал. Искать обозначение страницы в includes/filenames.php и его указывать.

  • Александр пишет:

    Но у меня после перехода по внешней ссылке (открытие происходит в новой вкладке) в магазине выделенной становиться «Главная», а «По внешней» обведена некоей пунктирной рамочкой (шаблон vamshop). В сущности не страшно, но неаккуратно как то.
    Если же открывать в том же окне, тогда да, смысла навешивать «current» нет.

  • Леонид пишет:

    Евгений, здравствуйте, вот Вы пишите: «И не забудьте добавить link_reviews и link_contact_us в языковые файлы. Хотя если, язык у Вас только один, то можно просто написать текстом, не используя языковые метки.»

    А куда именно и как их туда добавлять? Есть папка Lang в корневом директории, есть файл Languages.php в папке admin, есть файл box_languages.html в папке /www.сайт.com/templates/vamshop/boxesб есть папки Russian… но ни в одном и этих мест я не нашёл куда вставить link_reviews и link_contact_us (вернее ссылку на них или правильнее название кнопок на русском языке). И как это должно вставляться — путём создания нового файла или просто дописать куда-то в какой-то файл? Без этих добавлений в языковых файлах у меня получились кнопки, но без соответствующих надписей. Оно и понятно, но непонятно, куда эти надписи вписать. Заранее благодарен.

    • Евгений Молодецкий пишет:

      Языковые файлы в корне магазина в папке lang. Если не знаете куда их там добавлять, добавьте тексты кнопок прямо в шаблон вместо меток.

  • Леонид пишет:

    Спасибо, Евгений, всё получилось.
    Для тех кому надо: я добавил в файл lang_russian.conf (который находится здесь: http://www.Ваш сайт/lang/russian) следующие строчки в конце параграфа [index]:
    link_reviews = ‘Отзывы’
    link_contact_us = ‘Контакты’
    После этого на кнопках появились надписи соответственно «Отзывы» и «Контакты»

  • Виталий пишет:

    Добрый день! Подскажите, как можно вытащить вкладки-табы из метки {$main_content} которая находится в product_info.php.html? Дело в том, что {$main_content} находится в блоке, у которого задана фиксированная ширина, а нужно чтобы вкладки-табы располагались по всей ширине страницы.

  • eugenem пишет:

    Из {$main_content} Вы ничего не вытащите. Вам надо другим путем идти — соответствующим образом переверстать шаблон.

Добавить комментарий

Ваш e-mail не будет опубликован.