Giter Site home page Giter Site logo

yoast-seo-for-magento2's Introduction

Yoast SEO for Magento 2 (by MaxServ)

Introduction

We have developed this advanced SEO module in close cooperation with YOAST inc. It incorporates the YOAST library into Magento2.

Requirements

Magento 2.2.* OpenSource. This version of the module has not (yet) been tested on Magento 2 Commerce or Magento 2 Cloud editions.

Features

Proper meta tags

  • ld+json schema data which identifies the page
  • canonical url tag
  • OpenGraph data
  • Facebook configuration data (app id, admin ids)
  • Twitter card data

Live SEO analysis from within the edit forms

When you open an edit form, you'll notice that the default 'Search Engine Optimisation' section has been changed to 'YoastSEO'. Inside this section we have added a live analysis tool. This tool runs a whole battery of tests on your content and shows you the results. Results marked with a green status light are OK, orange means you might want to have a look, while red indicates a problem that you should try to fix immediately.

You'll find the analyis tool in the edit forms of these entities:

  • Categories
  • Products
  • CMS Pages

Customize analysis templates

If you have custom attributes which contain content, we've got you covered. You can edit the analysis templates to include you own custom attributes. Read more on how to configure analysis templates here.

Create redirects for deleted products

Normally a product URL will generate a 404 page after you delete the product. Now you can configure what should happen yourself. Choose between redirecting to the product's category page, a fixed category page or a CMS page of your choice. Or, if you want, you can choose not to create redirects.

Installation

This module can be installed using composer.

Packagist

If you have access to packagist (and by default you do), all you need to do is run this require statement.

composer require maxserv/magento-module-yoastseo

GitHub

If you do not have access to packagist, you need to add our GitHub repository to your composer configuration before you can require this module:

composer config repositories.yoastseo git https://github.com/Yoast/Yoast-SEO-for-Magento2
composer require maxserv/magento-module-yoastseo

Download

If for some reason you can't use composer then please follow these steps:

  1. Browse to the releases section on our GitHub page
  2. Download the latest release in zip or tar format
  3. Create a directory in your project: app/code/MaxServ/YoastSeo
  4. Unpack the package into that directory

Configuration

You can find the configuration by navigating to Stores -> Configuration in the main menu. In the configuration sections select 'YoastSEO' and then click on 'SEO Settings'.

Analysis templates

You can find the analysis templates by navigating to Marketing -> YoastSEO -> Analysis Templates using the main menu.

Template format

The template consists of plain HTML and placeholders for attributes. Placeholders are defined with double handlebars:

{{<attribute_code>[ reader='<reader>'][ provider='<provider>'][ default='<default>']}}
Part Possible values
<attribute_code> Any valid attribute code (with some exceptions)
<reader> text,wysiwyg,cms_block,category_landing_page
<provider> product_images
<default> Any value

At least one of <reader>, <provider> or <default> must be configured.

Readers

Text

The text reader returns the literal value of the input field component. The value will not be processed.

Wysiwyg

The value of the input field component will be rendered using frontend rendering. This ensures that any placeholders (e.g. widget placeholders) in the content will be expanded before analysis.

CMS Block

The value of the the input field component should be the numerical identifier of a CMS block. If it is, the CMS block will be rendered using frontend rendering.

Category Landing Page

Can only be used in category forms, and will only render anything if the category display mode has been set to either 'Static block only' or 'Static block and products'. If this is the case, this reader will pull content from the 'Add CMS Block' field in the 'Content' section of the category form.

Providers

Use a provider in conjunction with a nonexistent attribute code to provide data to the template processor which can not be read from other form fields. A provider should return plain HTML which requires no more processing.

Product Images

The product images provider reads the product media gallery and renders the images as <img /> tags.

Template processing

For each placeholder, the template processor will try to retrieve content based on the placeholder configuration. The following steps are treated in an if, else if, else if, else manner

  • If a form input component can be found based on the attribute code, and a reader has been defined, the template processor will instruct the reader to process the input component's value.
  • If a form input component can be found based on the attribute code, the input component's value is returned.
  • If a form input component could exist but doesn't exist yet (JIT fieldset rendering), and the entity already had a value for that attribute code, then that value is returned.
  • If a provider has been configured, the provider is instructed to return a value. The attribute code does not have to exist.
  • If the placeholder has a default value configured, the default value is returned. The attribute code does not have to exist.
  • A blank value is returned.

yoast-seo-for-magento2's People

Contributors

lisannekluitmans avatar lukvdborne avatar omarreiss avatar rmeeuwissen avatar tjitse-e avatar vincenthornikx 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  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  avatar  avatar

yoast-seo-for-magento2's Issues

Strict Mode

The plugin will not work in strict mode because "with(obj) {}"statement is being used in "yoast-seo.min.js"
in these places:
templates['assessmentPresenterResult'] line 13310
templates['hiddenSpan'] line 13378
templates['relevantWords'] line 13396
templates['snippetEditor'] line 13427

So either turn strict mode off for these functions, or rewrite the code so with (obj) statements are not used.

Magento 1

Hi,
Where is magento 1 extension, or only you are working on magento 2 ?

Open Graph function

It would be great if the Magento 2 plugin will deploy Open Graph tags in a similar fashion to the way the WordPress plugin does.

meta property="go:url" Adds Slug for Home Page

For the home page of a website The module adds the slug to the meta property="go:url"

Now

<meta property="og:url" content="https://www.magentowebsite.com/home">

Should be

<meta property="og:url" content="https://www.magentowebsite.com/">

Uncaught Error: Call to a member function getLoadedProductCollection()

Magento 2.1.7
CentOS 7
PHP 7.0.17

