Coder Social home page Coder Social logo

seomanager-plugin-public's Introduction

Renatio SEO Manager Plugin

Plugin adds SEO functionality to October CMS. It supports CMS Pages, RainLab.Pages, RainLab.Blog, October CMS Tailor out of the box. With one line of code can be attached to any October CMS model. One robust solution for all your SEO needs.

Features

  • Support for CMS Pages, RainLab.Pages, RainLab.Blog
  • Import default values from CMS Pages, RainLab.Pages, RainLab.Blog
  • Open Graph support
  • Robots meta configuration
  • Canonical URLs
  • 301 Redirects
  • Easy edit robots.txt and .htaccess in CMS Settings
  • Easy integration with other plugins
  • Fully compatible with RainLab.Translate for multi-lingual support
  • Fully support for October CMS Tailor

Why is this a paid plugin?

Something that is free has little or no perceived value. Users do not commit to free products and only use them until something else looks nice and is free comes along. When I invest my time in the development of a new plugin I commit to supporting and maintaining it. I ask my customers to do the same. I do not make money from this plugin by advertisements, upgrades or additional services like hosting or setup.

Did you know that 30% of your purchase or donation goes to help fund the October Project?

My plugins take many hours to develop (40-120+) and even more hours to document and maintain. My paid plugins have to pay for both this time, and the time I am spending on free plugins and less successful paid plugins. This means that it will take even a successful plugin years to become profitable. Please consider buying an extended license if you want me to continue to maintain these plugins for the very small fee I ask in return or hire me for adding functionality that you feel is missing but valuable.

Like this plugin?

If you like this plugin, give this plugin a Like or Make donation with PayPal.

My other plugins

Please check my other plugins.

Support

Please use GitHub Issues Page to report any issues with plugin.

Reviews should not be used for getting support, if you need support please use the Plugin support link.

Icon made by Darius Dan from www.flaticon.com.

Documentation

Usage

After installation all CMS pages, Static pages, Posts, Categories will now display additional tabs with SEO and Open Graph fields.

To display meta information on frontend page you must only place single SEO component in theme layout head section.

[seoTags]
==
<!DOCTYPE html>
<html>
    <head>
        {% component 'seoTags' %}
    </head>

October CMS Tailor

Plugin adds two mixins with Meta and Open Graph fields to Tailor. You just need to add them to your blueprint Entry in fields section like so:

_seo_meta_fields:
    type: mixin
    source: Renatio\SeoManager\MetaFields

_seo_og_fields:
    type: mixin
    source: Renatio\SeoManager\OgFields

After that remember to save and migrate blueprint or run php artisan october:migrate command.

Settings

Plugin ships with a settings page. Go to Settings and you will see a menu item SEO configuration listed under SEO bookmark.

Settings allow you to specify SEO Title prefix/suffix.

You can write common meta tags used in all pages e.g.

<meta name="author" content="Renatio">
<meta name="viewport" content="width=device-width, initial-scale=1">

You can enable/disable Open Graph tags output, specify Open Graph site name and Facebook Application ID.

You can edit robots.txt file and .htaccess file.

Editing .htaccess file may break your site if not set up properly, so proceed with caution. This can be restricted by setting user permission.

SEO fields

Available SEO fields:

SEO Title

Defines the title of a document. Title tags are often used on search engine results pages (SERPs) to display preview snippets for a given page, and are important both for SEO and social sharing. Read more.

SEO Description

Meta descriptions are HTML attributes that provide concise explanations of the contents of web pages. Meta descriptions are commonly used on search engine result pages (SERPs) to display preview snippets for a given page. Read more.

Meta Keywords

A series of keywords you deem relevant to the page in question.

Meta Robots

The robots meta tag is not the same as the file called robots.txt. You should use these two together. Both are used by the search engines like Yahoo and Google. Read more.

Canonical URL

Canonicalization for SEOs refers to normalizing (redirecting to a single dominant version) multiple URLs. Read more.

301 Redirect

Redirection is the process of forwarding one URL to a different URL. There are three main kinds of redirects: 301, 302, and meta refresh. Read more.

More fields can be added on request.

Open Graph fields

Available Open Graph fields:

OG Title

The title of your object as it should appear within the graph, e.g., "The Rock".

OG Description

A one to two sentence description of your object.

OG Type

