Git Product home page Git Product logo

seosuite's Introduction

SeoSuite

SEO Suite version MODX Extra by Sterc MODX version requirements

SEO Suite was introduced by Sterc as a MODX Extra that automatically redirects your 404 URLs to relevant pages on your website. 404 errors are a fairly common issue for anyone who’s transitioning from an old website to a new website. SEO Suite makes sure your visitors are redirected to a relevant page when they’re looking for an old URL.

SEO Suite v3.0

SEO Suite 2.0 combines the power of three extras, SEO Pro, SEO Tab and SEO Suite v1 into one powerful SEO extra. Not only have these three extra's been combined into one, but the codebase has gone through a large refactor and some great new features have been added. New SEO Suite 3.0 has been optimized to run on MODX3.

A custom panel dedicated to your focus keywords, meta title and description has been added, where you can view and switch between Google/Yandex previews or viewing the desktop or mobile preview. All search engine related properties have been gathered in a separate Search engine tab. A new tab "Social" has been added where you can manage the metadata used by Facebook and Twitter.

Migration

In order to migrate data from SEO Suite V1, SEO Tab or SEO Pro please run the migration during the SEO Suite update in the package installer.

Note: Please always backup your data before running any migrations and carefully check if the migration was finished succesfully.

Key features

  • Preview Google/Yandex search results on desktop and mobile
  • Manage search engine visibility (noindex, nofollow)
  • Manage internal search engine behavior
  • Manage your Google XML Sitemap(s)
  • Manage social media previews for Facebook using the Open Graph protocol and Twitter Cards markup
  • Manage 301 redirects
  • Automatically generates 301 redirects when changing a resource URL
  • When someone visits a non-existent page (404) on your website, the URL will be automatically added to SEO Suite so you can redirect it to an existing page.
  • SEO Suite comes with a Dashboard widget, showing the 10 newest SEO Suite URL's
  • It is possible to import a .csv file containing 404 URL's and then search for redirects inside only one (related) context. This comes in handy for multilingual websites.
  • To get more specific redirect suggestions, you can exclude words from the matching system. Pay attention: when you add words to exclude after a .csv import, you might need to refresh the suggestions by clicking your right mouse button on the relevant 404 URL and choose 'Find suggestions'. After doing this, it will be refreshed.
  • Block certain redirects from being saved by adding blocking key words to system settings.

Bulk import 404 URLs

Through simply uploading a single column .csv file containing your 404 URLs, SEO Suite will look for similar pages on your website and redirect them automatically. This matching process is based on the URL information after the last slash (example.com/this-information).

  1. Gather your 404 URLs in a single column .csv file by exporting them or adding them manually. Make sure you’ve entered full URLs, including the domain. Example: https://modx.org instead of modx.org.
  2. Import the .csv file into SEO Suite.
  3. SEO Suite will look for similarities between your 404 URLs and the pages on your website (make sure the pages are published):
    • When there is one match, it will be automatically converted into a 301 redirect and stored in SEO Tab.
    • When there are several matches, you can choose the desired redirect manually (by choosing from suggestions).
    • When there are no matches, you can pick a redirect yourself (SEO Suite offers a search function so you can find a relevant redirect easily).

Plugin

The SEO Suite plugin handles all events where SEO Suite has to act upon. It also sets placeholders (when enabled) onLoadWebDocument so you can easily retrieve SEO metadata and include it in your code. You can read more about this in the SeoSuiteMeta section.

Snippets

SeoSuite comes with a few handy snippets for you to use.

SeoSuiteMeta

This snippet retrieves all metadata for you to include in the head of your web page. These placeholders are also available by default when the setting seosuite.placeholder_plugin_enabled is enabled. Then the snippet is called from a plugin which sets these placeholders for you. If you rather take control in your own hands, you can disable the plugin using the system setting and call the snippet yourself.

Here's an example of all available placeholders of the SeoSuiteMeta snippet when toPlaceholders is turned on.

