Skip to content

Sirgalas/yii2-wordpress-menu

Repository files navigation

yii2-wordperss-menu

Это расширение позволить создавать меню по типу wordpress. Тоесть в админке вы устанвливаете меню как с уровнеями вложености так и добавляете заранее созданые меню. Устанавливается

composer require sirgalas/yii2-wordpress-menu

Подключается

backend/config/main.php 
'menu'  =>[
            'class' =>  'sirgalas\menu\MenuModule',
            'imageDownloadPath'     =>  Yii::getAlias('@frontend/').'web/image/menu/',
            'imageSetPath'     =>  Yii::getAlias('@frontendWebroot').'/image/menu/',
            'imageResize'   =>  [[80, 40],[179,156]],
            'extra_menu'    =>  2,
            'models' =>  [
                'class' =>  '\common\models\Category',
                'title' =>  'name',
                'label' =>  'выбирите категорию',
                'id'    =>  'id',
                'alias' =>  'slug_category',
                'path'  =>  '/category',
                'image' =>  'true'
            ],
],

  • imageDownloadPath, imageSetPath - указание путей при загрузке картинок (если к меню планируется подключить картинки)
  • imageResize - массив с желаемыми размерами картинок
  • extra_menu - дополнительные меню можно использовать для создания
  • models - масссив выборок для добавления пунктов меню
  • models - модель которую хотие добавить к выборке
  • label - название выпадающего списка в админке
  • title - из какого столбца брать пункты меню
  • id - из какого столбца брать id
  • alias - если вы указали алиасы в базе данных укажите столбец
  • path - путь для роутинга на frontend
  • image - если вы хотите добавлять картинки

common

common\config\main.php
'menu'  =>[
            'class' =>  'sirgalas\menu\MenuModule',
            'modelDb' =>  '\common\models\YourModel',
        ],
  • modelDb - в случае если используется своя база данных без использования миграции

frontend

<?= MenuView::widget([
       'name'              =>  'Футер лево',
        'nameAlias'         =>  'slug',
        'menu'              =>['linkTemplate' => '<a href="{url}"><span class="fa fa-angle-right"></span>{label}</a>','options'=>['class' => false]]
]);
?>
  • name - id базы
  • nameAlias - как в pattern будет называться get - запрос
  • nav - Если вы используете виджет Nav необходимо указать этот ключ значением к которому будет настроики виджета в виде пасива согласно документации виджета
  • menu - Если вы используете виджет Menu необходимо указать этот ключ значением к которому будет настроики виджета в виде пасива согласно документации виджета
  • navBar - Если вы используете виджет NavBar необходимо указать этот ключ значением к которому будет настроики виджета в виде пасива согласно документации виджета
  • в остальном я попытался подключить все настройки этих виджетов

если вам не желаете использовать подключение этой модели sirgalas\menu\models\Menu и её метода renderMenu у которого обязательный атрибут является вызываемое меню и наименование гет параметра которое будет использоваться в роутинге. Пердположительно такокая запись

 $modelMenu= new Menu();
 $modelMenu->renderMenu($menu,'alias');

А в случае использования встроиной таблицы необходимо указать атрибуты в следуюшем порядке

   $modelMenu= new Menu();
   $modelMenu->renderMenu($allMenu,$menu,'content','alias');

миграция

php yii migrate/ --migrationPath=@vendor/sirgalas/yii2-wordperss-menu/migrations

Если вы хотите использовать свою базу то для этого необходимо (повторяю ещё раз) в

commom\config\main.php
'menu'  =>[
            'class' =>  'sirgalas\menu\MenuModule',
            'modelDb' =>  '\common\models\YourModel',
        ],

в моделе необходимо подключить поведение

use sirgalas\menu\behaviors\MenuBaseWordpressBehavior;
'BaseMenu' => [
                'class'             =>  MenuBaseWordpressBehavior::className(),
                'nameModel'         =>  '\common\models\YourModel',
                'dbName'            =>  'yourtable',
                'idBehavior'        =>  'id',
                'name'              =>  'name',
                'content'           =>  'content',
                'serviceField'      =>  'description',
                'nameServiceField'  =>  'menus'
            ],
  • nameModel namespace модели
  • dbName название таблицы
  • idBehavior столбец id
  • name столбец содержащий название строки базы
  • content солбец куда необходимо сохранять данные меню
  • serviceField nameServiceField используются для поисковой модели, это поисковое поле для выборки из вашей базы всех меню

в общем итоге вот так у меня получилось это backend вложеное меню (выпадающее меню) https://nimbus.everhelper.me/client/notes/share/1033948/fpvyz4o96inaqhpv7246 основное меню https://nimbus.everhelper.me/client/notes/share/1033957/qc2xb6wgcwysaac2gsfz

есть возможность определять вложенность таким образом https://nimbus.everhelper.me/client/notes/share/1033970/aycfg9ylkiy8uwvrh2xi

frontend https://dl.dropboxusercontent.com/1/view/hlv8uxg4wm53s6t/Apps/Shutter/%C3%90%C2%92%C3%91%C2%8B%C3%90%C2%B4%C3%90%C2%B5%C3%90%C2%BB%C3%90%C2%B5%C3%90%C2%BD%C3%90%C2%B8%C3%90%C2%B5_004.png https://dl.dropboxusercontent.com/1/view/8glnfop5ozhmdal/Apps/Shutter/%C3%90%C2%92%C3%91%C2%8B%C3%90%C2%B4%C3%90%C2%B5%C3%90%C2%BB%C3%90%C2%B5%C3%90%C2%BD%C3%90%C2%B8%C3%90%C2%B5_005.png

вот ссылки на сайты где использовано расширение магазин одежды, магазин косметики в планах допилить верстку и отойти от json формата докумената. Буду рад любой помощи. Присоединяйтесь php 'description'=>'menus'

About

Попытка создать меню как в cms wordpress

Resources

Stars

Watchers

Forks

Packages

No packages published