New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Добавление плагином секции в breadcrumbs #316

Closed
Filsadovnik opened this Issue Feb 10, 2019 · 16 comments

Comments

Projects
None yet
2 participants
@Filsadovnik
Copy link

Filsadovnik commented Feb 10, 2019

Допустим плагин добавляет свою страницу перехватом 404.
Выводим:

if ($fn = mso_find_ts_file('main/main-start.php')) require($fn);
// что-то свое
if ($fn = mso_find_ts_file('main/main-end.php')) require($fn); 

В секции breadcrumbs мы видим только ссылку на Главную.
Чтобы туда добавить что-то свое надо переделать компонент top1
Может имеет смысл приделать туда какой-нибудь хук, чтобы можно было добавить что-то свое?

	<?php
		if ($fn = mso_fe('components/_breadcrumbs/_breadcrumbs.php')) require($fn);
	?>

Или есть другой способ?

@maxsite

This comment has been minimized.

Copy link
Owner

maxsite commented Feb 10, 2019

А что именно плагин туда собирается добавлять? Вроде как компоненты принадлежат только самому шаблону, плагины их не должны «расширять».

@Filsadovnik

This comment has been minimized.

Copy link
Author

Filsadovnik commented Feb 10, 2019

Ну например плагин samborsky_polls добавляет страницы /polls-archive/n
Вверху всегда остается большое пустое место с ссылкой на главную и от этого никуда не дется.
А можно было бы вывести:
Главная->Голосования->Заголовок_голосования
Это можно было бы вывести и средствами самого плагина, но большое пустое место с ссылкой на Главную остается всегда.
Может быть переделать _breadcrumbs.php , чтобы не выводить ссылку на главную если у нас тип не home, category, tag или page ?

@maxsite

This comment has been minimized.

Copy link
Owner

maxsite commented Feb 10, 2019

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

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

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

@Filsadovnik

This comment has been minimized.

Copy link
Author

Filsadovnik commented Feb 10, 2019

В том то и дело что breadcrumbs в одном компоненте с шапкой и меню сайта и условием вывода компонента их невозможно потушить.
Достаточно было бы просто не выводить breadcrumbs, если у нас тип не один из 4-х, которые перебираются в файле _breadcrumbs.php.
Тогда плагин мог бы сформировать свои breadcrumbs такого же внешнего вида, как и основного сайта.

@maxsite

This comment has been minimized.

Copy link
Owner

maxsite commented Feb 10, 2019

Это дело самого шаблона — выводить breadcrumbs или нет. То есть вы в своём шаблоне делаете компонент, где вводите любые условия вывода. А переносить это на уровень плагина, не лучшая идея.

@maxsite

This comment has been minimized.

Copy link
Owner

maxsite commented Feb 10, 2019

Условий breadcrumbs может быть гораздо больше. Вот пример схематично:

if (is_type('page'))
elseif(is_type('home'))
elseif(is_type('category'))
elseif (is_type('tag')) 
elseif (is_type('author')) 
elseif (is_type('users'))
elseif (mso_segment(1) == 'sitemap')
elseif (mso_segment(1) == 'contact')
elseif (mso_segment(1) == 'registration')
elseif (mso_segment(1) == 'login')
elseif (mso_segment(1) == 'password-recovery')
elseif (mso_segment(1) == 'comments')
elseif (mso_segment(1) == 'archive')
elseif (mso_segment(1) == 'guestbook')
elseif (is_type('page_404'))

Но это делать нужно в своём шаблоне с нужной html-разметкой.

@Filsadovnik

This comment has been minimized.

Copy link
Author

Filsadovnik commented Feb 10, 2019

Как можно меньше хочется делать своих шаблонов.
Тем более когда в дефолтном все отлично сделано.

@maxsite

This comment has been minimized.

Copy link
Owner

maxsite commented Feb 10, 2019

Так а в чём проблема? Сделать копию компонентов и там прописать что нужно.

@Filsadovnik

This comment has been minimized.

Copy link
Author

Filsadovnik commented Feb 10, 2019

Достаточно оказалось в конце _breadcrumbs.php прописать

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

Теперь плагин перед вызовом
if ($fn = mso_find_ts_file('main/main-start.php')) require($fn);
должен просто объявить эти переменные.
Неужели мне достаточно создать шаблон в котором будет всего лишь один файл
/components/breadcrumbs/_breadcrumbs.php
?
Вероятно не все так просто.

@maxsite

This comment has been minimized.

Copy link
Owner

maxsite commented Feb 10, 2019

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

Просто сделайте копию /_breadcrumbs/_breadcrumbs.php как /_breadcrumbs2/_breadcrumbs2.php и в используемом компоненте (top1) пропишите его использование. В _breadcrumbs2 задайте свой вывод.

@Filsadovnik

This comment has been minimized.

Copy link
Author

Filsadovnik commented Feb 10, 2019

Не нужна глобальная видимость.
В файле плагина присваиваем нужные значения до вызова main-start

 $breadcrumbs2 = '<a class="i-angle-right mar10-l" href="' . getinfo('siteurl') . $archive_url['out_url'] . '">' . $options_template['title'] . '</a>';
 $breadcrumbs3 = '<span class="i-angle-right mar10-l">' . $sensor['shield_title'] .'</span>';
 $breadcrumbs4 = '<span class="i-angle-right mar10-l bold">' . $sensor['sensor_title'] .'</span>';

 if ($fn = mso_find_ts_file('main/main-start.php')) require($fn);
@maxsite

This comment has been minimized.

Copy link
Owner

maxsite commented Feb 11, 2019

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

@Filsadovnik

This comment has been minimized.

Copy link
Author

Filsadovnik commented Feb 12, 2019

Файл _breadcrumbs шаблона действительно можно редактировать из админки, что упрощает сие мероприятие

@Filsadovnik

This comment has been minimized.

Copy link
Author

Filsadovnik commented Feb 19, 2019

Увидел то что нужно - при выводе кнопок плагина comment_button:
'.mso_hook('comment_button_more').'
Может что-то аналогичное для вывода breadcrumbs?

@maxsite

This comment has been minimized.

Copy link
Owner

maxsite commented Feb 19, 2019

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

@Filsadovnik

This comment has been minimized.

Copy link
Author

Filsadovnik commented Feb 19, 2019

Понятно

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment