Guest User

Untitled

a guest
Nov 19th, 2019
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.55 KB | None | 0 0
  1. class Plugin extends PluginBase
  2. {
  3.     public function registerComponents()
  4.     {
  5.     }
  6.  
  7.     public function registerSettings()
  8.     {
  9.     }
  10.  
  11.     public function boot()
  12.     {
  13.  
  14.         Pages::extend(function ($model) {
  15.             $model->addDynamicMethod('getMenuTypeInfo', function ($type) {
  16.  
  17.                 // получаем текущую тему сайта
  18.                 $theme = \Cms\Classes\Theme::getActiveTheme();
  19.  
  20.                 $result = [
  21.                     'dynamicItems' => true,
  22.                     // выберем все страницы сайта:
  23.                     'cmsPages' => \Cms\Classes\Page::listInTheme($theme, true),
  24.                 ];
  25.  
  26.                 return $result;
  27.             });
  28.  
  29.         });
  30.  
  31.         Pages::extend(function ($model) {
  32.             $model->addDynamicMethod('resolveMenuItem', function ($item, $url, $theme) {
  33.  
  34.                 $result = [
  35.                     'items' => []
  36.                 ];
  37.  
  38.                 $page = \Cms\Classes\Page::loadCached($theme, $item->cmsPage);
  39.                 $rows = self::orderBy('title')->get();
  40.  
  41.                 foreach ($rows as $row) {
  42.                     $item = [
  43.                         // Название страницы в карте сайта
  44.                         'title' => $row->title,
  45.                         // URL страницы в карте сайта (напр. "/element/:slug")
  46.                         // Создаем URL с помощью хелпера url()
  47.                         'url' => url($page->getBaseFileName(), ['slug' => $row->slug]),
  48.                         // Параметр lastmod в карте сайта
  49.                         'mtime' => $row->updated_at,
  50.                     ];
  51.  
  52.                     $result['items'][] = $item;
  53.                 }
  54.  
  55.                 return $result;
  56.             });
  57.         });
  58.  
  59.         Event::listen('pages.menuitem.listTypes', function () {
  60.             return [
  61.                 'test-plugin-element' => 'All Elements Shopaholic',
  62.             ];
  63.         });
  64.  
  65.         Event::listen('pages.menuitem.getTypeInfo', function ($type) {
  66.  
  67.             if ($type == 'test-plugin-element') {
  68.                 return \Lovata\Shopaholic\Models\Product::getMenuTypeInfo($type);
  69.             }
  70.         });
  71.  
  72.         Event::listen('pages.menuitem.resolveItem', function ($type, $item, $url, $theme) {
  73.             if ($type == 'test-plugin-element') {
  74.                 return \Lovata\Shopaholic\Models\Product::resolveMenuItem($item, $url, $theme);
  75.             }
  76.         });
  77.  
  78.     }
  79. }
Advertisement
Add Comment
Please, Sign In to add comment