GithubHelp home page GithubHelp logo

dachcom-digital / pimcore-seo Goto Github PK

View Code? Open in Web Editor NEW
38.0 17.0 14.0 493 KB

The last SEO Bundle for Pimcore you'll ever need!

License: Other

PHP 60.56% CSS 8.50% JavaScript 29.21% Twig 1.73%
pimcore-bundle pimcore seo google-indexing-api

pimcore-seo's Introduction

Pimcore SEO Bundle

Software License Latest Release Tests PhpStan

The last SEO Bundle for pimcore you'll ever need!

  • Create title, description and meta tags (OG-Tags, Twitter-Cards) for documents and objects!
  • Shipped with a save and user-friendly editor with multi locale support!
  • Enjoy live previews of each social channel!
  • Super smooth and simple PHP-API to update meta information of documents or objects!
  • Submit content data to search engines like Google, Bing, DuckDuckGo in real time!
  • Fully backwards compatible if you're going to install this bundle within an existing pimcore instance!

Documents

image

Objects

image

Objects | Tabbed View

image

Release Plan

Release Supported Pimcore Versions Supported Symfony Versions Release Date Maintained Branch
3.x 11.0 6.2 30.08.2023 Feature Branch master
2.x 10.1 - 10.6 5.4 14.10.2021 Unsupported 2.x
1.x 6.0 - 6.9 3.4, ^4.4 27.04.2020 Unsupported 1.x

Installation

"require" : {
    "dachcom-digital/seo" : "~3.0.0",
}

Add Bundle to bundles.php:

return [
    SeoBundle\SeoBundle::class => ['all' => true],
];
  • Execute: $ bin/console pimcore:bundle:install SeoBundle

Upgrading

  • Execute: $ bin/console doctrine:migrations:migrate --prefix 'SeoBundle\Migrations'

Usage

This Bundle needs some preparation. Please check out the Setup && Overview guide first.

Further Information

Supported 3rd Party Bundles

Copyright and license

Copyright: DACHCOM.DIGITAL
For licensing details please visit LICENSE.md

Upgrade Info

Before updating, please check our upgrade notes!

pimcore-seo's People

Contributors

breakone avatar dkarlovi avatar dpfaffenbauer avatar fracsi avatar niklasbr avatar pascalmoser avatar solverat avatar vmalyk 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  avatar  avatar  avatar

Watchers

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

pimcore-seo's Issues

XLIFF Export/Import Support

Q A
Bug report? yes
Feature request? yes
BC Break report? no
RFC? no

I'm not sure to report this as bug report/feature request or it it's out of scope or even possible.

When exporting data objects using the pimcore XLIFF export, the seo data won't get exported as they are stored in a separate table. A solution would be handy to add the maintained data to the XLIFF export and save them back to the table on import.

[META] Support News Bundle

Q A
Bug report? no
Feature request? yes
BC Break report? no
RFC? no
  • Add default extractors (Description, Title)

[META] Support CoreShop

Q A
Bug report? no
Feature request? yes
BC Break report? no
RFC? no
  • Remove existing coreshop extractor tag definitions, as long as coreshop itself natively does not support SEO-Bundle
  • Add default extractors

bug: duplicate tabs

Actual behaviour

After installing & configuring the bundle, the SEO-tab contains duplicate tabs:

image

Expected behaviour

Every tab is displayed exactly once.

Steps to reproduce.

  1. Create Pimcore 10.4.4 instance
  2. Require, enable and install bundle
  3. Use 2 or more integrators (see below for an example)
  4. Create 1 document and open the SEO-tab
# Example config

seo:
    meta_data_configuration:
        meta_data_provider:
            auto_detect_documents: true
        meta_data_integrator:
            documents:
                enabled: true
                hide_pimcore_default_seo_panel: true
            enabled_integrator:
                -   integrator_name: title_description
                -   integrator_name: twitter_card
                    integrator_config:
                        twitter_image_thumbnail: 'socialThumb'

Additional info

I'm aware that the docs state 10.1-10.2 as supported versions, but this bundle was suggested by the Pimcore-Community, so, I figured it would still work.

Tab duplicated

Q A
Bug report? yes
Feature request? no
BC Break report? no
RFC? no

Screenshot from 2022-10-13 11-25-56

SEO Sub Tab is duplicated. I do following the documentation for setup the bundle and also installed SchemaBundle, ToolboxBundle too.

Content Analysis

Q A
Bug report? no
Feature request? yes
BC Break report? no
RFC? -

For a website, the client (previous wordpress user) has asked to have a more options similar to those of the likes of yoast.
Now, while i don't think meta-keywords are a thing anymore, the only real difference seems to be a recommendation of how things can be approved.

This is how i could imagine this to look like for this extension too:
image

Additionally, the way you seem to have drafted that in your images with the blue checkmarks does seem like a good too:
image

I would create a PR for this but maybe you already have something similar in the pipeline. If not, then do you have ideas/concepts in this direction that way i can start on a solution and give it to my client.

Pimcore X compatibility

Q A
Bug report? yes
Feature request? yes
BC Break report? no
RFC? no

Currently this bundle is not compatible with Pimcore X.
If i try to install this bundle, i get the following error:

Problem 1
    - dachcom-digital/seo v1.1.0 requires pimcore/pimcore ^6.0.0 -> found pimcore/pimcore[v6.0.0, ..., v6.9.5] but it conflicts with your root composer.json require (^10.0).
    - dachcom-digital/seo v1.1.1 requires pimcore/pimcore ^6.0 -> found pimcore/pimcore[v6.0.0, ..., v6.9.5] but it conflicts with your root composer.json require (^10.0).
    - Root composer.json requires dachcom-digital/seo ^1.1 -> satisfiable by dachcom-digital/seo[v1.1.0, v1.1.1].

Add Permissions

Q A
Bug report? no
Feature request? yes
BC Break report? no
RFC? no
  • "add property"
  • "remove property"

Preview based on user locale

Q A
Bug report? no
Feature request? yes
BC Break report? no
RFC? no

The preview panel should generate data based on users default locale (first element from locale list in users profile)
Also trigger an event to allow modification of this preselected locale.

Meta Data not attached

Q A
Bug report? yes
Feature request? no
BC Break report? no
RFC? no

At first: thanks for your amazing bundles, it realy simplyfies our daily work! 😊

My problem:

Just like in the offical pimcore demo I've build the following site structure in pimcores document tree:

image

The root document (ID 1) ist our start page and localized pages are created under its dedicated language path. Like in the demo we created a link from the root of our main language de to the root document /.

After setting up the bundle, everything works as expected but on the document root no meta data will be attached by the bundle. The reason for that is the AutoMetaDataAttachListener.php. The request is validated here so that the meta data will only be attached on certain conditions.

The attachment fails here:

if ($event->isMasterRequest() === false) {
return;
}

I think this is because the redirect from the language root to the document root.

Can you please confirm that this is the expected behaviour? How can we set the meta data in this cases? Thank you.

[Title & Description Integrator]: Add noindex option and rename to "General Integrator"

Q A
Bug report? no
Feature request? yes
BC Break report? no
RFC? yes

I would like to introduce a new checkbox field for the "Title & Description Integrator". This checkbox field would allow the user to individually exclude documents/objects from being indexed by Google & Co. By activating it, the SeoBundle would render a <meta name="robots" content="noindex, nofollow"> meta tag.

Additionally I think it would make sense to rename the Integrator to something like "General Integrator" since it now doesn't only manipulate title and description tags, but more so is there to configure "general" settings relevant to SEO.

So here are my two questions:

  1. Would you accept such a pull request with the above mentioned changes?
  2. Would you also accept the pull request to be merged into V1 in order to release a new version for Pimcore 6?

Looking forward to hear what you think! 🙂

Seo Document Editor

Q A
Bug report? yes
Feature request? no
BC Break report? no
RFC? no

"dachcom-digital/seo": "~2.1.0" - Pimcore 10.5
The editing of SEO texts in the SEO document editor not working properly. It saves data only in documents_page table, but seo_element_meta_data table stays unchanged so data in SEO editor of the document itself stays unchanged and on the next save of document it will override data in document_page table.
Problem is that endpoint '/admin/seo/meta-data/set-element-meta-data-configuration' is not triggered after saving SEO changes in SEO document editor - '/admin/document/update'.
Modifying checkForLegacyData() function in \SeoBundle\Manager\ElementMetaDataManager is possible fix, but not something that should be done

Adding a schema via SEO panel and via a custom extractor does not output JSON

Q A
Bug report? yes?
Feature request? no
BC Break report? no
RFC? no

It seems adding schema is not possible with this bundle as it looks like a new HeadMeta instance is being spin up and it's rawItems are not being output when calling the pimcore_head_meta function.

I have tested this on Pimcore 6.9 and bundle version 1.0, and Pimcore 10.2.5 and the newest bundle version.

Umlauts in markup

I've noticed an issue with the way umlauts are displayed in Schema Markup. It seems that the umlauts are not formatted correctly and the output is incorrect.

For example, the letter "ä" is being displayed as "\u00c3\u00a4" in the markup after saving. On the source code the output is: ä. When manually inputting special characters, they may not display correctly unless they are entered as HTML entities. This issue does not occur when the input is done through the API, such as in the case of an organization.

Pimcore 11 Support