Fatal error: Uncaught Error: Call to a member function getLoadedProductCollection() on boolean in /var/www/html/magento2/app/code/MaxServ/YoastSeo/Model/EntityConfiguration/Catalog/Category/MetaProvider.php:127 Stack trace: #0 /var/www/html/magento2/app/code/MaxServ/YoastSeo/Model/EntityConfiguration/Catalog/Category/MetaProvider.php(147): MaxServ\YoastSeo\Model\EntityConfiguration\Catalog\Category\MetaProvider->getToolbarBlock() #1 /var/www/html/magento2/app/code/MaxServ/YoastSeo/view/frontend/templates/yoastseo.phtml(42): MaxServ\YoastSeo\Model\EntityConfiguration\Catalog\Category\MetaProvider->getPrevLink() #2 /var/www/html/magento2/vendor/magento/framework/View/TemplateEngine/Php.php(59): include('/www/html/every...') #3 /var/www/html/magento2/vendor/magento/framework/View/Element/Template.php(255): Magento\Framework\View\TemplateEngine\Php->render(Object(MaxServ\YoastSeo\Block\YoastSeo), '/www/html/every...', Array) #4 /var/www/html/magento2/vendor/magento/framework/View/Element/Te in /var/www/html/magento2/app/code/MaxServ/YoastSeo/Model/EntityConfiguration/Catalog/Category/MetaProvider.php on line 127

This occurs only on category front pages -- IE:
www.examplestore.com/example-category.html

The home page, product pages and checkout all seems to work fine, but if we create a category specific page to display products in the category it throws the above exception.

'Class fileUploader does not exist' when bulk updating attributes for products

Hi Yoast/MaxServ team, when trying to to update attributes for multiple products we get a big error which means we can't so bulk product updates, you can reproduce this issue by going to Catalog > Products, selecting multiple products and then click on Actions and select Update attributes

Here's the error dump:

Exception #0 (ReflectionException): Class fileUploader does not exist

Exception #0 (ReflectionException): Class fileUploader does not exist
#0 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/Code/Reader/ClassReader.php(19): ReflectionClass->__construct('fileUploader')
#1 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/ObjectManager/Definition/Runtime.php(44): Magento\Framework\Code\Reader\ClassReader->getConstructor('fileUploader')
#2 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/ObjectManager/Factory/Dynamic/Developer.php(71): Magento\Framework\ObjectManager\Definition\Runtime->getParameters('fileUploader')
#3 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/ObjectManager/ObjectManager.php(57): Magento\Framework\ObjectManager\Factory\Dynamic\Developer->create('fileUploader', Array)
#4 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/Data/Form/Element/Factory.php(81): Magento\Framework\ObjectManager\ObjectManager->create('fileUploader', Array)
#5 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/Data/Form/AbstractForm.php(155): Magento\Framework\Data\Form\Element\Factory->create('fileUploader', Array)
#6 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/Data/Form/Element/Fieldset.php(211): Magento\Framework\Data\Form\AbstractForm->addField('yoast_facebook_...', 'fileUploader', Array, false)
#7 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/module-backend/Block/Widget/Form.php(193): Magento\Framework\Data\Form\Element\Fieldset->addField('yoast_facebook_...', 'fileUploader', Array)
#8 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/module-catalog/Block/Adminhtml/Product/Edit/Action/Attribute/Tab/Attributes.php(93): Magento\Backend\Block\Widget\Form->_setFieldset(Array, Object(Magento\Framework\Data\Form\Element\Fieldset), Array)
#9 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/module-backend/Block/Widget/Form.php(141): Magento\Catalog\Block\Adminhtml\Product\Edit\Action\Attribute\Tab\Attributes->_prepareForm()
#10 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/View/Element/AbstractBlock.php(658): Magento\Backend\Block\Widget\Form->_beforeToHtml()
#11 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/module-backend/Block/Widget/Tabs.php(387): Magento\Framework\View\Element\AbstractBlock->toHtml()
#12 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/module-backend/view/adminhtml/templates/widget/tabs.phtml(57): Magento\Backend\Block\Widget\Tabs->getTabContent(Object(Magento\Catalog\Block\Adminhtml\Product\Edit\Action\Attribute\Tab\Attributes))
#13 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/View/TemplateEngine/Php.php(59): include('/home/roy/Code/...')
#14 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/View/Element/Template.php(255): Magento\Framework\View\TemplateEngine\Php->render(Object(Magento\Catalog\Block\Adminhtml\Product\Edit\Action\Attribute\Tabs), '/home/roy/Code/...', Array)
#15 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/View/Element/Template.php(279): Magento\Framework\View\Element\Template->fetchView('/home/roy/Code/...')
#16 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/module-backend/Block/Template.php(104): Magento\Framework\View\Element\Template->_toHtml()
#17 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/View/Element/AbstractBlock.php(659): Magento\Backend\Block\Template->_toHtml()
#18 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/View/Layout.php(542): Magento\Framework\View\Element\AbstractBlock->toHtml()
#19 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/View/Layout.php(518): Magento\Framework\View\Layout->_renderBlock('attributes_tabs')
#20 /home/roy/Code/Magento/Shops/bodybow/var/generation/Magento/Framework/View/Layout/Interceptor.php(206): Magento\Framework\View\Layout->renderNonCachedElement('attributes_tabs')
#21 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/View/Layout.php(472): Magento\Framework\View\Layout\Interceptor->renderNonCachedElement('attributes_tabs')
#22 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/Interception/Interceptor.php(74): Magento\Framework\View\Layout->renderElement('attributes_tabs', false)
#23 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/Interception/Chain/Chain.php(70): Magento\Framework\View\Layout\Interceptor->___callParent('renderElement', Array)
#24 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/Interception/Interceptor.php(138): Magento\Framework\Interception\Chain\Chain->invokeNext('Magento\\Framewo...', 'renderElement', Object(Magento\Framework\View\Layout\Interceptor), Array, 'hoTemplatehints...')
#25 /home/roy/Code/Magento/Shops/bodybow/app/code/Ho/Templatehints/Plugin/View/LayoutPlugin.php(77): Magento\Framework\View\Layout\Interceptor->Magento\Framework\Interception\{closure}('attributes_tabs', false)
#26 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/Interception/Interceptor.php(142): Ho\Templatehints\Plugin\View\LayoutPlugin->aroundRenderElement(Object(Magento\Framework\View\Layout\Interceptor), Object(Closure), 'attributes_tabs')
#27 /home/roy/Code/Magento/Shops/bodybow/var/generation/Magento/Framework/View/Layout/Interceptor.php(195): Magento\Framework\View\Layout\Interceptor->___callPlugins('renderElement', Array, Array)
#28 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/View/Layout.php(569): Magento\Framework\View\Layout\Interceptor->renderElement('attributes_tabs')
#29 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/View/Layout.php(520): Magento\Framework\View\Layout->_renderContainer('left')
#30 /home/roy/Code/Magento/Shops/bodybow/var/generation/Magento/Framework/View/Layout/Interceptor.php(206): Magento\Framework\View\Layout->renderNonCachedElement('left')
#31 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/View/Layout.php(472): Magento\Framework\View\Layout\Interceptor->renderNonCachedElement('left')
#32 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/Interception/Interceptor.php(74): Magento\Framework\View\Layout->renderElement('left', false)
#33 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/Interception/Chain/Chain.php(70): Magento\Framework\View\Layout\Interceptor->___callParent('renderElement', Array)
#34 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/Interception/Interceptor.php(138): Magento\Framework\Interception\Chain\Chain->invokeNext('Magento\\Framewo...', 'renderElement', Object(Magento\Framework\View\Layout\Interceptor), Array, 'hoTemplatehints...')
#35 /home/roy/Code/Magento/Shops/bodybow/app/code/Ho/Templatehints/Plugin/View/LayoutPlugin.php(77): Magento\Framework\View\Layout\Interceptor->Magento\Framework\Interception\{closure}('left', false)
#36 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/Interception/Interceptor.php(142): Ho\Templatehints\Plugin\View\LayoutPlugin->aroundRenderElement(Object(Magento\Framework\View\Layout\Interceptor), Object(Closure), 'left')
#37 /home/roy/Code/Magento/Shops/bodybow/var/generation/Magento/Framework/View/Layout/Interceptor.php(195): Magento\Framework\View\Layout\Interceptor->___callPlugins('renderElement', Array, Array)
#38 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/View/Layout.php(569): Magento\Framework\View\Layout\Interceptor->renderElement('left')
#39 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/View/Layout.php(520): Magento\Framework\View\Layout->_renderContainer('side.col')
#40 /home/roy/Code/Magento/Shops/bodybow/var/generation/Magento/Framework/View/Layout/Interceptor.php(206): Magento\Framework\View\Layout->renderNonCachedElement('side.col')
#41 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/View/Layout.php(472): Magento\Framework\View\Layout\Interceptor->renderNonCachedElement('side.col')
#42 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/Interception/Interceptor.php(74): Magento\Framework\View\Layout->renderElement('side.col', false)
#43 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/Interception/Chain/Chain.php(70): Magento\Framework\View\Layout\Interceptor->___callParent('renderElement', Array)
#44 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/Interception/Interceptor.php(138): Magento\Framework\Interception\Chain\Chain->invokeNext('Magento\\Framewo...', 'renderElement', Object(Magento\Framework\View\Layout\Interceptor), Array, 'hoTemplatehints...')
#45 /home/roy/Code/Magento/Shops/bodybow/app/code/Ho/Templatehints/Plugin/View/LayoutPlugin.php(77): Magento\Framework\View\Layout\Interceptor->Magento\Framework\Interception\{closure}('side.col', false)
#46 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/Interception/Interceptor.php(142): Ho\Templatehints\Plugin\View\LayoutPlugin->aroundRenderElement(Object(Magento\Framework\View\Layout\Interceptor), Object(Closure), 'side.col')
#47 /home/roy/Code/Magento/Shops/bodybow/var/generation/Magento/Framework/View/Layout/Interceptor.php(195): Magento\Framework\View\Layout\Interceptor->___callPlugins('renderElement', Array, Array)
#48 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/View/Layout.php(569): Magento\Framework\View\Layout\Interceptor->renderElement('side.col')
#49 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/View/Layout.php(520): Magento\Framework\View\Layout->_renderContainer('page.main.conta...')
#50 /home/roy/Code/Magento/Shops/bodybow/var/generation/Magento/Framework/View/Layout/Interceptor.php(206): Magento\Framework\View\Layout->renderNonCachedElement('page.main.conta...')
#51 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/View/Layout.php(472): Magento\Framework\View\Layout\Interceptor->renderNonCachedElement('page.main.conta...')
#52 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/Interception/Interceptor.php(74): Magento\Framework\View\Layout->renderElement('page.main.conta...', false)
#53 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/Interception/Chain/Chain.php(70): Magento\Framework\View\Layout\Interceptor->___callParent('renderElement', Array)
#54 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/Interception/Interceptor.php(138): Magento\Framework\Interception\Chain\Chain->invokeNext('Magento\\Framewo...', 'renderElement', Object(Magento\Framework\View\Layout\Interceptor), Array, 'hoTemplatehints...')
#55 /home/roy/Code/Magento/Shops/bodybow/app/code/Ho/Templatehints/Plugin/View/LayoutPlugin.php(77): Magento\Framework\View\Layout\Interceptor->Magento\Framework\Interception\{closure}('page.main.conta...', false)
#56 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/Interception/Interceptor.php(142): Ho\Templatehints\Plugin\View\LayoutPlugin->aroundRenderElement(Object(Magento\Framework\View\Layout\Interceptor), Object(Closure), 'page.main.conta...')
#57 /home/roy/Code/Magento/Shops/bodybow/var/generation/Magento/Framework/View/Layout/Interceptor.php(195): Magento\Framework\View\Layout\Interceptor->___callPlugins('renderElement', Array, Array)
#58 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/View/Layout.php(569): Magento\Framework\View\Layout\Interceptor->renderElement('page.main.conta...')
#59 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/View/Layout.php(520): Magento\Framework\View\Layout->_renderContainer('page.content')
#60 /home/roy/Code/Magento/Shops/bodybow/var/generation/Magento/Framework/View/Layout/Interceptor.php(206): Magento\Framework\View\Layout->renderNonCachedElement('page.content')
#61 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/View/Layout.php(472): Magento\Framework\View\Layout\Interceptor->renderNonCachedElement('page.content')
#62 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/Interception/Interceptor.php(74): Magento\Framework\View\Layout->renderElement('page.content', false)
#63 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/Interception/Chain/Chain.php(70): Magento\Framework\View\Layout\Interceptor->___callParent('renderElement', Array)
#64 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/Interception/Interceptor.php(138): Magento\Framework\Interception\Chain\Chain->invokeNext('Magento\\Framewo...', 'renderElement', Object(Magento\Framework\View\Layout\Interceptor), Array, 'hoTemplatehints...')
#65 /home/roy/Code/Magento/Shops/bodybow/app/code/Ho/Templatehints/Plugin/View/LayoutPlugin.php(77): Magento\Framework\View\Layout\Interceptor->Magento\Framework\Interception\{closure}('page.content', false)
#66 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/Interception/Interceptor.php(142): Ho\Templatehints\Plugin\View\LayoutPlugin->aroundRenderElement(Object(Magento\Framework\View\Layout\Interceptor), Object(Closure), 'page.content')
#67 /home/roy/Code/Magento/Shops/bodybow/var/generation/Magento/Framework/View/Layout/Interceptor.php(195): Magento\Framework\View\Layout\Interceptor->___callPlugins('renderElement', Array, Array)
#68 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/View/Layout.php(569): Magento\Framework\View\Layout\Interceptor->renderElement('page.content')
#69 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/View/Layout.php(520): Magento\Framework\View\Layout->_renderContainer('page.wrapper')
#70 /home/roy/Code/Magento/Shops/bodybow/var/generation/Magento/Framework/View/Layout/Interceptor.php(206): Magento\Framework\View\Layout->renderNonCachedElement('page.wrapper')
#71 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/View/Layout.php(472): Magento\Framework\View\Layout\Interceptor->renderNonCachedElement('page.wrapper')
#72 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/Interception/Interceptor.php(74): Magento\Framework\View\Layout->renderElement('page.wrapper', false)
#73 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/Interception/Chain/Chain.php(70): Magento\Framework\View\Layout\Interceptor->___callParent('renderElement', Array)
#74 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/Interception/Interceptor.php(138): Magento\Framework\Interception\Chain\Chain->invokeNext('Magento\\Framewo...', 'renderElement', Object(Magento\Framework\View\Layout\Interceptor), Array, 'hoTemplatehints...')
#75 /home/roy/Code/Magento/Shops/bodybow/app/code/Ho/Templatehints/Plugin/View/LayoutPlugin.php(77): Magento\Framework\View\Layout\Interceptor->Magento\Framework\Interception\{closure}('page.wrapper', false)
#76 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/Interception/Interceptor.php(142): Ho\Templatehints\Plugin\View\LayoutPlugin->aroundRenderElement(Object(Magento\Framework\View\Layout\Interceptor), Object(Closure), 'page.wrapper')
#77 /home/roy/Code/Magento/Shops/bodybow/var/generation/Magento/Framework/View/Layout/Interceptor.php(195): Magento\Framework\View\Layout\Interceptor->___callPlugins('renderElement', Array, Array)
#78 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/View/Layout.php(569): Magento\Framework\View\Layout\Interceptor->renderElement('page.wrapper')
#79 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/View/Layout.php(520): Magento\Framework\View\Layout->_renderContainer('backend.page')
#80 /home/roy/Code/Magento/Shops/bodybow/var/generation/Magento/Framework/View/Layout/Interceptor.php(206): Magento\Framework\View\Layout->renderNonCachedElement('backend.page')
#81 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/View/Layout.php(472): Magento\Framework\View\Layout\Interceptor->renderNonCachedElement('backend.page')
#82 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/Interception/Interceptor.php(74): Magento\Framework\View\Layout->renderElement('backend.page', false)
#83 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/Interception/Chain/Chain.php(70): Magento\Framework\View\Layout\Interceptor->___callParent('renderElement', Array)
#84 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/Interception/Interceptor.php(138): Magento\Framework\Interception\Chain\Chain->invokeNext('Magento\\Framewo...', 'renderElement', Object(Magento\Framework\View\Layout\Interceptor), Array, 'hoTemplatehints...')
#85 /home/roy/Code/Magento/Shops/bodybow/app/code/Ho/Templatehints/Plugin/View/LayoutPlugin.php(77): Magento\Framework\View\Layout\Interceptor->Magento\Framework\Interception\{closure}('backend.page', false)
#86 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/Interception/Interceptor.php(142): Ho\Templatehints\Plugin\View\LayoutPlugin->aroundRenderElement(Object(Magento\Framework\View\Layout\Interceptor), Object(Closure), 'backend.page')
#87 /home/roy/Code/Magento/Shops/bodybow/var/generation/Magento/Framework/View/Layout/Interceptor.php(195): Magento\Framework\View\Layout\Interceptor->___callPlugins('renderElement', Array, Array)
#88 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/View/Layout.php(569): Magento\Framework\View\Layout\Interceptor->renderElement('backend.page')
#89 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/View/Layout.php(520): Magento\Framework\View\Layout->_renderContainer('root')
#90 /home/roy/Code/Magento/Shops/bodybow/var/generation/Magento/Framework/View/Layout/Interceptor.php(206): Magento\Framework\View\Layout->renderNonCachedElement('root')
#91 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/View/Layout.php(472): Magento\Framework\View\Layout\Interceptor->renderNonCachedElement('root')
#92 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/Interception/Interceptor.php(74): Magento\Framework\View\Layout->renderElement('root', false)
#93 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/Interception/Chain/Chain.php(70): Magento\Framework\View\Layout\Interceptor->___callParent('renderElement', Array)
#94 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/Interception/Interceptor.php(138): Magento\Framework\Interception\Chain\Chain->invokeNext('Magento\\Framewo...', 'renderElement', Object(Magento\Framework\View\Layout\Interceptor), Array, 'hoTemplatehints...')
#95 /home/roy/Code/Magento/Shops/bodybow/app/code/Ho/Templatehints/Plugin/View/LayoutPlugin.php(77): Magento\Framework\View\Layout\Interceptor->Magento\Framework\Interception\{closure}('root', false)
#96 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/Interception/Interceptor.php(142): Ho\Templatehints\Plugin\View\LayoutPlugin->aroundRenderElement(Object(Magento\Framework\View\Layout\Interceptor), Object(Closure), 'root')
#97 /home/roy/Code/Magento/Shops/bodybow/var/generation/Magento/Framework/View/Layout/Interceptor.php(195): Magento\Framework\View\Layout\Interceptor->___callPlugins('renderElement', Array, Array)
#98 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/View/Layout.php(938): Magento\Framework\View\Layout\Interceptor->renderElement('root')
#99 /home/roy/Code/Magento/Shops/bodybow/var/generation/Magento/Framework/View/Layout/Interceptor.php(492): Magento\Framework\View\Layout->getOutput()
#100 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/View/Result/Page.php(243): Magento\Framework\View\Layout\Interceptor->getOutput()
#101 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/View/Result/Layout.php(164): Magento\Framework\View\Result\Page->render(Object(Magento\Framework\App\Response\Http\Interceptor))
#102 /home/roy/Code/Magento/Shops/bodybow/var/generation/Magento/Backend/Model/View/Result/Page/Interceptor.php(193): Magento\Framework\View\Result\Layout->renderResult(Object(Magento\Framework\App\Response\Http\Interceptor))
#103 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/App/Http.php(139): Magento\Backend\Model\View\Result\Page\Interceptor->renderResult(Object(Magento\Framework\App\Response\Http\Interceptor))
#104 /home/roy/Code/Magento/Shops/bodybow/vendor/magento/framework/App/Bootstrap.php(258): Magento\Framework\App\Http->launch()
#105 /home/roy/Code/Magento/Shops/bodybow/index.php(39): Magento\Framework\App\Bootstrap->run(Object(Magento\Framework\App\Http))
#106 {main}

