Пользовательские пункты в меню и breadcrumbs в MaxSite CMS.

Как должна работать насосная станция противопожарного водопровода.Загрузка файлов комъюзерами — плагин для MaxSite CMS. Пользовательские пункты в меню и breadcrumbs в MaxSite CMS.24 февраля 2019 г.Просмотров: 1240Комментарии: 0
MaxSite CMSMaxSite

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

Как в MaxSite CMS плагину добавить свои пункты в меню пользователя и свои уровни в breadcrumbs?

Эта задача так или иначе всплывала раньше и решал ее через пень-колоду. Формальную постановку задачи получилось сделать при разработке плагина «Загрузка файлов комъюзерами». Плагин создает как страницу для просмотра загрузок другими пользователями, так и страницу для управления пользователем своими загрузками.

Свой пункт в меню комюзера для MaxSite CMS.

Эта задача решается на удивление легко.

Давайте посмотрим на содержимое файла-компонента _menu.php — можем это сделать прямо из админки.

Пользовательские пункты в меню и breadcrumbs в MaxSite CMS.

Видно, что наша цель достигается при помощи хука «main_menu_add_comuser».

Пропишем в файле index.php плагина строчки:

# функция автоподключения плагина
function comuser_uploader_autoload($args = array())
{
mso_hook_add( ‘main_menu_add_comuser’, ‘comuser_uploader_menu’); // добавление в меню ссылки на загрузки
*******
*******
*******
}
function comuser_uploader_menu()
{
*******
*******
*******
return NR . $profile_slug . ‘/uploads | ‘ . $uploads_title;
}

В результате чего получим красивый результат:

Пользовательские пункты в меню и breadcrumbs в MaxSite CMS.

Добавление своих пунктов в хлебные крошки.

С хлебными крошками немного сложнее.

Посмотрим на содержимое файла-компонента _breadcrumbs.php — там нет ничего такого, что нам нужно.

Добавим несколько строчек кода (можем это сделать прямо из админки):

Пользовательские пункты в меню и breadcrumbs в MaxSite CMS.

if (isset($breadcrumbs2))
{
echo $breadcrumbs2;
if (isset($breadcrumbs3))
{
echo $breadcrumbs3;
if (isset($breadcrumbs4))
{
echo $breadcrumbs4;
}
}
}

Теперь в файле, который в плагине отвечает за генерацию страницы сайта, пропишем строчки:

// для компонента хлебных крошек
$breadcrumbs2 = ‘<a class=»i-angle-right mar10-l» href=»‘ . getinfo(‘siteurl’) . $profiles_slug . ‘»>’ . $options_template[’profiles_title’] . ‘</a>’;
$breadcrumbs3 = ‘<span class=»i-angle-right mar10-l»>’ . $options_template[’uploads_title’] .'</span>’;
$breadcrumbs4 = ‘<span class=»i-angle-right mar10-l bold»>’ . $comusers_nik .'</span>’;
// начало вывода
require(getinfo(‘shared_dir’) . ‘main/main-start.php’);
echo NR . ‘<div class=»type type_users_form»>’ . NR;

Строчки должны быть обязательно перед вызовом main-start.php.

Теперь мы можем видеть такое:

Пользовательские пункты в меню и breadcrumbs в MaxSite CMS.

Конечно, после каждого обновления MaxSite CMS необходимо будет снова добавлять строчки в компонент _breadcrumbs.php. Ну или же создать свой компонент.

Модифицированные компоненты из шаблона default MaxSiteCMS-103.

В архиве компоненты top1_1, _menu1 и _breadcrumbs1.

Скачать: components_tmb.zip.

Компонент _breadcrumbs1 выводит, заданные заранее переменные $breadcrumbs2(-4).

Компонент _menu1 содержит меню с перенесенным вправо пунктом меню пользователя.

Пользовательские пункты в меню и breadcrumbs в MaxSite CMS.

Компоненты top1_1 изменен лишь для того чтобы он выводил не базовые, а измененные компоненты.

Версия MaxSite 106.

В текущей версии MaxSite (106) появился компонент breadcrumbs (не путать с рассмотренным выше _breadcrumbs).

Этот компонент позволяет добавлять свои элементы в вывод хлебных крошек (github.com/maxsite/cms/issues/393).

Поэтому пришлось добавить поддержку такого варианта в плагины: comuser_uploader, dialog, profile.

Получилось сразу три способа вывода хлебных крошек.

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

В итоге код формирования хлебных крошек получился такой:

// хлебные крошки

$discussion_link = ‘<a href=»‘ . $siteurl . $options[’discussion_slug’] .’/’ . $comment_discussion_id . ‘»>’ . $discussion_title . ‘</a>’;
$comment_link = ‘<a href=»‘ . $siteurl . $options[’goto_slug’] . dialog_get_url($comment_discussion_id , $comment_id) . ‘» title =»‘ . $options[’comment_page’] . ‘»>’ . $options[’comment_number’] . $comment_id . ‘</a>’;

// вывод отключается по опции
if ($options[’bread_out’])
echo ‘<div class=»breadcrumbs»>’ . $main_link . $options[’breadcrumbs_razd’] . $discussion_link . $options[’breadcrumbs_razd’] . $comment_link . $options[’breadcrumbs_razd’] . $options[’title_edit_comment_form’] . ‘</div>’;

// для компонента хлебных крошек top1_1
$breadcrumbs2 = ‘<span class=»i-angle-right mar10-l»>’ . $main_link .'</span>’;
$breadcrumbs3 = ‘<span class=»i-angle-right mar10-l»>’ . $discussion_link .'</span>’;
$breadcrumbs4 = ‘<span class=»i-angle-right mar10-l»>’ . $comment_link .'</span>’;
$breadcrumbs3 = ‘<span class=»i-angle-right mar10-l bold»>’ . $options[’title_edit_comment_form’] .'</span>’;

// для компонента хлебных крошек breadcrumbs
$comp_breadcrumbs_add = array();
$comp_breadcrumbs_add[$options[’name’]] = $siteurl . $options[’main_slug’];
$comp_breadcrumbs_add[$discussion_title] = $siteurl . $options[’discussion_slug’] .’/’ . $comment_discussion_id;
$comp_breadcrumbs_add[$options[’comment_number’] . $comment_id] = $siteurl . $options[’goto_slug’] . dialog_get_url($comment_discussion_id , $comment_id);
$comp_breadcrumbs_add[$options[’title_edit_comment_form’]] = »;

// переворачиваем, если указано в опциях
if ($options[’reverse_breadcrumbs’]) array_reverse($comp_breadcrumbs_add);
mso_set_val(‘comp_breadcrumbs_add’, $comp_breadcrumbs_add);

Источник: fil-tec.ru