Coder Social home page Coder Social logo

wanze / seomaestro Goto Github PK

View Code? Open in Web Editor NEW
34.0 7.0 8.0 1.43 MB

🧙‍♂️A ProcessWire module helping you to manage SEO related tasks like a boss.

License: MIT License

PHP 92.87% JavaScript 5.57% SCSS 1.56%
processwire processwire-modules seo metatags sitemap-xml

seomaestro's People

Contributors

dependabot[bot] avatar sebiworld avatar tiefenb avatar wanze avatar yuters avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

seomaestro's Issues

Canonical url default

Hey there Wanze.

I am wondering if the the default canonical url should be set by https://processwire.com/api/ref/wire-input/canonical-url/

I have had issues with this module and paginated pages. Specifically pages linked to from eg /posts/page2 aren't being indexed because /posts/page2 is canonicalised to posts/ by default.

This is a clear and up to guide to best practices around pagination: https://ahrefs.com/blog/rel-prev-next-pagination/

Basically if paginated pages have different content and you don't have a view all page then they should be canonicalised to themselves.

Recommended meta description length

Currently the module suggests a meta description "less than 320 characters long":

Every page should have a unique Meta Description, ideally less than 320 characters long.

Actual recommendation (i.e. the amount of characters that actually get displayed in Google) is between 120 to 158 characters. Mobile results have less space (and show fewer characters), desktop results have more space (and bigger limit). Google did use the 300+ char limit for some months between 2017 and 2018, but that change was relatively short lived :)

Overall I think that suggesting "ideally less than 320 characters" is misleading for authors who may not be aware of existing limits. As such, I think that "ideally less than 160 characters" would be a good compromise.

Multiple og:images

Hi,

I have been using this module for quite a while, but today I have a problem that I need to define multiple og:images for a page. I was surprised at first, but when I looked up that this is quite possible, I looked to see if this module supports that. With regret I had to find out that this is not the case.

I think that this problem is quite rare and could definitely be solved otherwise, but also an extension of the module would make sense.

The problem is as follows. We link our pages on Facebook and it is quite supposed to use other thumbnails than the default image. Apparently it is not possible from our side when posting a web page, to add an additional image as a thumbnail, so I was asked to add another og:image, because through this Facebook lists all og:images and you are able to choose one of them when posting.

I will now implement a WorkAround as a temporary solution, but it would be great if a feature is implemented in the module that could insert multiple images via og:images.

Finally, I thank you again very much for this module.

[Feature Request] Meta Image as Image Field

It would be good if the image field was rendered as an image field rather than a text field. This would make it easier for clients to change the image presented when sharing pages.

One line incompatible with PHP version less than 7.0

Hi. I uploaded my PW site to a client server that was running older PHP version and SeoMaestro threw a 500 server error. Error log showed an issue:

Parse Error: syntax error, unexpected '?' (line 211 of /site/modules/SeoMaestro/src/SeoDataBase.php)

Which is return $defaultConfig[$key] ?? null;

So the ?? is the only thing that stops SeoMaestro from working in older PHP versions.

I suggest changing it to "old-school" return isset($defaultConfig[$key]) ? $defaultConfig[$key] : null;

Global Defaults

I'd love to have some site wide global defaults that can be overridden by the template defaults and then page defaults.

Seo image is duplacated multiple times

I've figured out a problem with your module.

  • PW Ver. 3.0.184
  • Modul Ver. 1.1.0
  • PHP 7.4
  • Settings - see. Screenshot below

Description:
Till now I've only setup one image on the Homepage (page id 1) for the SEO image field.
But it seems, that every time ~~ I save the page ~~ an extra image is created in site/assets/files/1234 the folder corresponding to the page I'm saving.

EDIT OUUUCH -It seems even worse: - The suspicious files are generated every time the page is loaded in frontend - see last three screenshots.

This blows up the assets folder enormously and is absolutely weird.

Settings
Screenshot 2021-12-20 at 10-30-13 Feld bearbeiten seo_meta • stadthalle-kelkheim local

Duplicate files
2021-12-20 10_39_12

SEO hompage - ID 1
2021-12-20 10_44_08

SEO page id 1029
2021-12-20 10_48_32