The webshop url is shown automatically after the meta title.

After filling in the meta title for category pages in the backend, the url of the webshop is shown after the title on the webshop. I checked it with the Moz toolbar extension.

In the example below you can see the difference. Is this a functionality in the Yoast module? If yes, where can I adjust it?

__category_meta_templates___magento_admin_nl_2_png_en_huissteden_naaimachines_huissteden_nl_png_en___category_meta_templates___magento_admin_huissteden_nl

Unclear which options are part of Yoast SEO module

In WordPress there is a menu item dedicated to our plugin called SEO with a clear logo, see screenshot:
general_-yoast_seo my_blog _wordpress

In Magento it's unclear which settings are part of the Yoast SEO module (if there are any at all) see screenshot:
configuration___settings___stores___magento_admin

Magento 2 Commerce compatibility

The current version of the module has not yet been tested for Magento 2 Commerce. This would be a nice additional "feature". Perhaps for Premium?

Wrong Word Calculation Analysis Report

What did you expect to happen?

The content analysis should calculate and show the number of words is being used accurately.

What happened instead?

The analysis calculates the word from the content incorrectly. For your convenience, I've added the relevant content below. I've manually counted the words from the below content and there are 61 words. But, the analysis shows there are 64 words while using the following content on the products page. However, if you add the content on a page, the content analysis shows there are 63 words. Both of these are reports are incorrect.

