Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Plugin extends PluginBase
- {
- public function registerComponents()
- {
- }
- public function registerSettings()
- {
- }
- public function boot()
- {
- Pages::extend(function ($model) {
- $model->addDynamicMethod('getMenuTypeInfo', function ($type) {
- // получаем текущую тему сайта
- $theme = \Cms\Classes\Theme::getActiveTheme();
- $result = [
- 'dynamicItems' => true,
- // выберем все страницы сайта:
- 'cmsPages' => \Cms\Classes\Page::listInTheme($theme, true),
- ];
- return $result;
- });
- });
- Pages::extend(function ($model) {
- $model->addDynamicMethod('resolveMenuItem', function ($item, $url, $theme) {
- $result = [
- 'items' => []
- ];
- $page = \Cms\Classes\Page::loadCached($theme, $item->cmsPage);
- $rows = self::orderBy('title')->get();
- foreach ($rows as $row) {
- $item = [
- // Название страницы в карте сайта
- 'title' => $row->title,
- // URL страницы в карте сайта (напр. "/element/:slug")
- // Создаем URL с помощью хелпера url()
- 'url' => url($page->getBaseFileName(), ['slug' => $row->slug]),
- // Параметр lastmod в карте сайта
- 'mtime' => $row->updated_at,
- ];
- $result['items'][] = $item;
- }
- return $result;
- });
- });
- Event::listen('pages.menuitem.listTypes', function () {
- return [
- 'test-plugin-element' => 'All Elements Shopaholic',
- ];
- });
- Event::listen('pages.menuitem.getTypeInfo', function ($type) {
- if ($type == 'test-plugin-element') {
- return \Lovata\Shopaholic\Models\Product::getMenuTypeInfo($type);
- }
- });
- Event::listen('pages.menuitem.resolveItem', function ($type, $item, $url, $theme) {
- if ($type == 'test-plugin-element') {
- return \Lovata\Shopaholic\Models\Product::resolveMenuItem($item, $url, $theme);
- }
- });
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment