wanze / seomaestro Goto Github PK
View Code? Open in Web Editor NEW🧙♂️A ProcessWire module helping you to manage SEO related tasks like a boss.
License: MIT License
🧙♂️A ProcessWire module helping you to manage SEO related tasks like a boss.
License: MIT License
Currently the module fetches image-sources set as placeholder {image} as the raw max-size version of that image.
Adding max-width/max-height options for the og:image settings in the seo_maestro defaults could limit image sizes to e.g. 1200 x 630.
German umlauts are encoded in the meta description. That shouldn't be necessary, if we use UTF-8.
Problem and solution: https://processwire.com/talk/topic/20817-seomaestro/page/5/?tab=comments#comment-189844
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.
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.
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.
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.
It would be good if this has the same base requirement as ProcessWire.
By replacing ?? with ? and : would fix this.
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;
I'd love to have some site wide global defaults that can be overridden by the template defaults and then page defaults.
I've figured out a problem with your module.
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.
** Files beeing generated after EVERY page visit**
Hi @wanze,
thank you …
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?
Originally posted by @esszett in #5 (comment)
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:
It seems that it is enough to change in two files
site\modules\SeoMaestro\src\MetaSeoData.php
site\modules\SeoMaestro\src\TwitterSeoData.php
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.
using v1.0 and ENT_XML1 with entities1 broke Turkish character "ü".
convert "Tüm" to "Tüm"
and browser not propery display.
SeoMaestro/src/SeoDataBase.php
Line 230 in 7e3c9b4
changed this line to return $sanitizer->entities1($value, ENT_QUOTES); problem resolved.
php v7.2.19
PHP Deprecated: preg_match(): Passing null to parameter #2 ($subject) of type string is deprecated in /site/modules/SeoMaestro/src/SeoDataBase.php:236
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
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!
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:
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
.
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.
meta
?common
or url
. The common
group could hold various tags/settings not fitting into any existing group.A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.