{"id":19964537,"url":"https://github.com/lionix-team/seo-manager","last_synced_at":"2025-04-05T12:05:05.478Z","repository":{"id":55153794,"uuid":"163524320","full_name":"lionix-team/seo-manager","owner":"lionix-team","description":"Seo Manager Package for Laravel ( with Localization )","archived":false,"fork":false,"pushed_at":"2021-02-21T09:28:07.000Z","size":1455,"stargazers_count":217,"open_issues_count":3,"forks_count":34,"subscribers_count":10,"default_branch":"master","last_synced_at":"2025-03-29T11:06:45.225Z","etag":null,"topics":["laravel","lionix","manager","meta","metadata","seo","seo-manager"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lionix-team.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-12-29T16:17:21.000Z","updated_at":"2025-03-27T01:12:10.000Z","dependencies_parsed_at":"2022-08-14T13:40:34.411Z","dependency_job_id":null,"html_url":"https://github.com/lionix-team/seo-manager","commit_stats":null,"previous_names":[],"tags_count":37,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lionix-team%2Fseo-manager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lionix-team%2Fseo-manager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lionix-team%2Fseo-manager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lionix-team%2Fseo-manager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lionix-team","download_url":"https://codeload.github.com/lionix-team/seo-manager/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247332602,"owners_count":20921853,"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","lionix","manager","meta","metadata","seo","seo-manager"],"created_at":"2024-11-13T02:24:10.782Z","updated_at":"2025-04-05T12:05:05.460Z","avatar_url":"https://github.com/lionix-team.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Seo Manager Package for Laravel ( with Localization )\n\n[![MadeWithLaravel.com shield](https://madewithlaravel.com/storage/repo-shields/1138-shield.svg)](https://madewithlaravel.com/p/seo-manager/shield-link)\n[![](https://img.shields.io/scrutinizer/build/g/filp/whoops.svg)](https://scrutinizer-ci.com/g/lionix-team/seo-manager/)\n\n`lionix/seo-manager` package will provide \nyou an interface from where you can manage all your pages\nmetadata separately and get dynamically changing content.\nLet's see how.\n\n# Update:\nAfter updating to version \u003e v1.2.* you have to run:\n```bash\nphp artisan vendor:publish --provider=\"Lionix\\SeoManager\\SeoManagerServiceProvider\" --tag=config --force\n```\n```bash\nphp artisan vendor:publish --provider=\"Lionix\\SeoManager\\SeoManagerServiceProvider\" --tag=assets --force\n```\nand\n```bash\nphp artisan migrate\n```\nto publish latest configs and new migration files.\n\n## Localization\nIn version v1.2.* you will have availability \nto localize your metadata and set translates \nto your data.\n\nFor that, you just should \nadd your available locales \nwith top right button \"Add Locales\" and \nchose locale for which you want to add translations.\n\nThat's it, \nPackage will automatically detect your locale \nfrom website and will set needed translations, \nyou don't need to do any other configs. \nEasy, isn't it?\n\n## Installation\nYou can install the package via composer:\n\n```bash\ncomposer require lionix/seo-manager\n```\nPublishing package files\n```bash\nphp artisan vendor:publish --provider=\"Lionix\\SeoManager\\SeoManagerServiceProvider\"\n```\nThis command will create `config/seo-manager.php` \nfile and will copy package assets directory to `public/vendor/lionix`.\n\n#### Configurations\n\nIn `config/seo-manager.php` file you can do the following configurations:\n\n```php\nreturn [\n    /**\n     * Database table name where your manager data will be stored\n     */\n    'database' =\u003e [\n            'table' =\u003e 'seo_manager',\n            'locales_table' =\u003e 'seo_manager_locales',\n            'translates_table' =\u003e 'seo_manager_translates'\n        ],\n        \n    /**\n     * Set default locale,\n     * It will be added as default locale\n     * when locales table migrated\n     */\n    'locale' =\u003e 'en',\n\n    /**\n     * Path where your eloquent models are\n     */\n    'models_path' =\u003e '',\n\n    /**\n     * Route from which your Dashboard will be available\n     */\n    'route' =\u003e 'seo-manager',\n\n    /**\n     * Middleware array for dashboard\n     * to prevent unauthorized users visit the manager\n     */\n    'middleware' =\u003e [\n        //  'auth',\n    ],\n\n    /**\n     * Routes which shouldn't be imported to seo manager\n     */\n    'except_routes' =\u003e [\n        'seo-manager',\n        'admin'\n        //\n    ],\n\n    /**\n     * Columns which shouldn't be used ( in mapping )\n     */\n    'except_columns' =\u003e [\n        // \"created_at\",\n        // \"updated_at\",\n    ],\n\n    /**\n     * Set this parameter to true\n     * if you want to have \"$metaData\" variable\n     * shared between all views in \"web\" middleware group\n     */\n    'shared_meta_data' =\u003e false\n];\n```\n\nAfter finishing with all configurations run `php artisan migrate` to create SEO manager table.\n\nThat's it, now your SEO manager will be available \nfrom /seo-manager URL (or, if you changed route config, \nby that config URL) \n\n## Usage\n\nAfter visiting your dashboard URL you have to import your routes to start to manage them.\n\n![routes import](https://lh6.googleusercontent.com/YSbFt8jvV6swodjBE4xi6UCP0h6sNxw01kEhg7YueMnsuIQxmeWoEjBagiY=w2400)\n\nRoute importing will store all your GET routes into the database ( except the ones which specified in \"except_routes\" configs).\n\n![imported routes](https://lh5.googleusercontent.com/Dn-tuphYqMN9bmN_WzcWmTgOCzuzg3m3_TcWlzbb7Nf7zbVHrHTBkXc4O4E=w2400)\n\n### Let the fun begin! \n\n**Mapping**\n\n![](https://lh4.googleusercontent.com/fxvoOPQUG9GNiOqAj6C2z7_ZolMMJSV-53M_Q6sPqt3fp1TdYp-9blL3DQ8=w2400)\n\nTo get dynamically changing metadata you should map your route params to the correct Models.\n\n*Param: Route param*\n\n*Model: Eloquent Model which you are using to get the record by route param*\n\n*Find By: Database table column name which you are using to get the record by route param*\n\n*Use Columns: Database table columns which we should use for further mapping*\n\n\n\u003e **Note**: If you have appended attributes inside your model via `protected $appends` and you want to use them in mapping\nyou have to use `Lionix\\SeoManager\\Traits\\Appends;` trait inside your model.\n\n*Mapping available only if your route has params*\n\nNext steps you can do, is to set Keywords, Description, Title, URL, Author, Title Dynamic, OpenGraph Data.\n\n**About \"Title Dynamic\":**\n\nHere you can drag \u0026 drop your mapped params, your title and write custom text to generate the dynamic title for your page.\nEvery time your \"title\" will be changed or your mapped params value changed, the dynamic title will be changed automatically.\n\n![](https://lh3.googleusercontent.com/VgalM88QnjH8iB9-bEc2iike_14Lb_cF7JEyilBwqBTuuDOfoeJvR-n655M=w2400)\n\n**About \"Open Graph\":**\n\nHere you can write your open graph data or map your fields to mapping based on params.\n\n![](https://lh6.googleusercontent.com/Z93-NUUKLFOleZbj4oYwfE59MMyGxhu9SHxE-0iAKNwatWHm9w5LfZ_h5rg=w2400)\n\n## Example Usage\n\n## Via `SeoManager` Facade\n\n```php\nuse Lionix\\SeoManager\\Facades\\SeoManager;\n```\n##### This will return an array with all your SEO Manager data\n```\nSeoManager::metaData();\n```\n*Example:*\n```php\narray:13 [▼\n  \"keywords\" =\u003e \"First Keyword, Second, Third\"\n  \"description\" =\u003e \"Test Description\"\n  \"title\" =\u003e \"Test Titile\"\n  \"url\" =\u003e \"http://example.com/users/1\"\n  \"author\" =\u003e \"Sergey Karakhanyan\"\n  \"title_dynamic\" =\u003e \"Test Titile - Custom Text - Test User Name \"\n  \"og:url\" =\u003e \"http://example.com/users/1\"\n  \"og:type\" =\u003e \"website\"\n  \"og:image:url\" =\u003e \"https://wallpaperbrowse.com/media/images/3848765-wallpaper-images-download.jpg\"\n  \"og:title\" =\u003e \"Test Titile - Custom Open Graph Text\"\n  \"og:locale\" =\u003e \"en_GB\"\n  \"og:site_name\" =\u003e \"Seo Manager Package\"\n  \"og:description\" =\u003e \"Open Graph Description\"\n]\n```\n\n`SeoManager::metaData();` method can receive property variable \nto get the value of some property \n\n*Example:*\n\n`SeoManager::metaData('keywords');` will return  `\"First Keyword, Second, Third\"`\n\n\n##### To get only OpenGraph data array: \n```php\nSeoManager::metaData('og_data');\n```\n*Example*\n\n```php\narray:7 [▼\n  \"og:url\" =\u003e \"http://example.com/users/1\"\n  \"og:type\" =\u003e \"website\"\n  \"og:image:url\" =\u003e \"https://wallpaperbrowse.com/media/images/3848765-wallpaper-images-download.jpg\"\n  \"og:title\" =\u003e \"Test Titile - Custom Open Graph Text\"\n  \"og:locale\" =\u003e \"en_GB\"\n  \"og:site_name\" =\u003e \"Seo Manager Package\"\n  \"og:description\" =\u003e \"Open Graph Description\"\n]\n```\n##### Aliases\n`SeoManager::metaKeywords()`\n\n`SeoManager::metaTitle()`\n\n`SeoManager::metaDescription()`\n\n`SeoManager::metaUrl()`\n\n`SeoManager::metaAuthor()`\n\n`SeoManager::metaTitleDynamic()`\n\n`SeoManager::metaOpenGraph()` - Can receive property variable to get the value of some OG property\n\n*Example*\n\n`SeoManager::metaOpenGraph('og:image:url')`\n\nWill return\n`\"https://wallpaperbrowse.com/media/images/3848765-wallpaper-images-download.jpg\"`\n\n\n## Via `helper` functions\n\n`metaData()`\n\n`metaKeywords()`\n\n`metaTitle()`\n\n`metaDescription()`\n\n`metaUrl()`\n\n`metaAuthor()`\n\n`metaTitleDynamic()`\n\n`metaOpenGraph()`\n\n## Via @Blade directives\n\nYou can use this blade directives in your view files to get metadata. \n\n`@meta`\n\n*Output Example*\n\n```html\n\u003cmeta property=\"keywords\" content=\"First Keyword, Second, Third\"\u003e\n\u003cmeta property=\"description\" content=\"Test Description\"\u003e\n\u003cmeta property=\"title\" content=\"Test Titile\"\u003e\n\u003cmeta property=\"url\" content=\"http://packages.loc/users/1\"\u003e\n\u003cmeta property=\"author\" content=\"Sergey Karakhanyan\"\u003e\n\u003cmeta property=\"title_dynamic\" content=\"Test Titile - Custom Text - Test User Name \"\u003e\n\u003cmeta property=\"og:url\" content=\"http://packages.loc/users/1\"\u003e\n\u003cmeta property=\"og:type\" content=\"website\"\u003e\n\u003cmeta property=\"og:image:url\" content=\"https://wallpaperbrowse.com/media/images/3848765-wallpaper-images-download.jpg\"\u003e\n\u003cmeta property=\"og:title\" content=\"Test Titile - Custom Open Graph Text\"\u003e\n\u003cmeta property=\"og:locale\" content=\"en_GB\"\u003e\n\u003cmeta property=\"og:site_name\" content=\"Seo Manager Package\"\u003e\n\u003cmeta property=\"og:description\" content=\"Open Graph Description\"\u003e\n```\n\n`@meta` can receive property param\n\n`@meta('description')`\n\n*Output Example*\n\n```html\n\u003cmeta property=\"description\" content=\"Test Description\"\u003e\n```\n\u003e**Note:**\nYou can't add open graph properties to `@meta()` like `@meta('og:url')`\nBut you can get only OpenGraph meta data by `@meta('og_data')`.\nIf you want to get concrete OG param meta tag you can use `@openGraph` (*similar to `@meta('og_data')`*)\nand pass param there like `@openGraph('og:url)`\n\n\u003e**Note #2:** If you want to do modifications in your og data and display it manually, you should do that before `@meta`\n\n*Example:*\n```html\n\u003cmeta property=\"og:image:url\" content=\"{{ asset(metaOpenGraph('og:image:url')) }}\"\u003e\n@meta\n```\n##### Aliases\n\n`@keywords`\n\n`@url`\n\n`@author`\n\n`@description`\n\n`@title`\n\n`@openGraph`\n\n`@titleDynamic` - will return dynamically generated title which you can use inside your `\u003ctitle\u003e\u003c/title\u003e` tags.\n\n## Contributing\n\n### How to start developing on this project\n\n1. Install the module in a existing Laravel project and check if the module is working.\n\n2. Delete the folder vendor/lionix/seo-manager.\n\n3. Copy the fork of the module in the vendor/lionix/seo-manager folder\n(don't know  how to make a fork? https://kbroman.org/github_tutorial/pages/fork.html)\n\n4. Add the following line to your webpack.mix.js\n`mix.js('vendor/lionix/seo-manager/src/vue/seo-manager.app.js', 'public/vendor/lionix/js');`\n\n5. run the NPM Watch command `npm run watch`\n\n6. If everything works fine, you can start developing on the module\n\n7. **PLEASE REMIND TO COPY \nYOUR `public/vendor/lionix/js/seo-manager.app.js` TO `vendor/lionix/seo-manager/src/assets/seo-manager.app.js`**\n\n## Credits\n\n- [Sergey Karakhanyan](https://github.com/karakhanyans)\n- [Lionix Team](https://github.com/lionix-team)\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flionix-team%2Fseo-manager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flionix-team%2Fseo-manager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flionix-team%2Fseo-manager/lists"}