Q A
Bug report? no
Feature request? yes
BC Break report? no
RFC? no

Hey there, thanks for your bundle, we've implemented it succesfully but are now looking to upgrade our pimcore instance to version 11, are you working on an update for pimcore 11? And is there an ETA for this update?

Thanks in advance, I hope this is the right place to ask this question.

[Twitter, OG] Implement Conditional Store

Q A
Bug report? no
Feature request? yes
BC Break report? no
RFC? no

Based on selected type (og:type, twitter:card), all related fields should get loaded.

Example:

Type: (og:type): profile
Load: og:title, og:url, og:image, profile:first_name and profile:last_name by default.

PHP API - title and description

Q A
Bug report? no
Feature request? no
BC Break report? no
RFC? yes

Is it possible to set meta title and description programmatically to an dataobject? In the docs I have read something about "smooth PHP-API". Is there any further information?

Document\Page title property

Q A
Bug report? yes
Feature request? no
BC Break report? no
RFC? no

SEO disables the default Pimcore title and description fields, but it doesn't set these fields on save anymore. thus if you use them, they cannot be changed.

Bug: can't link image to og:image tag

Q A
Bug report? yes
Feature request? no
BC Break report? no
RFC? no

When I try to link an asset to the og:image tag, an exception is thrown:

Timestamp: Thu Jul 21 2022 17:00:18 GMT+0200 (Central European Summer Time)
Status: 500 | Internal Server Error
URL: /admin/seo/meta-data/set-element-meta-data-configuration
Method: POST
Message: Warning: Trying to access array offset on value of type int
Trace: 
in /app/vendor/dachcom-digital/seo/src/SeoBundle/Helper/ArrayHelper.php:107
#0 /app/vendor/dachcom-digital/seo/src/SeoBundle/Helper/ArrayHelper.php(20): SeoBundle\Helper\ArrayHelper->cleanEmptyLocaleValues(Array)
#1 /app/vendor/dachcom-digital/seo/src/SeoBundle/MetaData/Integrator/OpenGraphIntegrator.php(82): SeoBundle\Helper\ArrayHelper->mergeLocaleAwareArrays(Array, Array, 'property')
#2 /app/vendor/dachcom-digital/seo/src/SeoBundle/Manager/ElementMetaDataManager.php(88): SeoBundle\MetaData\Integrator\OpenGraphIntegrator->validateBeforePersist('object', 1727, Array, Array)
#3 /app/vendor/dachcom-digital/seo/src/SeoBundle/Controller/Admin/MetaDataController.php(78): SeoBundle\Manager\ElementMetaDataManager->saveElementData('object', 1727, 'open_graph', Array)
#4 /app/vendor/symfony/http-kernel/HttpKernel.php(152): SeoBundle\Controller\Admin\MetaDataController->setElementMetaDataConfigurationAction(Object(Symfony\Component\HttpFoundation\Request))
#5 /app/vendor/symfony/http-kernel/HttpKernel.php(74): Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object(Symfony\Component\HttpFoundation\Request), 1)
#6 /app/vendor/symfony/http-kernel/Kernel.php(202): Symfony\Component\HttpKernel\HttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#7 /app/public/index.php(35): Symfony\Component\HttpKernel\Kernel->handle(Object(Symfony\Component\HttpFoundation\Request))
#8 {main}

An array is expected in the ArrayHelper, but it seems that the asset ID is passed instead.

The CMS shows everything completely fine, but it can't be saved:

image

ElementMetaDataManager::getElementData(): Argument #2 ($elementId) must be of type int, null given

Q A
Bug report? yes
Feature request? no

Running CLI with an up() migration causes this error:

    public function up(Schema $schema): void
    {
        $sites = [ /* listing of Site */  ];
        foreach ($sites as $site) {
            $newFolder = Folder::create($site->getRootDocument()->getId(), [
                'key' => 'Configurators',
                'locked' => true,
            ]);
            $this->write("Created folder: {$newFolder->getRealFullPath()}");

            $newPage = Page::create($newFolder->getId(), [
                'key' => 'ultima-connect',
                'controller' => 'App\Controller\ConfiguratorController::indexAction',
                'template' => 'product/configurator/uc.html.twig',
                'locked' => true,
                'published' => true,
            ]);
            $this->write("Created page: {$newPage->getRealFullPath()}");
        }
    }

Error

