Как должна работать насосная станция противопожарного водопровода.Загрузка файлов комъюзерами — плагин для MaxSite CMS. Пользовательские пункты в меню и breadcrumbs в MaxSite CMS.24 февраля 2019 г.Просмотров: 1240Комментарии: 0
MaxSite CMSMaxSite
Любой плагин может создавать как дополнительные публичные страницы сайта, так и персональные личные страницы пользователей. В первом случае не мешало бы сделать интеграцию в уровни хлебных крошек, во втором — вывод ссылки на страницу в меню пользователя.
Как в MaxSite CMS плагину добавить свои пункты в меню пользователя и свои уровни в breadcrumbs?
Эта задача так или иначе всплывала раньше и решал ее через пень-колоду. Формальную постановку задачи получилось сделать при разработке плагина «Загрузка файлов комъюзерами». Плагин создает как страницу для просмотра загрузок другими пользователями, так и страницу для управления пользователем своими загрузками.
Свой пункт в меню комюзера для MaxSite CMS.
Эта задача решается на удивление легко.
Давайте посмотрим на содержимое файла-компонента _menu.php — можем это сделать прямо из админки.
Видно, что наша цель достигается при помощи хука «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.php — там нет ничего такого, что нам нужно.
Добавим несколько строчек кода (можем это сделать прямо из админки):
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.
Теперь мы можем видеть такое:
Конечно, после каждого обновления MaxSite CMS необходимо будет снова добавлять строчки в компонент _breadcrumbs.php. Ну или же создать свой компонент.
Модифицированные компоненты из шаблона default MaxSiteCMS-103.
В архиве компоненты top1_1, _menu1 и _breadcrumbs1.
Скачать: components_tmb.zip.
Компонент _breadcrumbs1 выводит, заданные заранее переменные $breadcrumbs2(-4).
Компонент _menu1 содержит меню с перенесенным вправо пунктом меню пользователя.
Компоненты 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);
Источник: