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

Laravel requires Composer to manage the project dependencies. So before installing Laravel, make sure you have Composer installed on your system. In case you are hearing about Composer for the first time, it"s a dependency management tool for php similar to node"s npm.

To install Composer on your machine, check this post:

Installing Laravel on Windows:

Follow the below steps to install laravel on windows machine. No matter you have xampp/wamp stack, it works for both. On WAMP, make sure to install laravel on "www" folder and on XAMPP, obviously the "htdocs".

STEP-1) Open "htdocs" folder on XAMPP, hold SHIFT key and right click on the folder, and choose "open command window here". Alternatively, you can open command window and change directory to "xampp/htdocs".

STEP-2) Enter the following command.

Composer create-project laravel/laravel my_laravel_site --prefer-dist

Here "my_laravel_site" is the folder name where laravel files will be installed. Change this to your liking.

STEP-3) Now it"s time to be patient as laravel installation is going to take some time.

STEP-4) Once installed, change directory to "my_laravel_site" (cd "my_laravel_site") on the command prompt and enter the below command.

Php artisan serve

STEP-5) This will show a message something like, "Laravel development server started:" along with an url.

STEP-6) Copy and paste the url on the browser. If things go right, you"d see the laravel welcome screen.

STEP-7) Done! You have successfully installed laravel on windows machine and ready to go with.

Setting Application Key:

Laravel requires little configuration after installation. It requires you to set the application key. This is a random string of 32 characters long used for encrypting session and other sensitive data. Usually this will be set automatically when you install laravel via composer or laravel installer.

In case it"s not set, you have to do it manually. First make sure to rename the ".env.example" file to ".env" on your application root. Then open command prompt and change to the laravel project folder. Now run the below command to generate the key.

Php artisan key:generate

Copy this generated key to the APP_KEY variable on ".env" file. Save and you are done.

Installing Specific Laravel Version:

The above given method will make composer to download and install the latest version of laravel. If you want to install earlier versions of laravel on your machine, make sure to include the respective version number on create-project command.

Composer create-project laravel/laravel=5.4 your-project-name --prefer-dist Read Also:

Likewise you can easily install laravel using composer on windows . I hope you find this tutorial useful. Please share it on your social circle if you like it.

Laravel provides built-in user registration and login system. Most of the developers are not aware of this built-in system (We also didn’t know this feature). When we come to know about this feature, we got surprised. It saves us a lot of time from building a login and registration system starting from scratch.

In this article, we study user registration and login system in Laravel – the feature provided by Laravel itself.

For getting started, we are assuming you have a fresh installation of a Laravel. If you don’t have it then create it by running the command:

Composer create-project --prefer-dist laravel/laravel laravel-dev

Here ‘laravel-dev’ is the name of your Laravel project. Of course, you can change the name as you wish.

Head over to the project root directory in the terminal and run the command:

php artisan make:auth

This command will create authentication controllers like LoginController.php , RegisterController.php , etc which you will find the app/Http/Controllers/Auth directory. It also creates a views login.blade.php , register.blade.php under resources/view/auth directory.

This make:auth command also creates a app.blade.php file under resources/views/layouts directory. This view is a base layout for your application. It uses Bootstrap CSS framework but user can customize it and change the design.

Email Verification

While building a registration system, normally on signup we send an activation link to users. This activation link will use to verify the user account. Once, the user clicks on an activation link then we make that user active for our system. In other words, after verifying account user can browse the pages to our system.

Laravel provides a built-in system for email verification of a newly registered user. Using this, on registration user will get an email with activation link. Once he activated account then he would able to browse the system. Here, we can apply middleware("verified") for protecting routes. Doing so, these protected routes can be accessible only by verified accounts.

Open the App\User.php file and make sure this model implements Illuminate\Contracts\Auth\MustVerifyEmail contract.

How does it work? If you check the migration file, user table must contain email_verified_at column. This column will use to verify whether the user activated their account. If activated, then this column will store date and time at the time of activation.