<!-- Set by plugin. -->
[[!+ss_meta.meta_title]]
[[!+ss_meta.meta_description]]
[[!+ss_meta.robots]]
[[!+ss_meta.canonical]]
[[!+ss_meta.alternates]]
[[!+ss_meta.og_title]]
[[!+ss_meta.og_description]]
[[!+ss_meta.og_image]]
[[!+ss_meta.og_image_alt]]
[[!+ss_meta.og_type]]
[[!+ss_meta.twitter_site]]
[[!+ss_meta.twitter_title]]
[[!+ss_meta.twitter_description]]
[[!+ss_meta.twitter_image]]
[[!+ss_meta.twitter_image_alt]]
[[!+ss_meta.twitter_card]]

Or you can use the following placeholder to get all placeholders combined.

<!-- Set by plugin. -->
[[!+ss_meta]]

Properties

Property Description Default value
id ID of the resource to retrieve meta for. Current resource id.
tpl Meta tag tpl. tplMeta
tplSocial Social Meta tag tpl. tplMetaSocial
tplTitle Title tag tpl. tplMetaTitle
tplLink Link tpl. tplLink
tplAlternateWrapper Alternate lang wrapper tpl. tplAlternateWrapper
toPlaceholders Set output to placeholders false

SeoSuiteSitemap

Create sitemaps with the help of this snippet, by specifying a type, you can create different kinds of sitemaps:

  • Page sitemap (default)
  • Sitemap index containing child sitemaps, example structure:
    • Sitemap index: [[!SeoSuiteSitemap? &type=index]]
      • Page index: [[!SeoSuiteSitemap]]
      • Image index: [[!SeoSuiteSitemap? &type=images]]
  • Sitemap containing images.

You have to manually create a resource within MODX, Template: (empty). go to the tab Settings and set Content Type: XML, Cachable and Rich Text should be ticked off. In the content field, use the following code:

[[!SeoSuiteSitemap]]
OR
[[!SeoSuiteSitemap? &type=`index`]]
OR
[[!SeoSuiteSitemap? &type=`images`]]
Property Description Default value
contexts Specify one or more contextKey's, separated by a comma. web
allowSymlinks Set this to 1 if you want to include symlinks in your sitemap. 0
outerTpl Refer to a chunk here to change the outer template, which contains rows of rowTpl's (see below). sitemap/outertpl
rowTpl Refer to a chunk here to change the rowTpl which is repeated for every resource which is included in the sitemap. sitemap/rowtpl
type Specify a sitemap type to generate a sitemap index page or an images sitemap. Possible values are: index/images.
indexOuterTpl Refer to a chunk here to change the outer template, which contains rows of rowTpl's for the sitemap index. sitemap/index/outertpl
indexRowTpl Refer to a chunk here to change the rowTpl which is repeated for every sitemap which is included in the index sitemap. sitemap/index/rowtpl
imagesOuterTpl Refer to a chunk here to change the outer template, which contains rows of rowTpl's for the images sitemap. sitemap/images/outertpl
imagesRowTpl Refer to a chunk here to change the rowTpl which is repeated for every resource which is included in the images sitemap which can contain multiple images. sitemap/images/rowtpl
imageTpl Refer to a chunk here to change the imageTpl which is repeated for every image which is included for a resource. sitemap/images/imagetpl
templates Comma delimited list of template ID's to generate a template specific sitemap for. Exclude templates from a sitemap by prepending the template ID with an "-". For example: &templates=-1,2,3

Cronjobs

Inside the core/components/seosuite/elements/cronjobs/ directory you can find the SeoSuite cronjobs.

Redirect cleanup

Removes unresolved redirects which are older then 1 month and have been triggered just once.

Example usage:

php redirect-cleanup.php --till=2018-11-23 --triggered=2

File: redirect-cleanup.php

Property Description Default value
till Till date for unresolved redirects to remove. Current date - 1 month
triggered Maximum amount of triggers for the unresolved redirects you want to remove. 1

Future features

  • 301 redirect statistics: SEO Suite will feature a custom manager page containing 301 redirects statistics. A dashboard widget will be provided which shows the 10 redirects with the most hits.
  • Automatically import 404's from Google Search Console.

Bugs and feature requests

