nystudio107 / craft-seomatic

SEOmatic facilitates modern SEO best practices & implementation for Craft CMS 3. It is a turnkey SEO system that is comprehensive, powerful, and flexible.
https://nystudio107.com/plugins/seomatic
Other
165 stars 70 forks source link

[FR] Headless Social Media Preview via CP host #1165

Closed d--j closed 10 months ago

d--j commented 2 years ago

Is your feature request related to a problem? Please describe.

If CraftCMS&SEOMatic is used in a headless context, the Social Media Preview URLs that SEOMatic generates are not working. They point to the site but the site does not have CraftCMS installed (it's headless after all) and thus they generate 404s.

Describe the solution you would like

Add a configuration option to generate the Social Media Preview URLs with the CP host info. Or – alternatively – always use the CP host URL.

Describe alternatives you have considered

We currently use this hotfix to patch the generated URLs:

// patch SEOMatic preview target to always use the CP url
Event::on(Plugins::class, Plugins::EVENT_AFTER_LOAD_PLUGINS, static function () {
    Event::on(
        Entry::class,
        Element::EVENT_REGISTER_PREVIEW_TARGETS,
        static function (RegisterPreviewTargetsEvent $e) {
            foreach ($e->previewTargets as $i => $target) {
                if (
                    is_array($target) &&
                    array_key_exists('url', $target) &&
                    str_contains($target['url'], 'seomatic/preview-social-media')
                ) {
                    $siteHostInfo                 = UrlHelper::hostInfo($target['url']);
                    $e->previewTargets[$i]['url'] = UrlHelper::cpHost().substr($target['url'], strlen($siteHostInfo));
                }
            }
        }
    );
});
khalwat commented 2 years ago

Perhaps if headlessMode is enabled, we can use the CP URL?

d--j commented 2 years ago

Yes, that's a good idea.

d--j commented 2 years ago

This is related to #950

khalwat commented 10 months ago

You can now use the Site URL Override feature to get this to work.

Addressed in: https://github.com/nystudio107/craft-seomatic/commit/61f941efb3ffc81afc0c940e663b1ec63fc625f7 & https://github.com/nystudio107/craft-seomatic/commit/3ec9a31184b4d0abf65ca6d5d57717318e60a9e7

Craft CMS 3:

You can try it now by setting your semver in your composer.json to look like this:

    "nystudio107/craft-seomatic": "dev-develop as 3.4.67”,

Then do a composer clear-cache && composer update

…..

Craft CMS 4:

You can try it now by setting your semver in your composer.json to look like this:

    "nystudio107/craft-seomatic": "dev-develop-v4 as 4.0.36”,

Then do a composer clear-cache && composer update