On the other hand, if you use the following content in the WordPress, the Yoast SEO for WordPress count all the words correctly and shows the correct number, which is 61 words.

Demo Content

Convenience is next to nothing when your day is crammed with action. So whether you're heading to class, gym, or the unbeaten path, make sure you've got your Strive Shoulder Pack stuffed with all your essentials, and extras as well.

  • Zippered main compartment.
  • Front zippered pocket.
  • Side mesh pocket.
  • Cell phone pocket on strap.
  • Adjustable shoulder strap and top carry handle.

How can we reproduce this behavior?

  • Add the demo content to a product or a page
  • See the analysis report about the word calculation

Screenshots

screen shot 2017 01 31 at 8 30 51 pm
screen shot 2017-01-31 at 8 30 46 pm

Yoast SEO not visible after installation

Hello,

After installation the Module is not visible within the backend. (After deleting cache / reindex etc)
Anyone with the same issue?

Kind regards,

[xxxx@server public_html]$ composer config repositories.magento-module-yoastseo '{"type": "vcs", "url": "[email protected]:Yoast/magento-seo.git"}'

[xxxx@server public_html]$ composer require maxserv/magento-module-yoastseo
Using version ^1.0 for maxserv/magento-module-yoastseo
./composer.json has been updated
Loading composer repositories with package information Updating dependencies (including require-dev) Nothing to install or update
Generating autoload files

PHP 7.1 Support

Please add support for PHP 7.1 by modifying the composer.json: add ~7.1.0