The type of your object, e.g., "article".

Og Image

An image URL which should represent your object within the graph.

Read more about Open Graph Protocol.

More fields can be added on request.

Integration with models

SEO fields can be attached to any October CMS model with single line of code. You just need to implement SEO Behavior in your model class like so:

public $implement = ['@Renatio.SeoManager.Behaviors.SeoModel'];

After implementing this behavior to your model class, SEO Manager will extend it with SEO fields.

The next step is to add SEO columns to models table. This can be done by running following command. This command will scan all models that are implementing SeoModel behavior and add SEO columns to the database tables.

php artisan seo:migrate-tables

To allow SEO Manager Plugin to recognize page with specific model attached you must pass it to the page view. This is most often done in component onRun() method like so:

$this->page['album'] = Album::find($id); // pass album record to page view

Extending SEO fields

Plugin will fire seo.extendSeoFields event to allow for extensibility. This can be used to modify or add more SEO fields. You can listen for this event like so:

Event::listen('seo.extendSeoFields', function ($fields) {

    // modify or add more fields

    return $fields; // remember to return modified fields array
});

Similar approach can be used to extend Open Graph fields with seo.extendOgFields event.

Model fields are saved to database, so you must add columns to renatio_seomanager_seo_tags table before you can use them.

Access SEO Tag before rendered on page

Plugin will fire seo.beforeComponentRender event to allow for extensibility. This can be used to access page with associated SEO Tag. The assigned model should implement SeoModel behavior.

/*
 * Assign new seoTag for product page
 */
Event::listen('seo.beforeComponentRender', function ($component, $page) {
    if ($page->url == '/products/:slug') {
        $component->seoTag = $page->controller->vars['product'];
    }
});

Console commands

Plugin will create three new artisan commands for working with console.

php artisan seo:migrate-tables command will migrate tables for all models implementing SEO behavior to add SEO columns. There is additional option --table= that can be used to specify the database table where you want to add SEO columns.

php artisan seo:patch 3.0 command will migrate data from renatio_seomanager_seo_tags to models that implement SeoModel behavior.

php artisan seo:import-cms command will import SEO from CMS pages.

php artisan seo:import-static command will import SEO from RainLab Static pages.

php artisan seo:import-blog command will import SEO from RainLab Blog posts and categories.

seomanager-plugin-public's People

Contributors

mplodowski avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

b8ne

seomanager-plugin-public's Issues

*solved* error when adding seo manager to october fresh

solved: php artisan plugin:refresh Renatio.SeoManager fixed it

Hi Renatio,

I just bought SEO manager and added it to an october project (fresh install Build 443). When updating the october installation via backend I get the following error (even if I select "skip once" as action):

"SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kcb7_october.renatio_seomanager_seo_tags' doesn't exist (SQL: select * from renatio_seomanager_seo_tagswhererenatio_seomanager_seo_tags.seo_tag_id= 9 andrenatio_seomanager_seo_tags.seo_tag_idis not null andrenatio_seomanager_seo_tags.seo_tag_type = RainLab\Blog\Models\Post limit 1)" on line 664 of /var/www/virtual/kcb7/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php

Can you help?
Chris (newbie on GitHub and in general)

VARCHAR Default Length

The database migration files don't set a default length for the VARCHARs so they get created with length of 191. This doesn't work with the Meta Description field which has a limit of 300 characters.

Class "Facades\Renatio\SeoManager\Classes\SeoFields" not found

Describe the bug
Class "Facades\Renatio\SeoManager\Classes\SeoFields" not found

There is brouken import for class SeoFields

Screenshots
image

October version
3.4.14

Plugin version
"renatio/seomanager-plugin": "^5.0.4",

Additional context
Add any other context about the problem here.

Error installing plugin

If i want install the plugin i get the follow error:

Update failed
"There are no commands defined in the "seo" namespace." on line 579 of /home/admin/domains/domain.com/public_html/vendor/symfony/console/Application.php

On the page i see the follow error:

Class 'October\Rain\Support\Facades\Event' not found
/home/admin/domains/domain.com/public_html/plugins/renatio/seomanager/classes/SeoCmsPage.php line 21