** Files beeing generated after EVERY page visit**

2021-12-20 11_11_58
2021-12-20 11_13_13
2021-12-20 11_14_14

How to fallback to a custom Opengraph image

Hi @wanze,

thank you …

  1. I'll open an github issue
  2. I have set up an exclusive images field (og_image). In the details tab @seo maestro field it is set as default for the opengraph image {og_image}.
    The images fieldtype offers an option to fetch a default value (tab details) from a specific page if the field is empty. Since I have a global site settings page, I would like to fetch a default og_image from that settings page (in case the content page og_image-field is emtpy).

When I fetch $page->og_image on a content page, it returns the default image from the settings-page. The seo maestro output in header however contains no image tag.
I guess it's in your function getPageImage(), maybe it's related to the getUnformatted() call… that ignores the images-field options?

images-default-value

Originally posted by @esszett in #5 (comment)

Attribute value not allowed on element meta at this point.

Thanks for this module @wanze ... I noticed in the validator Tracy Debugger that the meta value should not be in some places of the code ...

See this screenshot:

fireshot capture 25 - processwire cms will rise to any task - http___starter test_

It seems that it is enough to change in two files

site\modules\SeoMaestro\src\MetaSeoData.php
site\modules\SeoMaestro\src\TwitterSeoData.php

localHttpUrl does not exist

Hi @wanze thanks for writing this module.

I got this error right after I added seo_maestro field to my template.

User Error

Exception: Method Page::localHttpUrl does not exist or is not callable in this context (in /####/public/wire/core/Wire.php line 519)

Note: Currently running a local PW site on Laravel Valet.

SeoDataBase encode issue

using v1.0 and ENT_XML1 with entities1 broke Turkish character "ü".

convert "Tüm" to "Tüm" and browser not propery display.

return $sanitizer->entities1($value, ENT_QUOTES | ENT_XML1);

changed this line to return $sanitizer->entities1($value, ENT_QUOTES); problem resolved.

php v7.2.19

PHP 8.1 errors

PHP Deprecated: preg_match(): Passing null to parameter #2 ($subject) of type string is deprecated in /site/modules/SeoMaestro/src/SeoDataBase.php:236

Support image fields that are nested, i.e. hero_fieldset.hero_image

Hi Wanze,

Great module, thanks for developing.

I'm trying to use a default image field that is nested hero_fieldset.hero_image, if the image field is not populated with an image it throws the following:
Error
Call to a member function get() on null

Updating line 149 of OpengraphSeoData.php as follows prevents the error, I was wondering if you'd consider incorporating this fix into a future release.

if (!$field || !$field->get('defaultValuePage')) {

Thanks very much, Tim

How to use with "Media Manager" plugin?

Hi, we use the Media Manager plugin (https://modules.processwire.com/modules/process-media-manager/) for images in our templates and to output e.g. the og:image tag, the syntax {image_media_manager.first.media} does not work in the default values settings page (I assume because the Media Manager plugin does not return a Processwire PageImage object but a MediaManager object as described here: https://mediamanager.kongondo.com/documentation/frontend-output-of-media-manager-fields/media-manager-objects/).

The value {image_media_manager.first.media.httpUrl} or {image_media_manager.first.media.url} also won't work.

Is there a way to do this with the provided syntax only or do we need to write a hook?

Thank you!

Add possibility to always include the website name in the meta title

The meta title often includes the website's name at the end, typically separated by a character. For example: This is a very important meta title | acme.com. Currently, this can be achieved in two ways:

  1. The content editor includes the information when writing the title (bad)
  2. We can use a hook to add the information at rendering time (better, but still bad)

Proposal
Introduce a new setting on field level which controls how the meta title gets rendered. The most flexible solution is probably to define a string that contains a placeholder for the meta title, e.g. {meta_title} | acme.com.

Ability to set canonical URL

Currently, the canonical URL is rendered automatically and it equals the page's url. While the canonical url can already be changed with hooks, it would be nice to alter this via GUI, on page level.

  • What is the group where the canonical URL belongs to? meta?
  • Should we introduce a new group for this, e.g. common or url. The common group could hold various tags/settings not fitting into any existing group.

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.