"require": { "php": "7.0.2|7.0.4|~7.0.6|~7.1.0",

Magento stopped supporting PHP 5.6, so consider dropping: ~5.6.0

Snippet preview design doesn't blend in nicely.

Right now the snippet preview still has a design that is inspired by the way it was styled in Yoast SEO for WordPress a couple of versions back. The Yoast SEO settings look a bit like a mess of different design concepts:

screen shot 2017-04-05 at 12 29 21

In TYPO3 we chose to blend it more with the page like this:

screen shot 2017-04-05 at 12 27 48

This is something I would also like to see for the Magento extension.
An alternative could also be to put the Snippet preview in an expandable box like the analyses in #19

Please choose what is easiest to implement and takes the least time.

There is no overall SEO score

Magento:strive_shoulder_pack___products___inventory___products___magento_admin
In WordPress there are two ways to show the overall SEO and readability score, in the tab itself and in a separate block:
edit_post_ local_wordpress_dev_devv _wordpress
edit_post_ local_wordpress_dev_devv _wordpress

array_merge warning

Hi,

I get no errors when installing the plugin but when after install i want to go to catalog/products and try to edit a product i get this:

Exception #0 (Exception): Warning: array_merge(): Argument #1 is not an array in /data/www/homint.nl/public_html/app/code/MaxServ/YoastSeo/Ui/Catalog/DataProvider/Product/Form/Modifier/YoastSeo.php on line 181

Do any of you know what it might be ?
Running magento 2.1.8, but it also does this in M2.1.9

Product configurations modal doesn't work like it should

Hi Vincent,

There seems to be an issue with the product configurations modal when using the Yoast SEO extension, if you click the Create Configurations on a product page in the backend an empty modal shows up, however, if you refresh the page and click the button again, it works just fine. I've tested this in 2 Magento installations and I was able to reproduce this issue in both installations.

A few customers also complained about product configurations disappearing, maybe this has something to do with my described issue.

If you need any information, please ask!

The configuration parameter "componentType" is a required for "" component.

I get this error upon installing this module on Magento 2.2. I installed via Composer (and also tried manually after it did not work).

This happens when going into a product in the admin. I went into a product minutes before installing the extension without issues, and the issue only appeared after the extension was installed.

The full error message is:
https://gist.github.com/patrickdeamorim/7a979108f8c631fe6b8469ae54ce3f8f

Tags are not stripped from og:description

So we get stuff like this;

image

... etc

Because the HTML is closed, the actual text shows on top of the page.

We now have overriden vendor/maxserv/magento-module-yoastseo/view/frontend/templates/yoastseo.phtml in our theme and changed;

<meta property="og:description" content="<?php echo $meta->getOpenGraphDescription(); ?>"/>

to;

<meta property="og:description" content="<?= $block->escapeHtmlAttr($block->stripTags($meta->getOpenGraphDescription())) ?>"/>

error to compile magento 2.15

php magento setup:di:compile

error:
MaxServ\YoastSeo\Block\Adminhtml\Config\Form\Field\AnalysisTemplates
Incorrect dependency in class MaxServ\YoastSeo\Block\Adminhtml\Config\Form\Field\AnalysisTemplates in /home/klevershop/public_html/comprarbici/vendor/maxserv/magento-module-yoastseo/Block/Adminhtml/Config/Form/Field/AnalysisTemplates.php
\Magento\Framework\Math\Random already exists in context object
MaxServ\YoastSeo\Block\YoastSeo
Incorrect dependency in class MaxServ\YoastSeo\Block\YoastSeo in /home/klevershop/public_html/comprarbici/vendor/maxserv/magento-module-yoastseo/Block/YoastSeo.php
\Magento\Framework\App\RequestInterface already exists in context object
Total Errors Count: 2
Errors during compilation:
MaxServ\YoastSeo\Block\Adminhtml\Config\Form\Field\AnalysisTemplates
Incorrect dependency in class MaxServ\YoastSeo\Block\Adminhtml\Config\Form\Field\AnalysisTemplates in /home/klevershop/public_html/comprarbici/vendor/maxserv/magento-module-yoastseo/Block/Adminhtml/Config/Form/Field/AnalysisTemplates.php
\Magento\Framework\Math\Random already exists in context object
MaxServ\YoastSeo\Block\YoastSeo
Incorrect dependency in class MaxServ\YoastSeo\Block\YoastSeo in /home/klevershop/public_html/comprarbici/vendor/maxserv/magento-module-yoastseo/Block/YoastSeo.php
\Magento\Framework\App\RequestInterface already exists in context object
Total Errors Count: 2
Errors during compilation:
MaxServ\YoastSeo\Block\Adminhtml\Config\Form\Field\AnalysisTemplates
Incorrect dependency in class MaxServ\YoastSeo\Block\Adminhtml\Config\Form\Field\AnalysisTemplates in /home/klevershop/public_html/comprarbici/vendor/maxserv/magento-module-yoastseo/Block/Adminhtml/Config/Form/Field/AnalysisTemplates.php
\Magento\Framework\Math\Random already exists in context object
MaxServ\YoastSeo\Block\YoastSeo
Incorrect dependency in class MaxServ\YoastSeo\Block\YoastSeo in /home/klevershop/public_html/comprarbici/vendor/maxserv/magento-module-yoastseo/Block/YoastSeo.php
\Magento\Framework\App\RequestInterface already exists in context object
Total Errors Count: 2
Errors during compilation:
MaxServ\YoastSeo\Block\Adminhtml\Config\Form\Field\AnalysisTemplates
Incorrect dependency in class MaxServ\YoastSeo\Block\Adminhtml\Config\Form\Field\AnalysisTemplates in /home/klevershop/public_html/comprarbici/vendor/maxserv/magento-module-yoastseo/Block/Adminhtml/Config/Form/Field/AnalysisTemplates.php
\Magento\Framework\Math\Random already exists in context object
MaxServ\YoastSeo\Block\YoastSeo
Incorrect dependency in class MaxServ\YoastSeo\Block\YoastSeo in /home/klevershop/public_html/comprarbici/vendor/maxserv/magento-module-yoastseo/Block/YoastSeo.php
\Magento\Framework\App\RequestInterface already exists in context object
Total Errors Count: 2
Errors during compilation:
MaxServ\YoastSeo\Block\Adminhtml\Config\Form\Field\AnalysisTemplates
Incorrect dependency in class MaxServ\YoastSeo\Block\Adminhtml\Config\Form\Field\AnalysisTemplates in /home/klevershop/public_html/comprarbici/vendor/maxserv/magento-module-yoastseo/Block/Adminhtml/Config/Form/Field/AnalysisTemplates.php
\Magento\Framework\Math\Random already exists in context object
MaxServ\YoastSeo\Block\YoastSeo
Incorrect dependency in class MaxServ\YoastSeo\Block\YoastSeo in /home/klevershop/public_html/comprarbici/vendor/maxserv/magento-module-yoastseo/Block/YoastSeo.php
\Magento\Framework\App\RequestInterface already exists in context object
Total Errors Count: 2
Errors during compilation:
MaxServ\YoastSeo\Block\Adminhtml\Config\Form\Field\AnalysisTemplates
Incorrect dependency in class MaxServ\YoastSeo\Block\Adminhtml\Config\Form\Field\AnalysisTemplates in /home/klevershop/public_html/comprarbici/vendor/maxserv/magento-module-yoastseo/Block/Adminhtml/Config/Form/Field/AnalysisTemplates.php
\Magento\Framework\Math\Random already exists in context object
MaxServ\YoastSeo\Block\YoastSeo
Incorrect dependency in class MaxServ\YoastSeo\Block\YoastSeo in /home/klevershop/public_html/comprarbici/vendor/maxserv/magento-module-yoastseo/Block/YoastSeo.php
\Magento\Framework\App\RequestInterface already exists in context object
Total Errors Count: 2
Errors during compilation:
MaxServ\YoastSeo\Block\Adminhtml\Config\Form\Field\AnalysisTemplates
Incorrect dependency in class MaxServ\YoastSeo\Block\Adminhtml\Config\Form\Field\AnalysisTemplates in /home/klevershop/public_html/comprarbici/vendor/maxserv/magento-module-yoastseo/Block/Adminhtml/Config/Form/Field/AnalysisTemplates.php
\Magento\Framework\Math\Random already exists in context object
MaxServ\YoastSeo\Block\YoastSeo
Incorrect dependency in class MaxServ\YoastSeo\Block\YoastSeo in /home/klevershop/public_html/comprarbici/vendor/maxserv/magento-module-yoastseo/Block/YoastSeo.php
\Magento\Framework\App\RequestInterface already exists in context object
Total Errors Count: 2
Errors during compilation:
MaxServ\YoastSeo\Block\Adminhtml\Config\Form\Field\AnalysisTemplates
Incorrect dependency in class MaxServ\YoastSeo\Block\Adminhtml\Config\Form\Field\AnalysisTemplates in /home/klevershop/public_html/comprarbici/vendor/maxserv/magento-module-yoastseo/Block/Adminhtml/Config/Form/Field/AnalysisTemplates.php
\Magento\Framework\Math\Random already exists in context object
MaxServ\YoastSeo\Block\YoastSeo
Incorrect dependency in class MaxServ\YoastSeo\Block\YoastSeo in /home/klevershop/public_html/comprarbici/vendor/maxserv/magento-module-yoastseo/Block/YoastSeo.php
\Magento\Framework\App\RequestInterface already exists in context object
Total Errors Count: 2
Errors during compilation:
MaxServ\YoastSeo\Block\Adminhtml\Config\Form\Field\AnalysisTemplates
Incorrect dependency in class MaxServ\YoastSeo\Block\Adminhtml\Config\Form\Field\AnalysisTemplates in /home/klevershop/public_html/comprarbici/vendor/maxserv/magento-module-yoastseo/Block/Adminhtml/Config/Form/Field/AnalysisTemplates.php
\Magento\Framework\Math\Random already exists in context object
MaxServ\YoastSeo\Block\YoastSeo
Incorrect dependency in class MaxServ\YoastSeo\Block\YoastSeo in /home/klevershop/public_html/comprarbici/vendor/maxserv/magento-module-yoastseo/Block/YoastSeo.php
\Magento\Framework\App\RequestInterface already exists in context object
Total Errors Count: 2
Errors during compilation:
MaxServ\YoastSeo\Block\Adminhtml\Config\Form\Field\AnalysisTemplates
Incorrect dependency in class MaxServ\YoastSeo\Block\Adminhtml\Config\Form\Field\AnalysisTemplates in /home/klevershop/public_html/comprarbici/vendor/maxserv/magento-module-yoastseo/Block/Adminhtml/Config/Form/Field/AnalysisTemplates.php
\Magento\Framework\Math\Random already exists in context object
MaxServ\YoastSeo\Block\YoastSeo
Incorrect dependency in class MaxServ\YoastSeo\Block\YoastSeo in /home/klevershop/public_html/comprarbici/vendor/maxserv/magento-module-yoastseo/Block/YoastSeo.php
\Magento\Framework\App\RequestInterface already exists in context object
Total Errors Count: 2
Errors during compilation:
MaxServ\YoastSeo\Block\Adminhtml\Config\Form\Field\AnalysisTemplates
Incorrect dependency in class MaxServ\YoastSeo\Block\Adminhtml\Config\Form\Field\AnalysisTemplates in /home/klevershop/public_html/comprarbici/vendor/maxserv/magento-module-yoastseo/Block/Adminhtml/Config/Form/Field/AnalysisTemplates.php
\Magento\Framework\Math\Random already exists in context object
MaxServ\YoastSeo\Block\YoastSeo
Incorrect dependency in class MaxServ\YoastSeo\Block\YoastSeo in /home/klevershop/public_html/comprarbici/vendor/maxserv/magento-module-yoastseo/Block/YoastSeo.php
\Magento\Framework\App\RequestInterface already exists in context object
Total Errors Count: 2
Errors during compilation:
MaxServ\YoastSeo\Block\Adminhtml\Config\Form\Field\AnalysisTemplates
Incorrect dependency in class MaxServ\YoastSeo\Block\Adminhtml\Config\Form\Field\AnalysisTemplates in /home/klevershop/public_html/comprarbici/vendor/maxserv/magento-module-yoastseo/Block/Adminhtml/Config/Form/Field/AnalysisTemplates.php
\Magento\Framework\Math\Random already exists in context object
MaxServ\YoastSeo\Block\YoastSeo
Incorrect dependency in class MaxServ\YoastSeo\Block\YoastSeo in /home/klevershop/public_html/comprarbici/vendor/maxserv/magento-module-yoastseo/Block/YoastSeo.php
\Magento\Framework\App\RequestInterface already exists in context object
Total Errors Count: 2
Errors during compilation:
MaxServ\YoastSeo\Block\Adminhtml\Config\Form\Field\AnalysisTemplates
Incorrect dependency in class MaxServ\YoastSeo\Block\Adminhtml\Config\Form\Field\AnalysisTemplates in /home/klevershop/public_html/comprarbici/vendor/maxserv/magento-module-yoastseo/Block/Adminhtml/Config/Form/Field/AnalysisTemplates.php
\Magento\Framework\Math\Random already exists in context object
MaxServ\YoastSeo\Block\YoastSeo
Incorrect dependency in class MaxServ\YoastSeo\Block\YoastSeo in /home/klevershop/public_html/comprarbici/vendor/maxserv/magento-module-yoastseo/Block/YoastSeo.php
\Magento\Framework\App\RequestInterface already exists in context object
Total Errors Count: 2
Errors during compilation:
MaxServ\YoastSeo\Block\Adminhtml\Config\Form\Field\AnalysisTemplates
Incorrect dependency in class MaxServ\YoastSeo\Block\Adminhtml\Config\Form\Field\AnalysisTemplates in /home/klevershop/public_html/comprarbici/vendor/maxserv/magento-module-yoastseo/Block/Adminhtml/Config/Form/Field/AnalysisTemplates.php
\Magento\Framework\Math\Random already exists in context object
MaxServ\YoastSeo\Block\YoastSeo
Incorrect dependency in class MaxServ\YoastSeo\Block\YoastSeo in /home/klevershop/public_html/comprarbici/vendor/maxserv/magento-module-yoastseo/Block/YoastSeo.php
\Magento\Framework\App\RequestInterface already exists in context object
Total Errors Count: 2
Errors during compilation:
MaxServ\YoastSeo\Block\Adminhtml\Config\Form\Field\AnalysisTemplates
Incorrect dependency in class MaxServ\YoastSeo\Block\Adminhtml\Config\Form\Field\AnalysisTemplates in /home/klevershop/public_html/comprarbici/vendor/maxserv/magento-module-yoastseo/Block/Adminhtml/Config/Form/Field/AnalysisTemplates.php
\Magento\Framework\Math\Random already exists in context object
MaxServ\YoastSeo\Block\YoastSeo
Incorrect dependency in class MaxServ\YoastSeo\Block\YoastSeo in /home/klevershop/public_html/comprarbici/vendor/maxserv/magento-module-yoastseo/Block/YoastSeo.php
\Magento\Framework\App\RequestInterface already exists in context object
Total Errors Count: 2

Mass-action page gives error

When I try to do a mass-action on products the page where you normally fill the attributes gives an error:

PHP Fatal error: Uncaught Error: Class 'fileUploader' not found in vendor/magento/framework/ObjectManager/Factory/AbstractFactory.php:93

Because this frontend model is only set for Yoast attributes I report it as an issue here.

error 500 Uncaught Error: Call to a member function getMetaProvider()

[23-May-2017 13:24:04 UTC] PHP Fatal error: Uncaught Error: Call to a member function getMetaProvider() on boolean in /home/klevershop/public_html/comprarbici/vendor/maxserv/magento-module-yoastseo/Block/YoastSeo.php:116
Stack trace:
#0 /home/klevershop/public_html/comprarbici/vendor/maxserv/magento-module-yoastseo/view/frontend/templates/yoastseo.phtml(27): MaxServ\YoastSeo\Block\YoastSeo->getMeta()
#1 /home/klevershop/public_html/comprarbici/vendor/magento/framework/View/TemplateEngine/Php.php(59): include('/home/kleversho...')
#2 /home/klevershop/public_html/comprarbici/vendor/magento/framework/View/Element/Template.php(255): Magento\Framework\View\TemplateEngine\Php->render(Object(MaxServ\YoastSeo\Block\YoastSeo), '/home/kleversho...', Array)
#3 /home/klevershop/public_html/comprarbici/vendor/magento/framework/View/Element/Template.php(279): Magento\Framework\View\Element\Template->fetchView('/home/kleversho...')
#4 /home/klevershop/public_html/comprarbici/vendor/magento/framework/View/Element/AbstractBlock.php(659): Magento\Framework\View\Element\ in /home/klevershop/public_html/comprarbici/vendor/maxserv/magento-module-yoastseo/Block/YoastSeo.php on line 116

no option for a unique store view meta description

I have written a meta description in the default store view, and then went to a specific store view.
I have the option of "Use Default Value" for the focus keyword and it works, but no such option for the "SEO title", "Slug" and "Meta description".

SEO-tool werkt niet correct.

Ik loop steeds tegen een probleem aan bij het maken van de SEO optie in Magento 2.

  • Bij het aanmaken van een categorie of product pagina, kan ik de SEO titel zonder problemen invoeren. Na opslaan van de pagina blijft deze ook staan.

CATEGORIE PAGINA

  1. Op de categorie pagina, word de meta description na het opslaan, de eerste keer niet meegenomen. Vervolgens dien je nogmaals de meta description in te voeren, bij de tweede keer opslaan word de content wel bewaard.
  2. De slug word helemaal niet bewaard, hoe vaak je die ook invoert. Daar komt bij dat na de derde keer opslaan van de slug, de meta description wederom leeg is.

Resume

  • Eerste keer opslaan SEO title + Slug + Meta description, alleen de SEO title word opgeslagen.
  • Tweede keer opslaan SEO title + Slug + Meta description, de SEO title + Meta description word opgeslagen.
  • Derde keer opslaan SEO title + Slug + Meta description, alleen de SEO title word weer opgeslagen.

PRODUCT PAGINA
Hier kan heb ik alleen problemen met de slug, deze krijg je niet toegevoegd. Telkens als je opslaat word de slug vervangen door example-post/

Goed om te weten, als ik een csv product import maak, word de slug wel opgeslagen. Als je vervolgens het product opent en een aanpassing maakt in een ander onderdeel, bijvoorbeeld general settings, word de slug weer

Bijgevoegd twee schermafbeeldingen.
1. Invoeren van de SEO gegevens.
2. Resultaat na opslaan.

schermafbeelding 2017-09-28 om 13 55 14
schermafbeelding 2017-09-28 om 13 55 45

vervangen door example-post/ na opslaan.

Links in Yoast SEO

Who can tell me if there are links or shortlinks in de Yoast SEO extension? And if yes, what are those links? Can you list them so I can check UTM tagging of those links?

Thanks!

Issue in install this extension

When i try to install this extension through composer its giving this error.

Package sjparkinson/static-review is abandoned, you should avoid using it. Use phpro/grumphp instead.

Installation failed, reverting ./composer.json to its original content.

[UnexpectedValueException]
Package magento/composer's source key should be specified as {"type": ..., "url": ..., "reference": ...},
{"type":"git","url":"https://github.com/magento/composer.git","reference":null} given

and by pasting the file in app folder extension doesn't allow us to edit product.

please reply as soon as possible.

SEO score and Readability score missing / copy TYPO3 UX

Right now, I think the interface in TYPO3 is much better.

Let's make it more or less the same in Magento. This means:

  • One tab containing both analyzers titled "Analysis"
  • An expandable box for the readability analysis with a readability score before the heading with copy "Readability".
  • An expandable box for the SEO analysis with an SEO score before the heading with copy "Focus keyword: {focus_keyword_bold}"
  • The input field for the focus keyword inside the SEO analysis box.

screen shot 2017-04-05 at 12 11 57

"Base table or view not found" error on setup:upgrade

AbstractInstallSchema.php: line 72
$cmsTableName = $this->getSetupConnection()->getTableName('cms_page');
returns wrong table name if there are used tables with prefixes.

Can be changed to
$cmsTableName = $this->setup->getTable('cms_page');
but not sure if it is perfect solution

Wrong Image ALT Attribute Analysis Report for Product Image

What did you expect to happen?

The analysis should show the correct report while the product image doesn't contain the focus keyword in the ALT attribute.

What happened instead?

It doesn't matter what ALT attribute you add on the product image, the analysis shows The images on this page contain alt attributes with the focus keyword., but it doesn't.

How can we reproduce this behavior?

  • Create a product
  • Add some content and product image from the Images and Videos option
  • Add focus keyword
  • Add an image ALT attribute that doesn't contain the focus keyword
  • See the content analysis report

Screenshots

screen shot 2017 01 31 at 8 18 11 pm
screen shot 2017 01 31 at 8 18 54 pm

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.