Undefined EXCEPTION
Symfony\Component\Debug\Exception\FatalThrowableError

        $this->addTranslatableSeoFields();
    }
  
    protected function addSeoFields()
    {
        Event::listen('cms.template.getTemplateToolbarSettingsButtons', function ($extension, $dataHolder) {
            if ($dataHolder->templateType === 'page') {
                $dataHolder->buttons[] = [
                    'button' => 'SEO',
                    'icon' => 'octo-icon-search',
                    'popupTitle' => 'renatio.seomanager::lang.settings.description',
                    'useViewBag' => true,`

Support for OctoberCMS v2

Hey everyone. With the new update of OctoberCMS v2, I was wondering if you guys would support the CMS Extensibility API to integrate the OG Image and the other stuff.

Link policy ignored in currentUrl

Fix for honoring the CMS link policy:

Set currentUrl to path (plugins/renatio/seomanager/components/SeoTags.php)

$this->page['currentUrl'] = request()->path();

Use twig app filter in component markup (plugins/renatio/seomanager/components/seotags/default.htm):

<link rel="canonical" href="{{ seoTag.canonical_url ?: currentUrl|app }}">
...
<meta property="og:url" content="{{ currentUrl|app }}">

getting error after update plugin

i have october cms v-1 i updated the plugins and got this error
Symfony\Component\Debug\Exception\FatalThrowableError:
Class 'October\Rain\Support\Facades\Event' not found
in /var/www/vhosts/soske.me/suma.soske.me/plugins/renatio/seomanager/classes/SeoCmsPage.php:21

An exception has been thrown during the rendering of a template

We got this exception when we render static page:
An exception has been thrown during the rendering of a template ("call_user_func_array() expects parameter 1 to be a valid callback, class 'Cms\Classes\Controller' does not have a method 'og_image_width'").

This is happening, when you have different environments
. I upload OG IMAGE on LOCAL stage, then I commit this static page and deploy it to the TEST stage. The image doesn't exist on TEST stage storage, so you will get this fatal error.

The solution can be put some IF condition into
plugins/renatio/seomanager/components/seotags/default.htm
if image exist.

Potential bug

Awesome plugin! However, when I collapse the component to reveal the html markup, the plugin no longer works i.e. the component variables don't pull through any SEO data.

Any ideas on how to fix this?

I am running SEO Manager version 1.2.2 and October build 454.

Cheers,

Strip tags from default meta description values

Is your feature request related to a problem? Please describe.
For our clients we use the richeditor for blog posts rather than the markdown editor. If the seo meta description is empty, It's default values are taken from the content of the post. Because we use the richeditor, it includes the html tags.

Describe the solution you'd like
It would be great if strip_tags() could be used on the default value for meta description.

Describe alternatives you've considered
At the minute, I'm extending the Post model to remove strip tags myself which is fine. Just making a suggestion for when I use this plugin again in the future.

Model translation

I've implemented the seo tag manager with the

public $implement = ['@RainLab.Translate.Behaviors.TranslatableModel','@Renatio.SeoManager.Behaviors.SeoModel',];

    public $translatable = [
        'name',
        'description',
        'subtitle',
        'seo_tag[meta_title]',
        'seo_tag[meta_description]'
    ];

But cant save the seo field for other languages (error Call to a member function hasRelation() on array)

og:image not linked to media

It looks like the og:image field is now set as a media finder field. This is causing two issues:

  • og:image should be <meta property="og:image" content="{{ seoTag.og_image | media }}"> | media is missing in the seotags/default.htm
  • The width and height are empty and not calculated.

Ability to edit CMS SEO without CMS permissions

I would love to have a way to edit the SEO without giving my clients access to the CMS pages required. A lot of work that I do requires a custom coded template and this would be an awesome thing to have on hand

Object of class class@anonymous could not be converted to string

Object of class class@anonymous could not be converted to string

Symfony\Component\Debug\Exception\FatalThrowableError: Object of class class@anonymous could not be converted to string in /home/artistro08/.sites/kicksaas/plugins/renatio/seomanager/components/SeoTags.php:102
Stack trace:
#0 /home/artistro08/.sites/kicksaas/plugins/renatio/seomanager/components/SeoTags.php(102): str_replace()
#1 /home/artistro08/.sites/kicksaas/plugins/renatio/seomanager/components/SeoTags.php(87): Renatio\SeoManager\Components\SeoTags->setOgImageDimensions()
#2 /home/artistro08/.sites/kicksaas/plugins/renatio/seomanager/components/SeoTags.php(31): Renatio\SeoManager\Components\SeoTags->prepareSeoTag()
#3 /home/artistro08/.sites/kicksaas/modules/cms/classes/Controller.php(1266): Renatio\SeoManager\Components\SeoTags->onRender()
#4 /home/artistro08/.sites/kicksaas/modules/cms/twig/Extension.php(155): Cms\Classes\Controller->renderComponent()
#5 /home/artistro08/.sites/kicksaas/storage/cms/twig/8b/8b02ab8162368c147b517f5cb613396028f67e09e8822253e4109078696f6aaa.php(52): Cms\Twig\Extension->componentFunction()
#6 /home/artistro08/.sites/kicksaas/vendor/twig/twig/src/Template.php(405): __TwigTemplate_1c1317f35957037cd2208046ba46d6f085b73c8cf2b433d0f191a5b41a02be80->doDisplay()
#7 /home/artistro08/.sites/kicksaas/vendor/twig/twig/src/Template.php(378): Twig\Template->displayWithErrorHandling()
#8 /home/artistro08/.sites/kicksaas/vendor/twig/twig/src/Template.php(390): Twig\Template->display()
#9 /home/artistro08/.sites/kicksaas/modules/cms/classes/Controller.php(1122): Twig\Template->render()
#10 /home/artistro08/.sites/kicksaas/modules/cms/twig/Extension.php(115): Cms\Classes\Controller->renderPartial()
#11 /home/artistro08/.sites/kicksaas/storage/cms/twig/b4/b48c0f3dede825f63e96de397aa31c8de116e34919f4189feb0e23fa1cb41c83.php(42): Cms\Twig\Extension->partialFunction()
#12 /home/artistro08/.sites/kicksaas/vendor/twig/twig/src/Template.php(405): __TwigTemplate_107c8a89757e84573852498997cc344d9b798b66267a01885eb76a50c4238087->doDisplay()
#13 /home/artistro08/.sites/kicksaas/vendor/twig/twig/src/Template.php(378): Twig\Template->displayWithErrorHandling()
#14 /home/artistro08/.sites/kicksaas/vendor/twig/twig/src/Template.php(390): Twig\Template->display()
#15 /home/artistro08/.sites/kicksaas/modules/cms/classes/Controller.php(435): Twig\Template->render()
#16 /home/artistro08/.sites/kicksaas/modules/cms/classes/Controller.php(222): Cms\Classes\Controller->runPage()
#17 /home/artistro08/.sites/kicksaas/modules/cms/classes/CmsController.php(50): Cms\Classes\Controller->run()
#18 /home/artistro08/.sites/kicksaas/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(54): Cms\Classes\CmsController->run()
#19 /home/artistro08/.sites/kicksaas/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(45): Illuminate\Routing\Controller->callAction()
#20 /home/artistro08/.sites/kicksaas/vendor/laravel/framework/src/Illuminate/Routing/Route.php(219): Illuminate\Routing\ControllerDispatcher->dispatch()
#21 /home/artistro08/.sites/kicksaas/vendor/laravel/framework/src/Illuminate/Routing/Route.php(176): Illuminate\Routing\Route->runController()
#22 /home/artistro08/.sites/kicksaas/vendor/laravel/framework/src/Illuminate/Routing/Router.php(681): Illuminate\Routing\Route->run()
#23 /home/artistro08/.sites/kicksaas/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(130): Illuminate\Routing\Router->Illuminate\Routing\{closure}()
#24 /home/artistro08/.sites/kicksaas/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(41): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#25 /home/artistro08/.sites/kicksaas/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(171): Illuminate\Routing\Middleware\SubstituteBindings->handle()
#26 /home/artistro08/.sites/kicksaas/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(49): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#27 /home/artistro08/.sites/kicksaas/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(171): Illuminate\View\Middleware\ShareErrorsFromSession->handle()
#28 /home/artistro08/.sites/kicksaas/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(56): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#29 /home/artistro08/.sites/kicksaas/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(171): Illuminate\Session\Middleware\StartSession->handle()
#30 /home/artistro08/.sites/kicksaas/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(37): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#31 /home/artistro08/.sites/kicksaas/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(171): Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse->handle()
#32 /home/artistro08/.sites/kicksaas/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(67): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#33 /home/artistro08/.sites/kicksaas/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(171): Illuminate\Cookie\Middleware\EncryptCookies->handle()
#34 /home/artistro08/.sites/kicksaas/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(105): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#35 /home/artistro08/.sites/kicksaas/vendor/laravel/framework/src/Illuminate/Routing/Router.php(683): Illuminate\Pipeline\Pipeline->then()
#36 /home/artistro08/.sites/kicksaas/vendor/laravel/framework/src/Illuminate/Routing/Router.php(658): Illuminate\Routing\Router->runRouteWithinStack()
#37 /home/artistro08/.sites/kicksaas/vendor/laravel/framework/src/Illuminate/Routing/Router.php(624): Illuminate\Routing\Router->runRoute()
#38 /home/artistro08/.sites/kicksaas/vendor/october/rain/src/Router/CoreRouter.php(31): Illuminate\Routing\Router->dispatchToRoute()
#39 /home/artistro08/.sites/kicksaas/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(170): October\Rain\Router\CoreRouter->dispatch()
#40 /home/artistro08/.sites/kicksaas/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(130): Illuminate\Foundation\Http\Kernel->Illuminate\Foundation\Http\{closure}()
#41 /home/artistro08/.sites/kicksaas/plugins/offline/responsiveimages/classes/ResponsiveImagesMiddleware.php(30): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#42 /home/artistro08/.sites/kicksaas/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(171): OFFLINE\ResponsiveImages\Classes\ResponsiveImagesMiddleware->handle()
#43 /home/artistro08/.sites/kicksaas/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/CheckForMaintenanceMode.php(63): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#44 /home/artistro08/.sites/kicksaas/vendor/october/rain/src/Foundation/Http/Middleware/CheckForMaintenanceMode.php(23): Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode->handle()
#45 /home/artistro08/.sites/kicksaas/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(171): October\Rain\Foundation\Http\Middleware\CheckForMaintenanceMode->handle()
#46 /home/artistro08/.sites/kicksaas/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(105): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#47 /home/artistro08/.sites/kicksaas/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(145): Illuminate\Pipeline\Pipeline->then()
#48 /home/artistro08/.sites/kicksaas/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(110): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter()
#49 /home/artistro08/.sites/kicksaas/index.php(43): Illuminate\Foundation\Http\Kernel->handle()
#50 /home/artistro08/.config/composer/vendor/cpriego/valet-linux/server.php(232): require('/home/artistro0...')
#51 {main}

To Reproduce
Steps to reproduce the behavior:

  1. Fresh install of OCS
  2. Install plugin with project:sync
  3. add component to

Expected behavior
Plugin working without error, and displays SEO content

October version
v2.2.9

Plugin version
3.1.2

Problem with models not implementing ExtendableTrait and HasRelationships

We expected the problem with RainLab.Sitemap, but this Problem may occur on other Plugins too.

The problem root cause is the SeoModel expects all widget models to implement ExtendableTrait and HasRelationships but there is no check the model does. So when you try to render a Backend Form with Renatio.SeoManager enabled it fails!

The Problem can be found in Renatio\SeoManager\Behaviors\SeoModel line 59 if (isset($widget->model) && $widget->model->isClassExtendedWith(static::class)) {

There should be a Check for Traits used or if model is extending Model class.

Problem with PHP 7.4

When trying to install the plugin on a webserver with PHP 7.4 it gets the following exception:

[ErrorException]
Trying to access array offset on value of type int

og:image from RainLab blog

How do I get the featured image of a blog post to appear on social media using og:image? The plugin says it supports both og:image and RainLab blog - is there a specific piece of code that I need to get the featured blog post image into the header? It is not showing by default.

seo tags not showing in front end

Hello,
I have installed the plugin, and added the component onto my header partial, and added the values in my CMS static pages, but the tags are not showing up in the front end.

My layout is as follows:

{% partial 'header' %} {% page %} {% partial 'footer' %}

My header partial is as follows:

<html lang="en">
<head>
    <link href="{{'plugins/bootstrap-3.3.6/css/bootstrap.min.css'|cdn}}" rel="stylesheet"/>
    <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
    <!--[if lt IE 9]>
    <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
    <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
    <![endif]-->
     {% component 'seoTags' %}
     {% styles %}
    <script type="text/javascript">//<![CDATA[
    var tlJsHost = ((window.location.protocol == "https:") ? "https://secure.comodo.com/" : "http://www.trustlogo.com/");
    document.write(unescape("%3Cscript src='" + tlJsHost + "trustlogo/javascript/trustlogo.js' type='text/javascript'%3E%3C/script%3E"));
    //]]>
    </script>
</head>```

However, when I view the page source on the output I cannot see any SEO tags, please help.

Thank You

Website error after update on October 1.x

I am using October 1.x just updated October after that website stopped working.

error Class 'October\Rain\Support\Facades\Event' not found

how to go back to the old version?

Support for October CMS v3

I would love support for October v3. I would like for you to support Tailor structures and streams.

The current alternative would be to build the structures myself but I would like it to just "work" when a page is a structure or stream

Translate SEO

Hi,
I have problem to get translated Seo tags.
How to fix this problem?

Installation failed

Describe the bug
"There are no commands defined in the "seo" namespace." on line 579 of /var/www/vhosts/sviluppandosulweb.it/httpdocs/vendor/symfony/console/Application.php

To Reproduce
Steps to reproduce the behavior:
I bought the plugin from the OctoberCms portal, inserted in my project. I went to my site's backend to install, download all packages and finally get the following error: "There are no commands defined in the" seo "namespace." at line 579 of /var/www/vhosts/sviluppandosulweb.it/httpdocs/vendor/symfony/console/Application.php

October version
October 2.0 build 476

Config definition for media path has changed in October

The SeoTags component attempts the get og image dimensions in the setOgImageDimensions() method.

It attempts to get the path for the media directory using

config('cms.storage.media.path')

but this has since been changed in OctoberCMS v2 to

config('system.storage.media.path')

This causes the og_image_width and og_image_height properties not to be set so throws an error on the frontend when an seo image is added.

Default canonicals

Hi,

where can I change behaviors of default canonicals? I know I can do it manually (every page), but a setting to chose it would be more appreciated.
By default plugin ads canonical without trailing slash "/" and I would like to setup it the way it ads trailing slash to canonical.

ie.
Now:
<link rel="canonical" href="https://example.com/page-1">
Would love to have this:
<link rel="canonical" href="https://example.com/page-1/">

Best regards,
Zbyszek

Custom model implementation not working without Translations

Describe the bug
I am implementing SeoModel on a custom blog model. After upgrade to v3 and October v2 I can no longer save new custom models, and getting an error "Unexpected type of array when attempting to save attribute "translatable", try adding it to the $jsonable property".
Noting I have also ran both migration and patches for v3 upgrade.
It looks like the SEO behaviour is adding 'translatable'

To Reproduce
Steps to reproduce the behavior:

  1. $implement '@Renatio.SeoManager.Behaviors.SeoModel' as per docs on custom model.
  2. Do not have Rainlab.Translatable running/installed.
  3. Attempt to create and save a new custom model.
  4. See error

Expected behavior
The model should be created successfully.

October version
v2.1.28

Plugin version
v3.1.0

Additional context
Adding the below to my model solves the issue. I assume a check that Rainlab.Translatable is running needs to be added before adding the translatable attribute to the model.

  protected $jsonable = ['translatable'];
  public function beforeSave()
    {
        unset($this->translatable);
    }

Error when updating 1.3.3 -> 1.3.4

Hi,

Sorry but i'm not really confident with SSH/Composer/... I try to update my october CMS site with your plugin and I always get this error :

  • Root composer.json requires renatio/seomanager-plugin ^1.3, it is found renatio/seomanager-plugin[v1.3.3] in the lock file and renatio/seomanager-plugin[dev-master, v1.1.11] from composer repo (https://gateway.octobercms.com) but these do not match your constraint and are therefore not installable. Make sure you either fix the constraint or avoid updating this package to keep the one from the lock file.

Can you explain me what to do ?

Thanks.

Meta description limit change

Hi there,

We use your plugin on all our sites but have noticed that the meta description limit is set to 300. Google has since changed the limit to be 150-160 as seen here: https://blog.bit.ai/meta-description-length/. Any chance you can update this or make the limit configurable via a setting or something? I can change the lang file but the countdown and hard limits on save are hard coded. I am using it with October 2 currently.

Thank,
Adrian

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.