{"id":15014532,"url":"https://github.com/sashagm/themes","last_synced_at":"2026-01-06T05:32:47.255Z","repository":{"id":153385453,"uuid":"629219121","full_name":"sashagm/themes","owner":"sashagm","description":"Пакет для поддержки и управления тем для  Laravel +10.x","archived":false,"fork":false,"pushed_at":"2024-09-11T18:21:32.000Z","size":51,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-20T20:11:45.185Z","etag":null,"topics":["laravel","laravel-middleware","laravel-package","laravel-themes","php","phpunit"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sashagm.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-04-17T21:51:32.000Z","updated_at":"2025-02-09T13:49:10.000Z","dependencies_parsed_at":"2023-11-11T17:27:22.542Z","dependency_job_id":"c0569876-409e-4382-9431-ea4d91a2dda2","html_url":"https://github.com/sashagm/themes","commit_stats":null,"previous_names":[],"tags_count":32,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sashagm%2Fthemes","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sashagm%2Fthemes/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sashagm%2Fthemes/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sashagm%2Fthemes/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sashagm","download_url":"https://codeload.github.com/sashagm/themes/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239952346,"owners_count":19723921,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["laravel","laravel-middleware","laravel-package","laravel-themes","php","phpunit"],"created_at":"2024-09-24T19:45:44.428Z","updated_at":"2026-01-06T05:32:42.235Z","avatar_url":"https://github.com/sashagm.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\u003ca href=\"https://laravel.com\" target=\"_blank\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/laravel/art/master/logo-lockup/5%20SVG/2%20CMYK/1%20Full%20Color/laravel-logolockup-cmyk-red.svg\" width=\"400\" alt=\"Laravel Logo\"\u003e\u003c/a\u003e\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n\n\u003ca href=\"https://packagist.org/packages/sashagm/themes\"\u003e\u003cimg src=\"https://img.shields.io/packagist/dt/sashagm/themes\" alt=\"Total Downloads\"\u003e\u003c/a\u003e\n\u003ca href=\"https://packagist.org/packages/sashagm/themes\"\u003e\u003cimg src=\"https://img.shields.io/packagist/v/sashagm/themes\" alt=\"Latest Stable Version\"\u003e\u003c/a\u003e\n\u003ca href=\"https://packagist.org/packages/sashagm/themes\"\u003e\u003cimg src=\"https://img.shields.io/packagist/l/sashagm/themes\" alt=\"License\"\u003e\u003c/a\u003e\n\u003ca href=\"https://packagist.org/packages/sashagm/themes\"\u003e\u003cimg src=\"https://img.shields.io/github/languages/code-size/sashagm/themes\" alt=\"Code size\"\u003e\u003c/a\u003e\n\u003ca href=\"https://packagist.org/packages/sashagm/themes\"\u003e\u003cimg src=\"https://img.shields.io/packagist/stars/sashagm/themes\" alt=\"Code size\"\u003e\u003c/a\u003e\n\n[![PHP Version](https://img.shields.io/badge/PHP-%2B8-blue)](https://www.php.net/)\n[![Laravel Version](https://img.shields.io/badge/Laravel-%2B10-red)](https://laravel.com/)\n\n\u003c/p\u003e\n\n## Управление темами сайта с помощью пакета для Laravel\n\nНаш пакет предоставляет удобный способ работы с мульти темами для вашего сайта. Вы можете легко создавать и изменять темы, а также управлять ими через наш интерфейс. Вы можете быстро переключаться между темами выбрав любую из ваших добавленых вариантов.\n\n### Оглавление:\n\n- [Требования](#требования)\n- [Установка](#установка)\n- [Использование](#использование)\n  - [Настройка маршрутов](#настройка-маршрутов)\n  - [Добавление ассетов](#добавление-ассетов)\n  - [Настройка рендора](#настройка-рендора)\n  - [Права доступа](#права-доступа)\n  - [Кастомный гард](#кастомный-гард)\n  - [Получение данных](#получение-данных)\n  - [Способ вывода](#способ-вывода)\n- [Дополнительные возможности](#дополнительные-возможности)\n- [Тестирование](#тестирование)\n- [Лицензия](#лицензия)\n\n#### Требования\n\nОсновные требования для установки и корректной работы:\n\n- `PHP` \u003e= 8.0\n- `Laravel` \u003e= 10.x || 11.x\n- `Composer` \u003e= 2.4.x\n\n#### Установка\n\nДля установки пакета необходимо выполнить команды:\n\n- composer require sashagm/themes\n- php artisan themes:install\n\n#### Использование\n\n1. Для начала давайте определим нашу вспомогательную конфигурацию в `/config/custom.php`:\n\n```php\n    'admin_prefix'      =\u003e 'admin', // Префикс для маршрутов\n\n    'check'             =\u003e [\n\n        'active'        =\u003e true, // True Разрешить проверку или false Пропускать проверку\n        'guard'         =\u003e 'web', // Укажите через какой гард будет работать\n\n        'save_colum'    =\u003e 'id', // Поле для группы/роли или прав\n        'save_value'    =\u003e [\n            1, 2, 3\n        ], // добавляем массив значений\n\n    ],\n```\n\n2. Вспомогательная конфигурация `/config/themes.php` будет автоматически пересобираться каждый раз при активации ативной темы. Её лучше не трогать и не изменять для корректной работы.\n\n3. Настроить тему в соответствии с вашими потребностями.\n\n4. Активируйте вашу тему.\n\n5. Чтобы понять какая текущая тема установлена просто вызовете константу `Themes`.\n\n#### Настройка маршрутов\n\nДля удобства и группировки маршрутов можно добавить данный код в `/routes/web.php`.\nДанный код будет подключать файл маршрутов в зависимости от выбранной текущей темы.\n\n```php\n\nif (Themes){ require __DIR__ .\"/\". Themes .\".php\"; }\n\n```\n\n#### Настройка рендора\n\nДля контроллеров так же все просто настраивается, для метода рендора можно использовать такой подход:\nВ данном случае подключит файл `Название темы/main/index.blade.php`.\n\n```php\n\n    view(Themes.'main.index');\n\n```\n\n#### Добавление ассетов\n\nЕсли у вас используется один шаблон и несколько тем можно указать добавление ассетов:\n\n```php\n\n \u003clink href=\"{{ Themes.'/css/style.css' }}\" rel=\"stylesheet\" /\u003e\n\n \u003cscript src=\"{{ Themes.'/js/app.js' }}\"\u003e\u003c/script\u003e\n\n```\n\n#### Права доступа\n\nЕсли необходимо ограничить доступ можно в конфигурации `/config/custom.php` изменить права доступа в разделе `check`:\n\n```php\n\n    'check'             =\u003e [\n\n        'active'        =\u003e true, // True Разрешить проверку или false Пропускать проверку\n        'guard'         =\u003e 'web', // Укажите через какой гард будет работать\n\n        'save_colum'    =\u003e 'id', // Поле для группы/роли или прав\n        'save_value'    =\u003e [\n            1, 2, 3\n        ], // добавляем массив значений\n\n    ],\n\n```\n\nДобавляем массив с значениями для разных вариаций. Например для данного примера показано что пользователи с id `1,2,3` имеют права доступа.\nТак же можно указать не id а roles, тогда можно настроить на группы/роли пользователей например `Админ, Модер, Редактор`.\n\n#### Кастомный гард\n\nЕсли необходимо использовать кастомный гард можно в конфигурации `/config/custom.php` изменить в разделе `check` за это отвечает параметр `guard` по дефолту настроен на `web` и возвращает текущего аутентифицированного пользователя для стандартной охраны web. Это используется для аутентификации пользователей, которые входят через веб-интерфейс.\n\nЕсли указать кастомный гард то будет возвращать текущего аутентифицированного пользователя для охраны с именем кастомного гарда. Охрана с именем кастомного гарда может быть настроена в файле конфигурации Laravel для использования другой базы данных или другой модели пользователя.\n\nТаким образом можно изменять подходящий гард для проверки прав доступа для Middleware тем.\n\n#### Получение данных\n\nМетод `getActiveThemeTitle()` возвращает заголовок текущей активной темы, если она существует.\n\nМетод `getActiveThemeDescription()` возвращает описание текущей активной темы, если она существует.\n\nМетод `getThemeInfo()` возвращает общую информацию о текущей активной теме, включая заголовок, описание, автора и версию.\n\nДля вызова этих методов можно использовать следующий код:\n\n```php\n// получить заголовок текущей активной темы\n$title = Themes::getActiveThemeTitle();\n\n// получить описание текущей активной темы\n$description = Themes::getActiveThemeDescription();\n\n// получить общую информацию о текущей активной теме\n$info = Themes::getThemeInfo();\n```\n\nЗдесь мы используем статические методы модели Themes, чтобы получить нужную информацию о текущей активной теме. Для каждого метода мы вызываем соответствующий статический метод и сохраняем результат в переменную.\n\n#### Способ вывода\n\nТеперь вы можете дополнительно использовать варианты вызовов: `Themes`, `$app-\u003ethemes()`, `$app-\u003ethemes-\u003eget()` для получения текущей темы.\n\n#### Дополнительные возможности\n\nНаш пакет предоставляет ряд дополнительных возможностей, которые могут быть полезны при работе с темами:\n\n- `php artisan themes:install` - Данная команда установит все необходимые компоненты пакета (Управление темами).\n- `php artisan themes:create` - Данная команда создаст описание новой темы для сайта.\n- `php artisan themes:delete {id}` - Данная команда удалит тему сайта.'.\n- `php artisan themes:get {id}` - Данная команда выведет информацию о тему сайта.\n\n#### Тестирование\n\nДля проверки работоспособности можно выполнить специальную команду:\n\n- ./vendor/bin/phpunit --configuration phpunit.xml\n\n#### Лицензия\n\nThemes - это программное обеспечение с открытым исходным кодом, лицензированное по [MIT license](LICENSE.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsashagm%2Fthemes","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsashagm%2Fthemes","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsashagm%2Fthemes/lists"}