We greatly value your feedback, feature requests and bug reports. Please issue them on Github.

seosuite's People

Contributors

bezumkin avatar bravens avatar byemma avatar cany748 avatar gitrequests avatar gpsietzema avatar halftrainedharry avatar ilyautkin avatar joeke avatar mark-h avatar mrroco avatar pien-sterc avatar rthrash avatar rtripault avatar sdrenth avatar syts88 avatar viperaix avatar wax100 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

seosuite's Issues

Error during installation of 3.0.0-beta into MODX3 site.

Just installed the 3.0.0-beta update into my MODX 3.0.0-beta1 installation. Installation completed, but ended with this error:

Could not load class: modTransportPackage from mysql.modtransportpackage
Could not get table name for class:
Error 42000 executing statement: Array ( [0] => 42000 [1] => 1064 [2] => You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AS latestPackage WHERE latestPackage.package_name = `modTransp' at line 3 )

index/images

When I add the property &type to SeoSuiteSitemap with either images or index no pages are returned. It works without it.

Contradicting UI on twitter/facebook image upload

The description text below the upload field recommends a 1200x630 format as the "best format", but if I upload a landscape image, it is displayed as a square image.

image

P.S. From what I can see, metatag output sticks to the original image

seosuite is not returning anything

I don't know what is going wrong, but I did the following and nothing is returned in my code on the website:

  1. Install SEOsuite
  2. choose upgrade SEOTab and SEOpro
  3. remove SEOTab and SEOpro
  4. seosuite.placeholder_plugin_enabled is enabled
  5. cleared cache

Nothing happens. Only the sitemap works. Did I overlook something? Do I need to put something in the head?

disabling seosuite.placeholder_plugin_enabled and put [[!+ss.meta]] or [[!+ss_meta]] also returns nothing.

Not clear to me what goes wrong.

Modx 2.8.1. PHP 7.4

Facebook image path not correct when using different media source

When the default media source is set to another directory in the system settings, f.e. assets/userfiles/, then the link to the image is wrong.

It must be:

<meta property="og:image" content="https://www.website.com/assets/userfiles/galleries/23/14_8.jpg" />

instead I get (when selecting the correct image in the backend):

<meta property="og:image" content="https://www.website.com/galleries/23/14_8.jpg" />

The assets/userfiles/ path is missing.

Modx 2.8.3. PHP 7.4.

afbeelding

Routing/Redirect issue after moving from apache to nginx

I am having a routing problem migrating from apache to nginx using SEO Suite and Articles extension:

  • example.com/blog/test-article.html is set in 301 redirects
  • correctly redirects to example.com/blog/category/2021/10/29/test-article/ (set via freeze URL)

After migrating to nignx this redirect is not working anymore. I’m getting a 404. When I change the 301 redirect to something like this

  • example.com/path/does/not/exist/article.html

it is working again.

How to reproduce this issue:

  1. Install MODX with SEO Suite and Articles on LEMP Stack (using MODX docs nginx configuration file)

  2. Create an ArticlesContainer called blog

  3. Inside blog create an article set to unpublished => URL will be /blog/test-article.html

  4. Publish article => URL will change to /blog/2021/10/29/test-article.html

  5. Redirect 301 will be automatically added for /blog/test-article.html

  6. Open this url
    => MODX returns 404 instead of 301

  7. Modify the path of the 301 redirect to something that doesn’t exist for example /does/not/exist/test-article.html

  8. Open this url
    => MODX returns 301 and redirects to the article

So it looks like nginx can’t resolve the path correctly when it matches an existing path. I am using the example nginx configuration from modx docs. Any ideas? (https://docs.modx.com/current/en/getting-started/friendly-urls/nginx)

Is this something that should be fixed in SEO Suite, in Articles extension or is the nginx configuration not setup correctly?

Move SEO panel to a different location

The SEO panel is really large, pushing the Content area way down the screen. It would be great to be able to move this under the Content area, or into a tab by itself.

Modx keeps saving when html tags containing a slash are used in META title

As it seems, seoSuite has taken over the *longtitle field as the META title field. I can live with that, but we used to apply <strong>words</strong> or <br/> (can be <br> without slash, so no problem) in the longtitle. That worked fine but after installing seoSuite we can't do that no more as an error occurs:

VM621:1 Uncaught SyntaxError: Invalid regular expression: missing /
    at doDecode (ext-all.js:21)
    at Object.decode (ext-all.js:21)
    at Ext.form.Action.Submit.handleResponse (utilities.js:340)
    at Ext.form.Action.Submit.processResponse (ext-all.js:21)
    at Ext.form.Action.Submit.success (ext-all.js:21)
    at o (ext-all.js:21)
    at Ext.data.Connection.s (ext-all.js:21)
    at HTMLIFrameElement.I (ext-all.js:21)

Schermafbeelding 2021-02-03 om 13 35 13

Cannot create tables when installing - possible mysql8 compatibility issues

We are using PHP 7.4, MySQL 8

Could not create table `seosuite_url` SQL: CREATE TABLE `seosuite_url` (`id` INTEGER unsigned NOT NULL AUTO_INCREMENT, `context_key` VARCHAR(100) NOT NULL DEFAULT '', `url` VARCHAR(2000) NOT NULL DEFAULT '', `suggestions` TEXT NULL, `visits` INTEGER(11) NOT NULL DEFAULT '0', `last_visit` TIMESTAMP NULL DEFAULT '0000-00-00 00:00:00', `createdon` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`), INDEX `context_key` (`context_key`), INDEX `url` (`url`)) ENGINE=InnoDB ERROR: Array ( [0] => 42000 [1] => 1071 [2] => Specified key was too long; max key length is 3072 bytes )
xPDOVehicle resolver failed: type php
Could not create table `seosuite_redirect` SQL: CREATE TABLE `seosuite_redirect` (`id` INTEGER unsigned NOT NULL AUTO_INCREMENT, `context_key` VARCHAR(100) NOT NULL DEFAULT '', `resource_id` INTEGER(10) NOT NULL DEFAULT '0', `old_url` VARCHAR(255) NOT NULL DEFAULT '', `new_url` VARCHAR(255) NOT NULL DEFAULT '', `redirect_type` VARCHAR(75) NOT NULL DEFAULT '', `active` TINYINT(1) unsigned NOT NULL DEFAULT '1', `visits` INTEGER(11) NOT NULL DEFAULT '0', `last_visit` TIMESTAMP NULL DEFAULT '0000-00-00 00:00:00', `editedon` TIMESTAMP NULL ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`), INDEX `context_key` (`context_key`), INDEX `resource_id` (`resource_id`), INDEX `old_url` (`old_url`), INDEX `active` (`active`)) ENGINE=InnoDB ERROR: Array ( [0] => 42000 [1] => 1067 [2] => Invalid default value for 'last_visit' )

Permanent error in logs

Summary
Permanent error in logs:
[2021-03-26 11:53:45] (ERROR @ ../components/seosuite/model/seosuite/seosuite.class.php : 778) PHP warning: trim() expects parameter 1 to be string, array given

Environment
MODX 2.8.1-pl
SEO Suite 2.0.2-pl

Hide panel on specified templates

Looking for a way to hide the panel that SEO Suite uses to add meta data. We often use resources that are just the content field for CSS or JS, since the SEO Suite panel is large (and isn't needed for these resources) it would be nice to be able to hide it.

This may be related to #7 or #10.

I'm not incredibly well versed in MODX development, outside of snippets and small plugins, but I could try to get a PR together if I'm pushed in the right direction 🙂

warning from Facebook

I get this warning form Facebook scraper:

The following meta tags are specified using 'name' instead of 'property' and will be ignored unless specified using the 'property' key: og:description, og:image, og:title, og:type

Redactor 3.0 Issues

I have installed this on two sites and both times it caused issues with Redactor 3.0.

All formatting within Redactor is removed or set to "p" tags.

When switching to code view CodeMirror is not available and switching back removes formatting.

Thanks for all the work on this. I was paying for this extra through modmore but I see that it's no longer available there.

Blank page when I put an image path in the “Facebook Image” and/or “Twitter Image

Modx 3.0.0-beta1
MAMP PRO 6.6
PHP 7.3.29
BD : mysql
Version : 5.7.34
SEO Suite : 2.0.5

First of all thank you for offering this great plugin to the community.

I am testing SEO Suite with Modx 3 and I am having this problem :

I got a blank page when I put an image path in the “Facebook Image” and/or “Twitter Image” field.

If I keep the “Facebook Image” and “Twitter Image” field empty, my page is displayed correctly with all the meta tags.

As soon as I enter a path in the “Facebook Image” and / or “Twitter Image” field, then I have a completely blank page, without any code.

Here is the error log:
With the image for Facebook only
[2021-11-23 23:11:05] (ERROR @ /Volumes/HDT5/webdev/modx3/core/vendor/xpdo/xpdo/src/xPDO/Om/xPDOObject.php : 227) Error 42S02 executing statement:
Array
(
[0] => 42S02
[1] => 1146
[2] => Table 'modx3beta.modx_seosuite_redirect' doesn't exist
)

[2021-11-23 23:11:24] (ERROR @ /Volumes/HDT5/webdev/modx3/core/vendor/xpdo/xpdo/src/xPDO/xPDO.php : 786) modMediaSource::load() is not a valid static method.

With image for Twitter only
[2021-11-23 23:12:27] (ERROR @ /Volumes/HDT5/webdev/modx3/core/vendor/xpdo/xpdo/src/xPDO/Om/xPDOObject.php : 227) Error 42S02 executing statement:
Array
(
[0] => 42S02
[1] => 1146
[2] => Table 'modx3beta.modx_seosuite_redirect' doesn't exist
)

[2021-11-23 23:12:42] (ERROR @ /Volumes/HDT5/webdev/modx3/core/vendor/xpdo/xpdo/src/xPDO/xPDO.php : 786) modMediaSource::load() is not a valid static method.

Thanks for your help

Articles support

I haev found that SEO Suite doesn't work with Articles pages?
Which is tricky because the blog pages are the most relevant for SEO!

disabled_templates not working

MODX 3.0.1, 3.0.2-dev; SEOSuite 3.0.4-beta

disabled_templates aren't working correctly:

  • left empty: shows on all templates (correct)
  • template(s) entered don't show but others do.

Frankly I prefer this behaviour as I'd rather opt-in than out, but it doesn't do what it's supposed to.

Broken link in the widget

Summary
https://prnt.sc/14uovku/

$_lang['seosuite.widget_desc'] = 'Здесь вы можете просмотреть 10 последних добавленных URL 404. Для просмотра и управления всеми вашими 404 URL-адресами посетите страницу <a href="[[++manager_url visible ]?a=home&amp;namespace=seosuite">SEO Suite</a> ';

Environment
MODX 2.8.1-pl
SEO Suite 2.0.3-pl

Fatal php 8 error

Summary

Fatal error: Uncaught TypeError: trim(): Argument #1 ($string) must be of type string, array given in /core/components/seosuite/model/seosuite/seosuite.class.php:779
Stack trace: #0 [internal function]: trim(Array)
#1 /core/components/seosuite/model/seosuite/seosuite.class.php(779): array_map('trim', Array)
#2 /core/components/seosuite/model/seosuite/snippets/seosuitesnippets.class.php(151): SeoSuite->renderMetaValue('[[+description]...', Array)
#3 /home/smproject/330om.smartconstractor.ru/docs/core/cache/includes/elements/modsnippet/32.include.cache.php(14): SeoSuiteSnippets->seosuiteMeta(Array)
#4 /home/smproject/330om.smartconstractor.ru/docs/core/model/modx/modscript.class.php(76): include('/home/smproject...')
#5 /home/smproject/330om.smartconstractor.ru/docs/core/model/modx/modx.class.php(1861): modScript->process(NULL)
#6 /home/smproject/330om.smartconstractor.ru/docs/core/components/seosuite/model/seosuite/plugins/seosuiteresourceplugin.class.php(238): modX->runSnippet('seosuiteMeta', Array)
#7 /home/smproject/330om.smartconstractor.ru/docs/core/components/seosuite/model/seosuite/seosuite.class.php(338): SeoSuiteResourcePlugin->onLoadWebDocument(Object(modSystemEvent), Array)
#8 /home/smproject/330om.smartconstractor.ru/docs/core/cache/includes/elements/modplugin/8.include.cache.php(11): SeoSuite->firePlugins(Object(modSystemEvent), Array)
#9 /home/smproject/330om.smartconstractor.ru/docs/core/model/modx/modscript.class.php(76): include('/home/smproject...')
#10 /home/smproject/330om.smartconstractor.ru/docs/core/model/modx/modx.class.php(1670): modScript->process(NULL)
#11 /home/smproject/330om.smartconstractor.ru/docs/core/model/modx/modrequest.class.php(133): modX->invokeEvent('OnLoadWebDocume...')
#12 /home/smproject/330om.smartconstractor.ru/docs/core/model/modx/modrequest.class.php(122): modRequest->prepareResponse()
#13 /home/smproject/330om.smartconstractor.ru/docs/core/model/modx/modx.class.php(1457): modRequest->handleRequest()
#14 /home/smproject/330om.smartconstractor.ru/docs/index.php(54): modX->handleRequest()
#15 {main} thrown in /home/smproject/330om.smartconstractor.ru/docs/core/components/seosuite/model/seosuite/seosuite.class.php on line 779

Environment
MODX 2.8.2-pl
SEO Suite 2.0.2-pl

SEOsuite not display the sitemap

Just tried the amazing Seosuite. It’s been a bliss to see those extras work together. Thanks so much for putting it out.

So the problem I have is to display the sitemap correctly.

What i did:

  1. Create a resource tpl empty
  2. Uncheck cache and richtext
  3. Put the snippet [[!SeoSuiteSitemap]] in content
  4. Set the type to XML

But the result is: This XML file does not appear to have any style information associated with it. The document tree is shown below.
sitemap

Error Page should not have canonical link

Generally, if [[*id]]==[[++error_page]], the canonical link should not get set. You would therefore be able to create a never-ending stream of self-referencing 404-pages if you post all of those into a forum post and misguide the search engine.

Easy fix for myself, for someone with little SEO knowledge however this might be something they would not want to do.

Canonical tag is formatted as a meta tag - wrongly

One thing I noticed is that it formats canonical links incorrectly. It outputs them as meta tags:

But they shouldn’t be meta tags - they should be output like this:

Canonical tags need their own tpl.

Default meta values when no SeoSuiteResource object

When there is no SeoSuiteResource object for a resource, the ss_meta placeholder does not return anything due to the return false in the seosuiteMeta method in the SeoSuiteSnippets class. I feel this return false could be removed.

placeholders not working after migration from SEO TAB

So I’ve used SEO Sutie a handful of times, all great.
I prefer using the placeholders:

[[!+ss_meta.meta_title]]
[[!+ss_meta.meta_description]]
[[!+ss_meta.robots]]
[[!+ss_meta.canonical]]
[[!+ss_meta.alternates]]
[[!+ss_meta.og_title]]
[[!+ss_meta.og_description]]
[[!+ss_meta.og_image]]
[[!+ss_meta.og_image_alt]]
[[!+ss_meta.og_type]]
[[!+ss_meta.twitter_site]]
[[!+ss_meta.twitter_title]]
[[!+ss_meta.twitter_description]]
[[!+ss_meta.twitter_image]]
[[!+ss_meta.twitter_image_alt]]
[[!+ss_meta.twitter_card]]

so i can have full control over the output, rather than using this snippet:

[[!SeoSuiteMeta]]

On this occasion, I ‘migrated’ from SEO Pro to SEO Suite in the installer.

I’m not sure if this has done something different, but the placeholders don’t work - I can only bring in the meta tag using the snippet.

I’ve tried everything I can think of - turned on/off the system setting:
seosuite.placeholder_plugin_enabled

Cleared the core/cache
Logged out and in again.

I can only assume it’s related to the migration, as opposed to a standard install - although I have also reinstalled the extra.

Sitemap management tools needed.

It appears that the "Include this page in the sitemap?" is on by default, but pages do not show up in the sitemap unless you open and save that resource after the SEOSuite has been installed. This would be a grand pain for sites with more than 20/4/050++ pages.

ALSO

Once a page has been added to the sitemaps - if you disable the SEOSuite on the template that generates that page - there is no way to remove it from the sitemap, unless you enable the suite, edit the page then disable the suite again. (or delete it from the seosuite_resource table)

Managing sitemap preferences, frequencies & priorities on a page by page basis is extremely cumbersome - A sitemap management tool is really needed under the Extras->Seo Suite section.

Default values for images and text content

Redundantly managing content and images isn't something that clients like to do. This would be a lot more powerful if SEO Suite could just be installed and fall back to certain fields and values if null or empty.

Example:

  • Facebook description defaults to [[*description]] if empty
  • og:image defaults to a certain TV if empty, if that TV is empty, fall back to dedicated system setting
  • same for title etc.

This is a great tool and could be a drop-in extension that is super powerful. Right now we need to manage each and every page individually. The process above would solve this and make it useful immediately after installation.

Problem when switching to php version 8.0.1

There is a problem when switching to php version 8.0.1.

Fatal error: Uncaught TypeError: implode(): Argument #2 ($array) must be of type ?array, string given in /home/smproject/dasha.pro/docs/core/components/seosuite/model/seosuite/snippets/seosuitesnippets.class.php:141
Stack trace:
#0 /home/smproject/dasha.pro/docs/core/components/seosuite/model/seosuite/snippets/seosuitesnippets.class.php(141): implode(Array, '\n')
#1 /home/smproject/dasha.pro/docs/core/cache/includes/elements/modsnippet/44.include.cache.php(14): SeoSuiteSnippets->seosuiteMeta(Array)
#2 /home/smproject/dasha.pro/docs/core/model/modx/modscript.class.php(76): include('/home/smproject...')
#3 /home/smproject/dasha.pro/docs/core/model/modx/modx.class.php(1865): modScript->process(NULL)
#4 /home/smproject/dasha.pro/docs/core/components/seosuite/model/seosuite/plugins/seosuiteresourceplugin.class.php(238): modX->runSnippet('seosuiteMeta', Array)
#5 /home/smproject/dasha.pro/docs/core/components/seosuite/model/seosuite/seosuite.class.php(338): SeoSuiteResourcePlugin->onLoadWebDocument(Object(modSystemEvent), Array)
#6 /home/smproject/dasha.pro/docs/core/cache/includes/elements/modplugin/21.include.cache.php(9): SeoSuite->firePlugins(Object(modSystemEvent), Array)
#7 /home/smproject/dasha.pro/docs/core/model/modx/modscript.class.php(76): include('/home/smproject...')
#8 /home/smproject/dasha.pro/docs/core/model/modx/modx.class.php(1674): modScript->process(NULL)
#9 /home/smproject/dasha.pro/docs/core/model/modx/modrequest.class.php(133): modX->invokeEvent('OnLoadWebDocume...')
#10 /home/smproject/dasha.pro/docs/core/model/modx/modrequest.class.php(122): modRequest->prepareResponse()
#11 /home/smproject/dasha.pro/docs/core/model/modx/modx.class.php(1461): modRequest->handleRequest()
#12 /home/smproject/dasha.pro/docs/index.php(54): modX->handleRequest()
#13 {main} thrown in /home/smproject/dasha.pro/docs/core/components/seosuite/model/seosuite/snippets/seosuitesnippets.class.php on line 141

Broken image

111
After I upload image , select it, save page and refresh it - I get broken image.
Image is from Custom media Souce. On frontend I also get broken image

Return all placeholders is empty on toPlaceholders

When running the snippet with toPlaceholders switched on, all fields that have been set will be rendered when triggered individually, however, the placeholder allegedly holding all placeholders is empty.

MODX 3 : margin to right of icon in tabs messes up trash icon spacing

In your CSS, this line:

.x-btn-text .icon, .x-tab-strip-text .icon {
    margin-right: 8px;
}

puts spacing to the right of the social icons in the Social tab, but it also puts a margin to the right of the trash icon in the main MODX editing button bar:
Screen Shot 2021-12-12 at 11 48 45 AM

I suggest changing your CSS to make it specific to the tab area instead of globally — something like this:

.x-tab-panel-header .x-btn-text .icon, .x-tab-panel-header .x-tab-strip-text .icon {
    margin-right: 8px;
}

Adding ".x-tab-panel-header" in front of the classes fixes the problem, although with ".x-tab-strip-text .icon" this still makes the style applied to any other extras that may use icons in the side tabs. It also applies to the trash can in the modx-leftbar-tabpanel, but fortunately it gets overridden by one of the MODX manager CSS declarations.

Hide/Show Settings by User Group

It would be useful to hide (disallow, disable etc.) all the settings (inc. the blue "Search engine" and "Social" links/tabs) based on the user-group to prevent certain users from poking around where they don't need to be.

I've seen some Extras use a System Setting that allows the user to type a comma-separated list of user-groups that are not allowed access to settings. Perhaps something along those lines?

I was hoping I could simply hide all of it using ACLs but that doesn't seem possible.

Can't install the component on most shared hosting

I keep getting an error during installation:
photo_2021-04-21_15-06-17
The max limit for the index is 3072 bytes, but the table has a varhar field (2000)
It turns out that when encoding utf8mb4_unicode_ci, the limit is exceeded.
If the MySQL server is configured correctly, then the index should be truncated to 768, but this is not the case for most hosting companies.

changefreq value issues

A changefreq value of hourly returns 0.5 in the changefreq placeholder. The changefreq value of always returns 1 in the changefreq placeholder. I have not checked this further, but at least the two values are definitely wrong.

These values can be selected in the dropdown in the Search engine -> Sitemap tab of a resource.

Feature Request - Some more options for SEOSuite

Hello Sterc-Team,

would it be possible to provide an option in the system settings to disable the Yandex search engine?
Likewise for the social area in relation to Twitter and Facebook?

Best regards,
Stefan

Make Settings area customizable

When activating this plugin, it will display above the content in a very dominant way. MODX is about customizing the user-experience as close to the clients needs as possible. I'd like to move the SEO settings per resource either below the content or have the SEO-Section collapsed. Otherwise the most important part (the content) will always display belog the SEO section.
Would be glad if we could just choose to move it some place else, much like Tagger does it.

og:image and twitter:image return media source pathes with tags as simple strings

I'm using dedicated media sourcs for each resource

basePath: [[ppb_migxResourceMediaPath? &pathTpl=assets/uploads/resources/{id}/ &createFolder=1 ]]
baseUrl: [[ppb_migxResourceMediaPath? &pathTpl=assets/uploads/resources/{id}/ &createFolder=1 ]]

This technique goes back to a post writen by BobRay about 10 years ago (time flies) and with a few exceptions that need special attention (for example: pdoTool), it usually works very well.

The idea is that each resources has a unique directory that collects all files needed.

If I set the default media source to a media source with a snippet, this setting is picked up by Seo Suite and I can upload images into the right directory.

The image is also correctly dispayed on the manager tabs for facebook and twitter.

The plugin creating the placeholders on the frontend side doesn't process this setting, but returns it as a normal string.

<meta property="og:image" content="https://example.com/index.php?id=1/[[ppb_migxResourceMediaPath? &pathTpl=`assets/uploads/resources/{id}/` &createFolder=`1` ]]/cardi.jpg">

meta name\property

If we use custom plugin we get
<meta name="og:image" content="LINK_TO_IMAGE" /> 
but correct should be
<meta property="og:image" content="LINK_TO_IMAGE" /> 

So all social meta tags should use PROPERTY instead of name.
Will be good If U add this as custom feature

MODX 3 Image crashes page

In MODX 3 pre release adding a facebook image in the tab or in the system setting crashes the page.

Error Log says the following

[2021-11-18 14:43:43] (ERROR @ /www/core/vendor/xpdo/xpdo/src/xPDO/xPDO.php : 786) modMediaSource::load() is not a valid static method.

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.