When we run the make:auth command, it also creates a Auth\VerificationController class which has logic written to send verification links and verify emails. To register the necessary routes for this controller, write the below routes in the routes/web.php file.

Auth::routes(["verify" => true]);

Next, to protect our routes from unverified account add middleware to it as follows:

Route::get("profile", function () { return "

This is profile page

"; })->middleware("verified");

You will have control of where to redirect the user after verification. If you open the Auth\VerificationController file you will find the variable $redirectTo which will use for redirection. Change this route as per your requirement.

Protected $redirectTo = "/home";

Finally, run the migration command:

Php artisan migrate

User Login and Registration

At this stage, we are ready to test the user login and registration system. For this to work, your application should able to send emails. You can use the Gmail SMTP server to send emails. For more details, please read our article .

Start the local development server using the command:

Php artisan serve

Now, you should able to see your registration page at http://localhost:8000/register

Fill the form and you will get the verification link on your account as follows:

Please note, Laravel allows us to login to our account even if we did not verify account yet. But we can’t access protected route. Remember we have added middleware for one of our route profile . Now without verifying your account if you try to visit the http://localhost:8000/profile , it will redirect to the http://localhost:8000/email/verify URL.

Go ahead and verify your account. You will see email_verified_at column in the users table has DateTime added. It means you have verified your account successfully. Now you should able to access even protected routes.

We hope you understand how to use user registration And login system in Laravel. You may also like to read our article .

Сегoдня мы рассмотрим эксплуатацию критической 1day-уязвимости в популярной CMS Joomla, которая прогремела на просторах интернета в конце октября. Речь пойдет об уязвимостях с номерами CVE-2016-8869 , CVE-2016-8870 и CVE-2016-9081 . Все три происходят из одного кусочка кода, который пять долгих лет томился в недрах фреймворка в ожидании своего часа, чтобы затем вырваться на свободу и принести с собой хаос, взломанные сайты и слезы ни в чем не повинных пользователей этой Joomla. Лишь самые доблестные и смелые разработчики, чьи глаза красны от света мониторов, а клавиатуры завалены хлебными крошками, смогли бросить вызов разбушевавшейся нечисти и возложить ее голову на алтарь фиксов.

WARNING

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

С чего все началось

6 октября 2016 года Дэмис Пальма (Demis Palma) создал топик на Stack Exchange , в котором поинтересовался: а почему, собственно, в Joomla версии 3.6 существуют два метода регистрации пользователей с одинаковым названием register() ? Первый находится в контроллере UsersControllerRegistration , а второй - в UsersControllerUser . Дэмис хотел узнать, используется ли где-то метод UsersControllerUser::register() , или это лишь эволюционный анахронизм, оставшийся от старой логики. Его беспокоил тот факт, что, даже если этот метод не используется никаким представлением, он может быть вызван при помощи сформированного запроса. На что получил ответ от девелопера под ником itoctopus, подтвердившего: проблема действительно существует. И направил отчет разработчикам Joomla.

Далее события развивались самым стремительным образом. 18 октября разработчики Joomla принимают репорт Дэмиса, который к тому времени набросал PoC, позволяющий регистрировать пользователя. Он опубликовал заметку на своем сайте , где в общих чертах рассказал о найденной проблеме и мыслях по этому поводу. В этот же день выходит новая версия Joomla 3.6.3, которая все еще содержит уязвимый код.

После этого Давиде Тампеллини (Davide Tampellini) раскручивает баг до состояния регистрации не простого пользователя, а администратора. И уже 21 октября команде безопасности Joomla прилетает новый кейс. В нем речь уже идет о повышении привилегий . В этот же день на сайте Joomla появляется анонс о том, что во вторник, 25 октября, будет выпущена очередная версия с порядковым номером 3.6.3, которая исправляет критическую уязвимость в ядре системы.

25 октября Joomla Security Strike Team находит последнюю проблему, которую создает обнаруженный Дэмисом кусок кода. Затем в главную ветку официального репозитория Joomla пушится коммит от 21 октября с неприметным названием Prepare 3.6.4 Stable Release , который фиксит злосчастный баг.

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

27 октября исследователь Гарри Робертс (Harry Roberts) выкладывает в репозиторий Xiphos Research готовый эксплоит , который может загружать PHP-файл на сервер с уязвимой CMS.

Детали

Что ж, с предысторией покончено, переходим к самому интересному - разбору уязвимости. В качестве подопытной версии я установил Joomla 3.6.3, поэтому все номера строк будут актуальны именно для этой версии. А все пути до файлов, которые ты увидишь далее, будут указываться относительно корня установленной CMS.

Благодаря находке Дэмиса Пальмы мы знаем, что есть два метода, которые выполняют регистрацию пользователя в системе. Первый используется CMS и находится в файле /components/com_users/controllers/registration.php:108 . Второй (тот, что нам и нужно будет вызвать), обитает в /components/com_users/controllers/user.php:293 . Посмотрим на него поближе.

286: /** 287: * Method to register a user. 288: * 289: * @return boolean 290: * 291: * @since 1.6 292: */ 293: public function register() 294: { 295: JSession::checkToken("post") or jexit(JText::_("JINVALID_TOKEN")); ... 300: // Get the form data. 301: $data = $this->input->post->get("user", array(), "array"); ... 315: $return = $model->validate($form, $data); 316: 317: // Check for errors. 318: if ($return === false) 319: { ... 345: // Finish the registration. 346: $return = $model->register($data);

Здесь я оставил только интересные строки. Полную версию уязвимого метода можно посмотреть в репозитории Joomla.

Разберемся, что происходит при обычной регистрации пользователя: какие данные отправляются и как они обрабатываются. Если регистрация пользователей включена в настройках, то форму можно найти по адресу http://joomla.local/index.php/component/users/?view=registration .


Легитимный запрос на регистрацию пользователя выглядит как на следующем скриншоте.


За работу с пользователями отвечает компонент com_users . Обрати внимание на параметр task в запросе. Он имеет формат $controller.$method . Посмотрим на структуру файлов.

Имена скриптов в папке controllers соответствуют названиям вызываемых контроллеров. Так как в нашем запросе сейчас $controller = "registration" , то вызовется файл registration.php и его метод register() .

Внимание, вопрос: как передать обработку регистрации в уязвимое место в коде? Ты наверняка уже догадался. Имена уязвимого и настоящего методов совпадают (register), поэтому нам достаточно поменять название вызываемого контроллера. А где у нас находится уязвимый контроллер? Правильно, в файле user.php . Получается $controller = "user" . Собираем все вместе и получаем task = user.register . Теперь запрос на регистрацию обрабатывается нужным нам методом.


Второе, что нам нужно сделать, - это отправить данные в правильном формате. Тут все просто. Легитимный register() ждет от нас массив под названием jform , в котором мы передаем данные для регистрации - имя, логин, пароль, почту (см. скриншот с запросом).

  • /components/com_users/controllers/registration.php: 124: // Get the user data. 125: $requestData = $this->input->post->get("jform", array(), "array");

Наш подопечный получает эти данные из массива с именем user .

  • /components/com_users/controllers/user.php: 301: // Get the form data. 302: $data = $this->input->post->get("user", array(), "array");

Поэтому меняем в запросе имена всех параметров с jfrom на user .

Третий наш шаг - это нахождение валидного токена CSRF, так как без него никакой регистрации не будет.

  • /components/com_users/controllers/user.php: 296: JSession::checkToken("post") or jexit(JText::_("JINVALID_TOKEN"));

Он выглядит как хеш MD5, а взять его можно, например, из формы авторизации на сайте /index.php/component/users/?view=login .


Теперь можно создавать пользователей через нужный метод. Если все получилось, то поздравляю - ты только что проэксплуатировал уязвимость CVE-2016-8870 «отсутствующая проверка разрешений на регистрацию новых пользователей».

Вот как она выглядит в «рабочем» методе register() из контроллера UsersControllerRegistration:

  • /components/com_users/controllers/registration.php: 113: // If registration is disabled - Redirect to login page. 114: if (JComponentHelper::getParams("com_users")->get("allowUserRegistration") == 0) 115: { 116: $this->setRedirect(JRoute::_("index.php?option=com_users&view=login", false)); 117: 118: return false; 119: }

А так в уязвимом:

  • /components/com_users/controllers/user.php:

Ага, никак.

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

Продолжение доступно только подписчикам

Вариант 1. Оформи подписку на «Хакер», чтобы читать все материалы на сайте

Подписка позволит тебе в течение указанного срока читать ВСЕ платные материалы сайта. Мы принимаем оплату банковскими картами, электронными деньгами и переводами со счетов мобильных операторов.


Вот такое меню на моём сайте (впрочем, вы можете пользоваться им и вживую;-)) – простенькое, но понятное, удобное и трёхуровневое.

Чем uCoz хорош, так это невероятной простотой и удобством создания меню. Делается это в Конструкторе меню.

Войти в Конструктор меню можно тремя способами:


1. В Панели управления через вкладку Дизайн



2. На главной странице Панели управления по прямой ссылке



3. И на самом сайте, при включённом Конструкторе блоков



При создании сайта у него уже установлено основное, вертикальное меню, обозначенное кодом $SMENU_1$.



Обычно в меню сами появляются ссылки на активные модули, типа Фотоальбома или Каталога статей. Я лично предпочитаю строить меню сам, проставляя в нём свои ссылки.

Конструктор меню в uCoz очень прост и удобен. Чтобы создать новый пункт меню, жмём на «Добавить пункт меню»



И в открывшемся окошке проставляем свои название и адрес ссылки в меню.



Если поставить галочку в строке «Открывать в новом окне», то при клике на эту ссылку страница или сайт, на которые ведёт ссылка, откроется в новом окне браузера. Это удобно при выставлении ссылок на сторонние сайты, если вы не хотите, чтобы пользователь уходил с вашего сайта.

А если нажать на незаметную стрелочку рядом со словом «Опции», откроется строка для ввода имени CSS класса.



Чтобы добавить новый пункт в меню, жмём на «Применить».



Его можно переместить на другое место в меню или сделать вложенным в уже существующий пункт.

Чтобы переместить пункт, наводим курсор мышки на само название пункта – появится белый красивый крестик.



Нажимаем левую кнопку мышки и, не отпуская её, водим пунктом вверх-вниз по меню. При этом белый крестик превратится в надпись «Move».



Другие пункты при этом раздвигаются, уступая место новому.

Выбрав место, отпускаем левую кнопку мышки, и наш пункт гордо красуется на своём новом месте.



Чтобы сделать пункт меню вложенным, наводим курсор на зелёный крестик перед названием пункта. Появится тонкий крестик.



Также нажимаем левую кнопку мыши и, не отпуская кнопку, водим по пунктам меню. Пункты при этом выделяются жирным шрифтом.



Остановив мышку на нужном пункте, куда мы хотим вложить новую ссылку, отпускаем левую кнопку. Новый пункт появился в нужном месте, и как раз получился вложенным в соответствующий раздел.



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

После всех изменений не забываем нажать на кнопку «Сохранить», иначе меню останется прежним.

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



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

Чтобы создать новое меню, в том же Конструкторе меню жмём на стрелочку в левом углу Панели, в строке «Основное меню сайта».



Откроется окошко с выбором действий.



Изначально в этом окошке две строки: «Основное меню сайта» и «Создать меню». По мере создания новых меню в окошке появятся их названия. Чтобы создать новое меню, нажимаем на «Создать меню». Появится окошко нового меню, и затем, после ввода названия меню и выбора вида отображения этого меню (вертикальный или горизонтальный), страница редактирования нового меню.



Вводим новые пункты, проставляя нужные ссылки, и также перемещаем пункты или вкладываем в уже существующие, создавая многоуровневое меню. Если основное меню уже выставлено на сайте, то дополнительные нам придётся выводить самим, либо вставляя в блок, либо вводя код меню в дизайн сайта. Если нужно, чтобы новое меню было там же, где и основное, - в боковой колонке, - нет ничего проще!

Включаем Конструктор в верхнем uCoz-баре, добавляем блок:



Вписываем своё название блока (в моём примере – «Второе меню»), и вставляем этот блок в нужное место в колонке, перемещая между уже существующими блоками.



Теперь нужно обозначить, что будет отображаться в этом блоке. Нажимаем на голубую шестерёнку (она перед крестиком в правом верхнем углу блока), в открывшемся окошке выбираем «Site menus»,



И затем выбираем нужное нам меню.



Блок с новым меню окончательно создан, не забываем сохранить изменения.



Выключаем конструктор, и любуемся на новое меню в боковой колонке;-)

В структуре сайта новый раздел test_menu , который также добавим в главное меню.

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

В параметрах компонента, для примера, в опции Тип меню для первого уровня укажем Главное меню .

Примечание: По умолчанию этот компонент уже настроен для вывода Меню раздела , поэтому операция по созданию меню и его настройке будет пропущена.

Древовидное меню

Древовидное меню – самое распространенное меню. Оно достаточно простое и вместе с этим информативное. Создается на базе статических и динамических элементов: разделов, страниц и инфоблоков.

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

Одноуровневое древовидное меню

Задача: создать древовидное меню.


Результат . Результатом этой работы будет меню такого вида:

Файл .podmenu.menu.php будет иметь следующую структуру:

Многоуровневое древовидное меню

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

Задача: создать четырехуровневое меню.

Решение. Решение осуществим на примере меню с шаблоном tree .


Результат : результатом работы будет созданное древовидное меню в четыре уровня:

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

Если требуется уровень вложенности более, чем по умолчанию

Выпадающее меню

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

  • Необходимо иметь два типа меню. Одно (первичное) будет применено как основное меню в разделе, другое (вторичное) – как источник формирования собственно выпадающего меню.
  • В каждом разделе должно быть обязательно создано вторичное меню с указанием пунктов вторичного меню.
  • При указании путей до разделов, которые должны быть развернуты в выпадающем меню, необходимо указывать путь до папки подраздела, а не до индексного файла подраздела.
  • Выпадающее меню может быть построено не только на базе статических разделов и страниц, но и на основе инфоблоков.
  • Система допускает только четыре уровня вложения.

Построение меню из информационных блоков

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

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

  • Выполните команду из меню компонента Меню .
  • В разделе Дополнительные настройки установите флажок в поле Подключать файлы с именами вида.тип_меню.menu_ext.php .
  • Сохраните внесенные изменения.
  • Перейдите в административную часть сайта.
  • Перейдите в раздел, для которого планируется создавать меню с помощью инфоблоков.
  • Создайте пустой файл под именем .podmenu.menu_ext.php в директории, в меню которой должны подключаться пункты инфоблока (например, /test_menu).
  • Примечание: Первая часть имени файла должна совпадать с названием меню, для которого применяется данный компонент. То есть для верхнего меню первая часть должна называться.top , для любого другого меню первая часть должна называться.luboe_drugoe .

  • Откройте файл для редактирования в визуальном редакторе.
  • Добавьте в тело файла компонент Пункты меню (bitrix:menu.sections) .
  • Настройте параметры компонента:

  • Выберите тип информационного блока и сам информационный блок (например, Каталог товаров ).
  • Установите глубину вложений любую, более 1.
  • Сохраните внесенные изменения. Форма создания файла закроется, файл появится в общем списке файлов папки.
  • Откройте его вновь для редактирования, но уже в режиме Редактировать как PHP .
  • Допишите в файле код проверки включения кода из ядра: IncludeComponent(…
  • После вызова компонента допишите код подключения к меню: $aMenuLinks = array_merge($aMenuLinks, $aMenuLinksExt);
  • Конечный код указанного файла должен быть примерно таким:

IncludeComponent("bitrix:menu.sections", "", Array("ID" => $_REQUEST["ID"], "IBLOCK_TYPE" => "books", "IBLOCK_ID" => "5", "SECTION_URL" => "/catalog/phone/section.php?", "DEPTH_LEVEL" => "1", "CACHE_TYPE" => "A", "CACHE_TIME" => "3600")); $aMenuLinks = array_merge($aMenuLinks, $aMenuLinksExt); ?>
  • Сохраните внесенные изменения.
  • Результат: Перейдите в публичную часть в раздел, для которого создавался файл .тип_меню.menu_ext.php . Вы увидите созданное новое меню:

    Красным цветом выделены пункты, созданные в рамках главного меню (массив $aMenuLinks , возвращающий пункты главного меню), синим цветом – полученные из инфоблоков (массив $aMenuLinksExt).

    Два меню рядом

    Рассмотрим довольно простой пример размещения двух меню в ряд на примере классического трехколоночного шаблона сайта, который мы использовали до сих пор.

    • Перейдите к сайта.
    • В режиме редактирования кода в левой колонке сайта создайте таблицу с одной строкой и двумя ячейками.
    • Переместите в левую ячейку компонент меню, использовавшийся в качестве верхнего меню, а в правую – компонент меню, использовавшийся в качестве левого меню.
    • Сохраните внесенные изменения.
    • Выполните команду Редактировать параметры компонента из меню компонента меню, стоящего в левой ячейке.
    • Задайте в качестве шаблона шаблон default .
    • В поле Уровень вложенности меню выставьте значение 1.
    • Сохраните внесенные изменения.
    • Создайте пункты в меню типа top (которое в левой ячейке).
    • Выполните команду Редактировать параметры компонента из меню компонента меню, стоящего справа.
    • Настройте его так, как мы настраивали в примере построения меню из инфоблоков.
    • Выполните команду Редактировать пункты меню для компонента меню, стоящего в правой ячейке.
    • Сохраните внесенные изменения.

    После перезагрузки вы увидите простое меню по умолчанию. При переходе во внутренние разделы справа от основного меню будут раскрываться меню активного раздела в зависимости от его настроек (статичное или динамическое, из инфоблоков).

    Графическое меню

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

    Самый простой – за счет редактирования файла CSS. Этот способ имеет преимущество в том плане, что текст, используемый в компонентах меню для разных пунктов, будет редактироваться обычным способом. Изображение, выводимое css, будет фоновым. Так как данный способ не относится непосредственно к Bitrix Framework, то он рассмотрен не будет.

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

    Задача: создать меню, где пункты оформляются выводом картинок. Отображение картинок должно быть различным: для активного пункта меню и пассивного пункта меню. Если по каким-то причинам картинки меню не загружены на сайт (либо для пункта меню не заданы параметры), должна отображаться картинка по умолчанию.


    Мы задали параметры для системы, по которым она будет определять какую картинку ей выводить. Теперь переходим к редактированию шаблона. Для простоты будем использовать шаблон default .

    • Перейдите в публичную часть сайта.
    • Выполните команду Редактировать параметры компонента из меню компонента Меню .
    • Назначьте для компонента шаблон default .
    • Перейдите к компонента, скопируйте его и откройте для редактирования.
    • Вам нужно заменить код вызова пункта меню со штатного на обращение к параметрам, заданным для данного меню. Делается это в этом участке кода шаблона:

  • " class="selected">
  • ">
  • Замените первую ссылку в коде на строку: "> " />
  • Замените вторую ссылку в коде на строку: "> " />
  • Строки различаются между собой только выбором параметра из расширенных настроек: ACT или NOACT .

    Примечание: В коде использован путь /images/menu/default.png для указания картинки, выводимой, если отсутствует картинка для пункта меню или если для него не указаны параметры. Вам нужно использовать собственное имя этой картинки. И другой путь, если вы сохраняете картинки в другой папке.

  • Сохраните внесенные изменения.
  • При переходе в публичную часть мы увидим такое меню.