15:32:59 [notice] Created folder: /Main sites/DK/Configurators
15:32:59 [error] Migration App\Migrations\Version20230830115802 failed during Execution. Error: "SeoBundle\Manager\ElementMetaDataManager::getElementData(): Argument #2 ($elementId) must be of type int, null given, called in /var/www/pimcore/vendor/dachcom-digital/seo/src/SeoBundle/MetaData/Extractor/IntegratorExtractor.php on line 62"
15:33:00 
15:33:00 In ElementMetaDataManager.php line 52:
15:33:00                                                                                
15:33:00   SeoBundle\Manager\ElementMetaDataManager::getElementData(): Argument #2 ($e  
15:33:00   lementId) must be of type int, null given, called in /var/www/pimcore/vendo  
15:33:00   r/dachcom-digital/seo/src/SeoBundle/MetaData/Extractor/IntegratorExtractor.  
15:33:00   php on line 62                                                     

Respect Pimcore fallback languages

Q A
Bug report? no
Feature request? no
BC Break report? no
RFC? no

Hi, I'm currently working on a project with different regions/languages and fallback languages, f.e:

  • en
  • de-at -> fallback to de
  • de-de -> fallback to de

The fallback languages are useful if the same news object is used in different regions (Austria, Germany). Therefore only the title for de will be set (in the data object), and the value for de-at/de-de will be empty.

It would be handy if this feature also applies to the seo settings. Currently the value for de_AT/de_DE must be set, de won't get used as fallback.

image

What do you think about this feature?

Thanks in advance.

Preview image (og:image, twitter:image) not shown if asset path contains spaces

Q A
Bug report? yes
Feature request? no
BC Break report? no
RFC? no

If the asset path of the properties og:image or twitter:image contains spaces no preview image is shown.
image

The background-image style generated by the SEO Bundle is shown as an invalid property value in browsers because the URL contains spaces.
image

The URL used in the background-image style should be URL encoded and spaces in the asset path should be replaced with %20.

Questions and suggestions SEO Bundle

Q A
Bug report? no
Feature request? yes
BC Break report? no
RFC? yes

Hey Folks!
It's me Bent, from Blackbit, the creators of the Blackbit Data Director (I guess we know each other 🙃 )

I do have a couple of questions and change / feature requests as follows:

  • The SEO Bundle has custom fields for meta description and title. Why not using the one pimcore documents already provide?
    Is there a function to use Pimcore's fields out-of-the-box?
  • SEO Bundle does not support (yet) JSON-LD after schema.org. Are you already thinking of implementing it?
  • Regarding install of your plugin, you have a query to create custom database entries:
    https://github.com/dachcom-digital/pimcore-seo/blob/master/config/install/sql/install.sql
    -> this lead to an issue on our side during migration of versions of a project (due to not separately install of the plugin). We expected to have a Migration set and available which was not present.
    What's the reason of not using a Magration?

Error when adding a thumbnail

Q A
Bug report? yes
Feature request? no
BC Break report? yes
RFC? no

Hi!
I was playing around with your current master in an 11.0.6 today and ran into a bug. My config is the same as https://github.com/dachcom-digital/pimcore-seo/blob/master/docs/00_Setup.md#configuration. When I then wanted to add an image at Open Graph, it came to the 500.

Pimcore\Model\Asset\Image\Thumbnail::getPath(): Argument #1 ($args) must be of type array, bool given, called in /var/www/html/vendor/dachcom-digital/seo/src/Tool/UrlGenerator.php on line 82

https://github.com/dachcom-digital/pimcore-seo/blob/master/src/Tool/UrlGenerator.php#L82
https://github.com/pimcore/pimcore/blob/11.x/models/Asset/Image/Thumbnail.php#L47

Seo Document Editor Support

Q A
Bug report? no
Feature request? yes
BC Break report? no
RFC? no

Allow Users to modify title/description via SEO Document Editor (If pimcore seo bundle is installed)

[META] Bulk Editing

Q A
Bug report? no
Feature request? yes
BC Break report? no
RFC? no

Implement bulk editing like pimcors internal SEO Document Editor.

NewsBundle collision

Q A
Bug report? yes
Feature request? no
BC Break report? no
RFC? no

During installation, I get the following error thrown:

Fatal error: Uncaught Symfony\Component\DependencyInjection\Exception\RuntimeException: Cannot autowire service "SeoBundle\MetaData\Extractor\ThirdParty\News\EntryMetaExtractor": argument "$headMetaGenerator" of method "__construct()" has type "NewsBundle\Generator\HeadMetaGeneratorInterface" but this class was not found. in /app/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/DefinitionErrorExceptionPass.php:54

We have a bundle in our project called NewsBundle, but it is not the NewsBundle that is expected from the EntryMetaExtractor.php file. Perhaps there is a safer way of handling this than assuming it is the same bundle? NewsBundle is a pretty generic name after all.

Thanks!

Respect User Locale

Q A
Bug report? no
Feature request? yes
BC Break report? no
RFC? no

In objects, only show available locales of current user (if defined via workspaces)

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.