GithubHelp home page GithubHelp logo

emicoecommerce / magento2tweakwise-archived Goto Github PK

View Code? Open in Web Editor NEW
10.0 10.0 25.0 1.07 MB

Magento 2 module for Tweakwise integration

License: Other

PHP 84.37% HTML 5.78% JavaScript 8.81% Less 1.03%

magento2tweakwise-archived's Introduction

This package is abandoned and no longer maintained. For the replacement package see tweakwise/magento2-tweakwise package instead.


Build Status Code Climate Codacy Badge

Installation

Install package using composer

composer require emico/tweakwise

This will install emico/tweakwise and emico/tweakwise-export

Enable module(s) and run installers

php bin/magento module:enable Emico_TweakwiseExport Emico_Tweakwise
php bin/magento setup:upgrade
php bin/magento setup:static-content:deploy

Configuration

When the extension is installed it is disabled by default. There are three different parts which can be enabled separately. Configuration can be found at Stores -> Configuration -> Catalog -> Tweakwise.

Rundown of all possible settings

Below is a rundown of all configuration options

General:

  1. Authentication key: This is used to communicate with tweakwise and determines your navigator instance, it should be the same as the key found in the navigator under Connectivity > End points.
  2. Server url: The url of the tweakwise server.
  3. Timeout: If tweakwise fails to respond after this time in seconds the request is aborted.

Layered Navigation (All settings depend on Enabled having value yes):

  1. Enabled: Use tweakwise results in navigation, if disabled the standard magento navigation is used.

  2. Hide facets with only one option: Given a result set from tweakwise in which a filter has only one option show that filter or not?

  3. Use default magento filter renderer: Use Magento standard filter templates or use templates bundled by the module. If you want to make full use of the features provided by this module then this should be set to No (i.e. make use of tweakwise template files).

  4. Filter form: This depends on 'Use default magento filter renderer' having value No. Render all filters in a form with filter buttons so that the user can select a set of filters and then navigate to the result instead of immediately navigating to the results when a filter is clicked.

  5. Filter url query parameters: Tweakwise filter urls will have all query parameters of the page in it so also the "cid" and utm_source parameters if present. You can determine in which way you want to filter these out (if any).

  6. Filter url query arguments: This depends on 'Filter url query parameters' having any value not equal to 'Dont Filter'. This field specifies which parameters should be removed from the tweakwise filter urls.

  7. Url strategy: Has two options Query parameters and Seo path slug. If query parameters is selected then the tweakwise filter urls (and thus your navigation urls) will be constructed as www.example.com/example-category?color=red.

    If Seo path slugs is selected the url is constructed as www.example.com/example-category/color/red.

Seo (All settings depend on Enabled having value yes)

  1. Enabled: use Seo options yes or no.
  2. Filter whitelist: A list of filters which should be indexable (all filters not selected here are not indexable). If a filter is marked as not indexable then its href attribute will be set to "#" its original url will be set in a data-seo-href attribute which will be used by javascript to navigate. Note that the category filter is always marked as indexable. This used to be a multiselect field containing magento attributes however tweakwise facilitates derived properties, these properties are not related to magento attributes and as such these filters would be not indexable. The field has changed to a comma separated text field so that these derived properties can be properly whitelisted.
  3. Max allowed facets: This combines with the Filter whitelist setting. Filters are indexable if and only if they are in the whitelist and the selected filter count does not go above max_allowed_facets. The reason this is an AND check is because otherwise indexation will still happen on the non whitelisted filters and it is unclear which url is present (an arbitrary amount of filters could be selected). Suppose max allowed facet is 1 and only "size" is in the whitelist. Then filter "color" with value "red" is not indexable (since "color" is not in the whitelist). If we now allow the size filter to still be indexable then url example.com/category/color/red/size/M would be indexable whereas example.com/category/color/red is not which is incorrect. This would lead to infinite crawling on filter urls which is undesirable

Autocomplete (All settings depend on Enabled having value yes)

  1. Enabled: Use tweakwise autocomplete results or not.
  2. Use Suggestions Autocomplete: Use new suggestion api (Yes) or use the standard autocomplete api (No)
  3. Show products: Show product suggestions in autocomplete results.
  4. Show suggestions: Show search suggestions in autocomplete results.
  5. Stay in category: Use the current category when getting autocomplete results.
  6. Maximum number of results: At most this many autocomplete results will be show.

Search (All settings depend on Enabled having value yes)

  1. Enabled: Use tweakwise search of default magento search results
  2. Tweakwise search template: The tweakwise template to use for search results (this determines which filters are visible)
  3. Search language: This determines the language used by the store and is passed to tweakwise. Tweakwise uses this to determine word conjugations and also correct spelling errors when considering which results should be shown to the user. An example: suppose Language is set to 'Dutch' and the user types 'Bed' (which is the same in English, namely the place where one sleeps) then tweakwise might suggest 'Bedden' (this is plural for 'Beds') If Language is set to English then in the example above tweakwise might suggest 'Beds'.

Personal Merchandising

  1. Enabled: Use personal Merchandising (Yes/No) This is only available if you use ajax filtering.
  2. Cookie name: The cookie which holds the tweakwise profile id, this cookie is (usually) set with a tracking script. The value of this cookie will be added to the tweakwise request, the response will contain a personalized sort order for that particular customer.

Note that enabling these settings has consequences for performance. Using this feature means that all category pages have personalized content. As such, it is no longer possible cache navigation responses where this profile cookie name has been used. If a category page is cached in varnish (which it usually is) the varnish version is still served, however we reload the product list via ajax to get the personalized sort order. We do not add the profile cookie to non-ajax navigation requests, this is done so that normal requests can still be cached by varnish. This means that the user is greeted by a loader. The product list is reloaded if and only if the following conditions are met:

  1. Personal merchandising setting is enabled
  2. Cookie name setting has a value
  3. The user has the specified cookie with a non empty value.

The product list reload happens once for every category visit. This means that if the user does not have the specified cookie the normal (cached) results are served. When the product list is reloaded in such a manner the result will not be cacheable. This has consequences for server load keep this in mind.

Recommendations

  1. Crosssell enabled: Replace magento native related products with tweakwise crosssell & upsell recommendations. Terminology is confusing since this is relevant for magento related products and not for magento crosssell products
  2. Default crosssell template: Which tweakwise recommendation template to use for related products. Only relevant when crosssell is enabled This can also be configured on a product and on a category. The template used is determined as follows: first check product for a configured template if not then check the product category for a template. If the category does not have a template configured then use the default.
  3. Default crosssell group code: Only visible when Default crosssell template has value '- Group Code -'. Use this to specify the group of recommendations
  4. Upsell Enabled: Replace magento native upsell results with tweakwise crosssell & upsell recommendations.
  5. Default upsell template: Which template recommendation template to use for upsell products. Only relevant when upsell is enabled. This can also be configured on a product and on a category. The template used is determined as follows: first check product for a configured template if not then check the product category for a template. If the category does not have a template configured then use the default.
  6. Default upsell group code: Only visible when Default upsell template has value '- Group Code -'. Use this to specify the group of recommendations
  7. Featured products enabled: If yes then tweakwise can show featured products on category pages.
  8. Default Featured product template: The default template to use when rendering featured products. The template can also be set per category and falls back to this setting if not found on the category.

Support

For in depth support regarding configuration and all options tweakwise has to offer use the following links.

  1. Tweakwise support: https://www.tweakwise.com/support/
  2. Tweakwise api documentation: http://developers.tweakwise.com/
  3. General questions: https://www.tweakwise.com/contact/

For feature requests we refer to the links above. For technical issues github is used. If you find a technical issue please create an issue on github and notify tweakwise via the links above. If you also happen to have the solution to that issue feel free to create a merge request.

Compatibility

We strive to remain compatible with all Magento 2.X versions and the latest 2.X-1 version where X is the highest Magento official 'sub' release. Currently X=3 hence we should be compatible with all 2.3 versions and the latest 2.2 version which is 2.2.10 (at the time of writing). We do not actively drop support for versions below this range and will implement minor changes if that means we can remain compatible with versions below this range. That being said if we can do a massive simplification of code at the cost of dropping support for version 2.1.Y we will do so. We also refer to the magento software lifecycle: https://magento.com/sites/default/files/magento-software-lifecycle-policy.pdf. Note that 2.2 is End Of Life.

magento2tweakwise-archived's People

Contributors

aadmathijssen avatar ah-net avatar basselalaraaj avatar binohartoko avatar bramstroker avatar edwinljacobs avatar eezeebee-ahuininga avatar fgruntjes avatar gdvisser avatar govereem avatar hnto avatar jasperzeinstra avatar jeroenboersma avatar joost-florijn-kega avatar podenemus avatar poespas avatar remco-schouten avatar renehol avatar rofokken avatar sanderjongsma avatar stijnbernards avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

magento2tweakwise-archived's Issues

Not possible to get the active filters

Issue Brief

What is the purpose of this issue? Explain the background context.
For one of the webshops we build, we would like to show a button or link to remove all active filters. This is not possible since the function to get the active filters always returns an empty array.

Environment

  • PHP Version: 7.0
  • Magento Version: 2.1.9
  • Tweakwise Version: 1.0.7
  • Magento Deploy Mode: production && development

Steps to reproduce

  1. Select a configured filter in the frontend and wait for the page to reload.
  2. Look for a button or link to remove all active filters.

Actual result

  1. No active filters are shown
  2. The function $block->getLayer()->getState()->getFilters() in vendor/emico/tweakwise/src/view/frontend/templates/product/navigation/view.phtml always returns an empty array.
  3. data-count therefor is always 0.

Expected result

  1. The function $block->getLayer()->getState()->getFilters() in vendor/emico/tweakwise/src/view/frontend/templates/product/navigation/view.phtml always returns a filled array of active filters.
  2. data-count shows the number of active filters.
  3. All filters can be removed at once using a "remove all filter" button.

upgrade to 1.0.4 from composer results in server error

Issue Brief

What is the purpose of this issue? Explain the background context.

Environment

  • PHP Version: 7.0
  • Magento Version: ME 2.1.9
  • Tweakwise Version: 1.0.3/1.0.4
  • Tweakwise Export Version: 1.0.6
  • Magento Deploy Mode: production

Steps to reproduce

  1. upgrade to 1.0.4 from 1.0.3 with composer and --no-dev
  2. run setup:upgrade and di:compile and compile theme, flush cache
  3. go to a category page, the page will give a server error

We have fix:

after above run composer require emico/tweakwise:1.0.3 then run require emico/tweakwise:1.0.4 and flush cache and it works. The only difference is that dev modules are being installed.

Actual result

  1. the category and product page have a server error
    Expected result
    --
    the category and product page should show correct

Empty search term gives exception

On mobile, it's easy for a user to press "search" without entering a search parameter. The user is redirected to /catalogsearch/result/?q=. This page gives an exception.

Environment

  • PHP Version: 7.1
  • Magento Version: 2.2.7
  • Tweakwise Version: 1.4.9
  • Tweakwise Export Version: 1.3.3
  • Magento Deploy Mode: production, development

Steps to reproduce

  1. Install Magento with Tweakwise module and set correct config
  2. Visit /catalogsearch/result/?q=

Actual result

Exception:

1 exception(s):
Exception #0 (Emico\Tweakwise\Exception\ApiException): Invalid response received by Tweakwise server, response code is not 200. Request "http://navigator-group1.tweakwise.com/navigation-search/e6c5a413?tn_ps=24&tn_fk_visibility=3%7C4&tn_ft=8"

Exception #0 (Emico\Tweakwise\Exception\ApiException): Invalid response received by Tweakwise server, response code is not 200. Request "http://navigator-group1.tweakwise.com/navigation-search/e6c5a413?tn_ps=24&tn_fk_visibility=3%7C4&tn_ft=8"
#0 /magento/vendor/emico/tweakwise/src/Model/Client.php(166): Emico\Tweakwise\Model\Client->doRequest(Object(Emico\Tweakwise\Model\Client\Request\ProductSearchRequest))
#1 /magento/vendor/emico/tweakwise/src/Model/Catalog/Layer/NavigationContext.php(145): Emico\Tweakwise\Model\Client->request(Object(Emico\Tweakwise\Model\Client\Request\ProductSearchRequest))
#2 /magento/vendor/emico/tweakwise/src/Model/Catalog/Layer/NavigationContext/CurrentContext.php(59): Emico\Tweakwise\Model\Catalog\Layer\NavigationContext->getResponse()
#3 /magento/vendor/emico/tweakwise/src/Model/Observer/CatalogSearchRedirect.php(32): Emico\Tweakwise\Model\Catalog\Layer\NavigationContext\CurrentContext->getResponse()
#4 /magento/vendor/magento/framework/ObjectManager/Factory/AbstractFactory.php(111): Emico\Tweakwise\Model\Observer\CatalogSearchRedirect->__construct(Object(Emico\Tweakwise\Model\Config), Object(Emico\Tweakwise\Model\Catalog\Layer\NavigationContext\CurrentContext), Object(Magento\Framework\App\Action\Context), Object(Emico\Tweakwise\Model\Catalog\Layer\NavigationContext))
#5 /magento/vendor/magento/framework/ObjectManager/Factory/Dynamic/Developer.php(66): Magento\Framework\ObjectManager\Factory\AbstractFactory->createObject('Emico\\Tweakwise...', Array)
#6 /magento/vendor/magento/framework/ObjectManager/ObjectManager.php(70): Magento\Framework\ObjectManager\Factory\Dynamic\Developer->create('Emico\\Tweakwise...')
#7 /magento/vendor/magento/framework/Event/ObserverFactory.php(33): Magento\Framework\ObjectManager\ObjectManager->get('Emico\\Tweakwise...')
#8 /magento/vendor/magento/framework/Event/Invoker/InvokerDefault.php(58): Magento\Framework\Event\ObserverFactory->get('Emico\\Tweakwise...')
#9 /magento/vendor/magento/module-staging/Model/Event/Manager.php(97): Magento\Framework\Event\Invoker\InvokerDefault->dispatch(Array, Object(Magento\Framework\Event\Observer))
#10 /magento/generated/code/Magento/Staging/Model/Event/Manager/Proxy.php(95): Magento\Staging\Model\Event\Manager->dispatch('controller_acti...', Array)
#11 /magento/vendor/magento/framework/App/Action/Action.php(100): Magento\Staging\Model\Event\Manager\Proxy->dispatch('controller_acti...', Array)
#12 /magento/vendor/magento/framework/Interception/Interceptor.php(58): Magento\Framework\App\Action\Action->dispatch(Object(Magento\Framework\App\Request\Http))
#13 /magento/vendor/magento/framework/Interception/Interceptor.php(138): Magento\CatalogSearch\Controller\Result\Index\Interceptor->___callParent('dispatch', Array)
#14 /magento/vendor/magento/module-customer-segment/Model/App/Action/ContextPlugin.php(81): Magento\CatalogSearch\Controller\Result\Index\Interceptor->Magento\Framework\Interception\{closure}(Object(Magento\Framework\App\Request\Http))
#15 /magento/vendor/magento/framework/Interception/Interceptor.php(135): Magento\CustomerSegment\Model\App\Action\ContextPlugin->aroundDispatch(Object(Magento\CatalogSearch\Controller\Result\Index\Interceptor), Object(Closure), Object(Magento\Framework\App\Request\Http))
#16 /magento/vendor/magento/framework/Interception/Interceptor.php(153): Magento\CatalogSearch\Controller\Result\Index\Interceptor->Magento\Framework\Interception\{closure}(Object(Magento\Framework\App\Request\Http))
#17 /magento/generated/code/Magento/CatalogSearch/Controller/Result/Index/Interceptor.php(39): Magento\CatalogSearch\Controller\Result\Index\Interceptor->___callPlugins('dispatch', Array, Array)
#18 /magento/vendor/magento/framework/App/FrontController.php(55): Magento\CatalogSearch\Controller\Result\Index\Interceptor->dispatch(Object(Magento\Framework\App\Request\Http))
#19 /magento/vendor/magento/framework/Interception/Interceptor.php(58): Magento\Framework\App\FrontController->dispatch(Object(Magento\Framework\App\Request\Http))
#20 /magento/vendor/magento/framework/Interception/Interceptor.php(138): Magento\Framework\App\FrontController\Interceptor->___callParent('dispatch', Array)
#21 /magento/vendor/magento/module-store/App/FrontController/Plugin/RequestPreprocessor.php(94): Magento\Framework\App\FrontController\Interceptor->Magento\Framework\Interception\{closure}(Object(Magento\Framework\App\Request\Http))
#22 /magento/vendor/magento/framework/Interception/Interceptor.php(135): Magento\Store\App\FrontController\Plugin\RequestPreprocessor->aroundDispatch(Object(Magento\Framework\App\FrontController\Interceptor), Object(Closure), Object(Magento\Framework\App\Request\Http))
#23 /magento/vendor/magento/module-page-cache/Model/App/FrontController/BuiltinPlugin.php(69): Magento\Framework\App\FrontController\Interceptor->Magento\Framework\Interception\{closure}(Object(Magento\Framework\App\Request\Http))
#24 /magento/vendor/magento/framework/Interception/Interceptor.php(135): Magento\PageCache\Model\App\FrontController\BuiltinPlugin->aroundDispatch(Object(Magento\Framework\App\FrontController\Interceptor), Object(Closure), Object(Magento\Framework\App\Request\Http))
#25 /magento/vendor/magento/framework/Interception/Interceptor.php(153): Magento\Framework\App\FrontController\Interceptor->Magento\Framework\Interception\{closure}(Object(Magento\Framework\App\Request\Http))
#26 /magento/generated/code/Magento/Framework/App/FrontController/Interceptor.php(26): Magento\Framework\App\FrontController\Interceptor->___callPlugins('dispatch', Array, NULL)
#27 /magento/vendor/magento/framework/App/Http.php(135): Magento\Framework\App\FrontController\Interceptor->dispatch(Object(Magento\Framework\App\Request\Http))
#28 /magento/generated/code/Magento/Framework/App/Http/Interceptor.php(24): Magento\Framework\App\Http->launch()
#29 /magento/vendor/magento/framework/App/Bootstrap.php(257): Magento\Framework\App\Http\Interceptor->launch()
#30 /magento/pub/index.php(37): Magento\Framework\App\Bootstrap->run(Object(Magento\Framework\App\Http\Interceptor))
#31 /Users/luuk/.composer/vendor/weprovide/valet-plus/server.php(131): require('/Volumes/CaseSe...')
#32 {main}
<error xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<message>no (correct) searchterm provided</message>
</error>

Expected result

Redirect to homepage (default Magento)

Possible fix

Replace in file magento/vendor/emico/tweakwise/src/Model/Catalog/Layer/Url/AbstractUrl.php:

/**
     * @param HttpRequest $request
     * @return string|null
     */
    protected function getSearch(HttpRequest $request)
    {
        return $request->getQuery(self::PARAM_SEARCH);
    }

With:

/**
     * @param HttpRequest $request
     * @return string|null
     */
    protected function getSearch(HttpRequest $request)
    {
        return $request->getQuery(self::PARAM_SEARCH) ?: 'false';
    }

Out of stock Products are shown while "Display Out of Stock Products" is set to No

He guys,
We're having an issue with out-of-stock products shown at the product list while the setting to Display out-of-stock products is set to no.
Environment

Environment

  • PHP Version: PHP 7.0.31
  • Magento Version: Magento2 Commerce 2.2.5
  • Tweakwise Version: v1.3.2
  • Tweakwise Export Version: v1.1.4
  • Magento Deploy Mode: (production|development) both
  • Third party modules:

Steps to reproduce

  1. Enable tweakwise module
  2. Make sure the setting "Display Out of Stock Products" is set to No under Stores > Configuration > Catalog > Inventory
  3. Go to the product list page on frontend

Actual result

  1. Out of stock products are shown

Expected result

  1. Out of stock products are not shown

When we disable the tweakwise module, those products that are out of stock, are not shown anymore.

Price fillter always applied when slider

Issue Brief

When applying a filter (for example brand) to the categorie overview the final_price filter is also applied (without pushing "apply" on that filter). The price is shown as a slider, when changing the view to checkboxes this issue doesn't occure.

Environment

  • PHP Version: PHP 7.0.31
  • Magento Version: Magento2 Commerce 2.2.5
  • Tweakwise Version: v1.4.2
  • Tweakwise Export Version: v1.2.3
  • Magento Deploy Mode: (production|development) both
  • Third party modules:

Steps to reproduce

  1. Add the price filter as a slider to the filter options and make sure you have other filters on attributes
  2. Apply a filter on onother attribute

Actual result

  1. Besides the expected filter, the price filter is also applied

Expected result

Only the applied filter should be used

<li> element without <ol> or <ul> element

Issue Brief

Frontend developers complaining about incorrect html nesting.

Environment

  • PHP Version: (7.0.31)
  • Magento Version: Magento Commerce Cloud 2.2.5
  • Tweakwise Version: test branch (80a2933)
  • Tweakwise Export Version: 1.1.4
  • Magento Deploy Mode: production & development
  • Third party modules: a lot

Steps to reproduce

  1. Look at the file https://github.com/EmicoEcommerce/Magento2Tweakwise/blob/80a2933/src/view/frontend/templates/product/navigation/view.phtml#L69-L71

Actual result

  1. See a <li> element without <ul> or <ol> wrapper element

Expected result

  1. See a <li> element which is wrapped in a <ul> or <ol> element or something completely different then a <li> element

Product Empty When Page Exceed

In the category page, product list is empty when a page is exceed the total page. Even this is logically correct but this can be confusing for customer. And also this behavior is different from default Magento.

When page is exceed the total page, it should be corrected by go to the last page

Environment

  • PHP Version: 7.0
  • Magento Version: 2.1.7
  • Tweakwise Version: 1.0.1
  • Tweakwise Export Version: 1.0.2
  • Magento Deploy Mode: production

Steps to reproduce

  1. Go to a category page with pagination in it (has multiple pages)
  2. Make sure the page size option is not the biggest
  3. Go to the last page
  4. Set the page size option bigger

Actual result

  • Page has product list empty

Expected result

List the expected results as a bullet list of expectations

  • Like default Magento, it's corrected by go to the last page of it's page size

Invalid method escapeHtmlAttr

Extension version: latest release
Magento version: 2.1.6
PHP 7

After upgrading extension to the latest version, we get the following error on the catalog product list view:

1 exception(s):
Exception #0 (Magento\Framework\Exception\LocalizedException): Ongeldige methode Magento\LayeredNavigation\Block\Navigation::escapeHtmlAttr

Exception #0 (Magento\Framework\Exception\LocalizedException): Ongeldige methode Magento\LayeredNavigation\Block\Navigation::escapeHtmlAttr
#0 /vagrant/app/code/Emico/Tweakwise/view/frontend/templates/product/navigation/view.phtml(48): Magento\Framework\DataObject->__call('escapeHtmlAttr', Array)
#1 /vagrant/vendor/magento/framework/View/TemplateEngine/Php.php(59): include('/vagrant/app/co...')
#2 /vagrant/vendor/magento/framework/View/Element/Template.php(255): Magento\Framework\View\TemplateEngine\Php->render(Object(Magento\LayeredNavigation\Block\Navigation), '/vagrant/app/co...', Array)
#3 /vagrant/vendor/magento/framework/View/Element/Template.php(279): Magento\Framework\View\Element\Template->fetchView('/vagrant/app/co...')
#4 /vagrant/vendor/magento/framework/View/Element/AbstractBlock.php(659): Magento\Framework\View\Element\Template->_toHtml()
#5 /vagrant/vendor/magento/framework/View/Layout.php(542): Magento\Framework\View\Element\AbstractBlock->toHtml()
#6 /vagrant/vendor/magento/framework/View/Layout.php(518): Magento\Framework\View\Layout->_renderBlock('catalog.leftnav')
#7 /vagrant/var/generation/Magento/Framework/View/Layout/Interceptor.php(206): Magento\Framework\View\Layout->renderNonCachedElement('catalog.leftnav')
#8 /vagrant/vendor/magento/framework/View/Layout.php(472): Magento\Framework\View\Layout\Interceptor->renderNonCachedElement('catalog.leftnav')
#9 /vagrant/var/generation/Magento/Framework/View/Layout/Interceptor.php(193): Magento\Framework\View\Layout->renderElement('catalog.leftnav', true)
#10 /vagrant/vendor/magento/framework/View/Layout.php(569): Magento\Framework\View\Layout\Interceptor->renderElement('catalog.leftnav')
#11 /vagrant/vendor/magento/framework/View/Layout.php(520): Magento\Framework\View\Layout->_renderContainer('sidebar.main')
#12 /vagrant/var/generation/Magento/Framework/View/Layout/Interceptor.php(206): Magento\Framework\View\Layout->renderNonCachedElement('sidebar.main')
#13 /vagrant/vendor/magento/framework/View/Layout.php(472): Magento\Framework\View\Layout\Interceptor->renderNonCachedElement('sidebar.main')
#14 /vagrant/var/generation/Magento/Framework/View/Layout/Interceptor.php(193): Magento\Framework\View\Layout->renderElement('sidebar.main', true)
#15 /vagrant/vendor/magento/framework/View/Layout.php(569): Magento\Framework\View\Layout\Interceptor->renderElement('sidebar.main')
#16 /vagrant/vendor/magento/framework/View/Layout.php(520): Magento\Framework\View\Layout->_renderContainer('div.sidebar.mai...')
#17 /vagrant/var/generation/Magento/Framework/View/Layout/Interceptor.php(206): Magento\Framework\View\Layout->renderNonCachedElement('div.sidebar.mai...')
#18 /vagrant/vendor/magento/framework/View/Layout.php(472): Magento\Framework\View\Layout\Interceptor->renderNonCachedElement('div.sidebar.mai...')
#19 /vagrant/var/generation/Magento/Framework/View/Layout/Interceptor.php(193): Magento\Framework\View\Layout->renderElement('div.sidebar.mai...', true)
#20 /vagrant/vendor/magento/framework/View/Layout.php(569): Magento\Framework\View\Layout\Interceptor->renderElement('div.sidebar.mai...')
#21 /vagrant/vendor/magento/framework/View/Layout.php(520): Magento\Framework\View\Layout->_renderContainer('columns')
#22 /vagrant/var/generation/Magento/Framework/View/Layout/Interceptor.php(206): Magento\Framework\View\Layout->renderNonCachedElement('columns')
#23 /vagrant/vendor/magento/framework/View/Layout.php(472): Magento\Framework\View\Layout\Interceptor->renderNonCachedElement('columns')
#24 /vagrant/var/generation/Magento/Framework/View/Layout/Interceptor.php(193): Magento\Framework\View\Layout->renderElement('columns', true)
#25 /vagrant/vendor/magento/framework/View/Layout.php(569): Magento\Framework\View\Layout\Interceptor->renderElement('columns')
#26 /vagrant/vendor/magento/framework/View/Layout.php(520): Magento\Framework\View\Layout->_renderContainer('main.content')
#27 /vagrant/var/generation/Magento/Framework/View/Layout/Interceptor.php(206): Magento\Framework\View\Layout->renderNonCachedElement('main.content')
#28 /vagrant/vendor/magento/framework/View/Layout.php(472): Magento\Framework\View\Layout\Interceptor->renderNonCachedElement('main.content')
#29 /vagrant/var/generation/Magento/Framework/View/Layout/Interceptor.php(193): Magento\Framework\View\Layout->renderElement('main.content', true)
#30 /vagrant/vendor/magento/framework/View/Layout.php(569): Magento\Framework\View\Layout\Interceptor->renderElement('main.content')
#31 /vagrant/vendor/magento/framework/View/Layout.php(520): Magento\Framework\View\Layout->_renderContainer('page.wrapper')
#32 /vagrant/var/generation/Magento/Framework/View/Layout/Interceptor.php(206): Magento\Framework\View\Layout->renderNonCachedElement('page.wrapper')
#33 /vagrant/vendor/magento/framework/View/Layout.php(472): Magento\Framework\View\Layout\Interceptor->renderNonCachedElement('page.wrapper')
#34 /vagrant/var/generation/Magento/Framework/View/Layout/Interceptor.php(193): Magento\Framework\View\Layout->renderElement('page.wrapper', true)
#35 /vagrant/vendor/magento/framework/View/Layout.php(569): Magento\Framework\View\Layout\Interceptor->renderElement('page.wrapper')
#36 /vagrant/vendor/magento/framework/View/Layout.php(520): Magento\Framework\View\Layout->_renderContainer('root')
#37 /vagrant/var/generation/Magento/Framework/View/Layout/Interceptor.php(206): Magento\Framework\View\Layout->renderNonCachedElement('root')
#38 /vagrant/vendor/magento/framework/View/Layout.php(472): Magento\Framework\View\Layout\Interceptor->renderNonCachedElement('root')
#39 /vagrant/var/generation/Magento/Framework/View/Layout/Interceptor.php(193): Magento\Framework\View\Layout->renderElement('root', true)
#40 /vagrant/vendor/magento/framework/View/Layout.php(938): Magento\Framework\View\Layout\Interceptor->renderElement('root')
#41 /vagrant/vendor/magento/framework/Interception/Interceptor.php(146): Magento\Framework\View\Layout->getOutput()
#42 /vagrant/var/generation/Magento/Framework/View/Layout/Interceptor.php(494): Magento\Framework\View\Layout\Interceptor->___callPlugins('getOutput', Array, Array)
#43 /vagrant/vendor/magento/framework/View/Result/Page.php(243): Magento\Framework\View\Layout\Interceptor->getOutput()
#44 /vagrant/vendor/magento/framework/View/Result/Layout.php(164): Magento\Framework\View\Result\Page->render(Object(Magento\Framework\App\Response\Http\Interceptor))
#45 /vagrant/vendor/magento/framework/Interception/Interceptor.php(74): Magento\Framework\View\Result\Layout->renderResult(Object(Magento\Framework\App\Response\Http\Interceptor))
#46 /vagrant/vendor/magento/framework/Interception/Chain/Chain.php(70): Magento\Framework\View\Result\Page\Interceptor->___callParent('renderResult', Array)
#47 /vagrant/vendor/magento/framework/Interception/Chain/Chain.php(63): Magento\Framework\Interception\Chain\Chain->invokeNext('Magento\\Framewo...', 'renderResult', Object(Magento\Framework\View\Result\Page\Interceptor), Array, 'result-varnish-...')
#48 /vagrant/vendor/magento/module-page-cache/Model/Controller/Result/VarnishPlugin.php(74): Magento\Framework\Interception\Chain\Chain->Magento\Framework\Interception\Chain\{closure}(Object(Magento\Framework\App\Response\Http\Interceptor))
#49 /vagrant/vendor/magento/framework/Interception/Chain/Chain.php(67): Magento\PageCache\Model\Controller\Result\VarnishPlugin->aroundRenderResult(Object(Magento\Framework\View\Result\Page\Interceptor), Object(Closure), Object(Magento\Framework\App\Response\Http\Interceptor))
#50 /vagrant/vendor/magento/framework/Interception/Interceptor.php(138): Magento\Framework\Interception\Chain\Chain->invokeNext('Magento\\Framewo...', 'renderResult', Object(Magento\Framework\View\Result\Page\Interceptor), Array, 'result-builtin-...')
#51 /vagrant/vendor/magento/module-page-cache/Model/Controller/Result/BuiltinPlugin.php(67): Magento\Framework\View\Result\Page\Interceptor->Magento\Framework\Interception\{closure}(Object(Magento\Framework\App\Response\Http\Interceptor))
#52 /vagrant/vendor/magento/framework/Interception/Interceptor.php(142): Magento\PageCache\Model\Controller\Result\BuiltinPlugin->aroundRenderResult(Object(Magento\Framework\View\Result\Page\Interceptor), Object(Closure), Object(Magento\Framework\App\Response\Http\Interceptor))
#53 /vagrant/var/generation/Magento/Framework/View/Result/Page/Interceptor.php(130): Magento\Framework\View\Result\Page\Interceptor->___callPlugins('renderResult', Array, Array)
#54 /vagrant/vendor/magento/framework/App/Http.php(139): Magento\Framework\View\Result\Page\Interceptor->renderResult(Object(Magento\Framework\App\Response\Http\Interceptor))
#55 /vagrant/vendor/magento/framework/App/Bootstrap.php(258): Magento\Framework\App\Http->launch()
#56 /vagrant/index.php(88): Magento\Framework\App\Bootstrap->run(Object(Magento\Framework\App\Http))
#57 {main}

Error op de PLP

Bij het opzoeken van de PLP is ons in sommige gevallen, wanneer exact is ons niet duidelijk, is er een error. Onderstaande de error die wij tegen gekomen.

Environment

  • PHP Version: (|7.0|)
  • Magento Version 2.0.10:
  • Magento Enterprise: (yes)
  • Tweakwise Version: 0.3.0
  • Magento Deploy Mode: (production|)

a:4:{i:0;s:13:"Illegal state";i:1;s:4001:"#0 /var/www/vhosts/score/httpdocs/vendor/emico/tweakwise/src/Block/Catalog/Product/ProductList/Featured.php(86): Magento\CatalogSearch\Model\ResourceModel\Fulltext\Collection->addFieldToFilter('entity_id', Array) #1 /var/www/vhosts/score/httpdocs/vendor/magento/module-catalog/Block/Product/ListProduct.php(321): Emico\Tweakwise\Block\Catalog\Product\ProductList\Featured->_getProductCollection() #2 /var/www/vhosts/score/httpdocs/vendor/magento/module-page-cache/Model/Layout/LayoutPlugin.php(71): Magento\Catalog\Block\Product\ListProduct->getIdentities() #3 /var/www/vhosts/score/httpdocs/vendor/magento/framework/Interception/Interceptor.php(152): Magento\PageCache\Model\Layout\LayoutPlugin->afterGetOutput(Object(Magento\Framework\View\Layout\Interceptor), ' <script>\n t...') #4 /var/www/vhosts/score/httpdocs/var/generation/Magento/Framework/View/Layout/Interceptor.php(494): Magento\Framework\View\Layout\Interceptor->___callPlugins('getOutput', Array, Array) #5 /var/www/vhosts/score/httpdocs/vendor/magento/framework/View/Result/Page.php(243): Magento\Framework\View\Layout\Interceptor->getOutput() #6 /var/www/vhosts/score/httpdocs/vendor/magento/framework/View/Result/Layout.php(164): Magento\Framework\View\Result\Page->render(Object(Magento\Framework\App\Response\Http\Interceptor)) #7 /var/www/vhosts/score/httpdocs/vendor/magento/framework/Interception/Interceptor.php(74): Magento\Framework\View\Result\Layout->renderResult(Object(Magento\Framework\App\Response\Http\Interceptor)) #8 /var/www/vhosts/score/httpdocs/vendor/magento/framework/Interception/Chain/Chain.php(70): Magento\Framework\View\Result\Page\Interceptor->___callParent('renderResult', Array) #9 /var/www/vhosts/score/httpdocs/vendor/magento/framework/Interception/Chain/Chain.php(63): Magento\Framework\Interception\Chain\Chain->invokeNext('Magento\\Framewo...', 'renderResult', Object(Magento\Framework\View\Result\Page\Interceptor), Array, 'result-varnish-...') #10 /var/www/vhosts/score/httpdocs/vendor/magento/module-page-cache/Model/Controller/Result/VarnishPlugin.php(74): Magento\Framework\Interception\Chain\Chain->Magento\Framework\Interception\Chain\{closure}(Object(Magento\Framework\App\Response\Http\Interceptor)) #11 /var/www/vhosts/score/httpdocs/vendor/magento/framework/Interception/Chain/Chain.php(67): Magento\PageCache\Model\Controller\Result\VarnishPlugin->aroundRenderResult(Object(Magento\Framework\View\Result\Page\Interceptor), Object(Closure), Object(Magento\Framework\App\Response\Http\Interceptor)) #12 /var/www/vhosts/score/httpdocs/vendor/magento/framework/Interception/Interceptor.php(138): Magento\Framework\Interception\Chain\Chain->invokeNext('Magento\\Framewo...', 'renderResult', Object(Magento\Framework\View\Result\Page\Interceptor), Array, 'result-builtin-...') #13 /var/www/vhosts/score/httpdocs/vendor/magento/module-page-cache/Model/Controller/Result/BuiltinPlugin.php(67): Magento\Framework\View\Result\Page\Interceptor->Magento\Framework\Interception\{closure}(Object(Magento\Framework\App\Response\Http\Interceptor)) #14 /var/www/vhosts/score/httpdocs/vendor/magento/framework/Interception/Interceptor.php(142): Magento\PageCache\Model\Controller\Result\BuiltinPlugin->aroundRenderResult(Object(Magento\Framework\View\Result\Page\Interceptor), Object(Closure), Object(Magento\Framework\App\Response\Http\Interceptor)) #15 /var/www/vhosts/score/httpdocs/var/generation/Magento/Framework/View/Result/Page/Interceptor.php(26): Magento\Framework\View\Result\Page\Interceptor->___callPlugins('renderResult', Array, Array)

Featured Recommendations are loaded when the featured recommendations are not enabled

Issue Brief

What is the purpose of this issue? Explain the background context.

Environment

  • PHP Version: 7.0
  • Magento Version: 2.1.9
  • Tweakwise Version: 1.0.6
  • Tweakwise Export Version: 1.0.7
  • Magento Deploy Mode: production

Steps to reproduce

  1. Install Magento from develop branch.
  2. Disable Featured Recommendation
  3. Open a product list page.

Actual result

  1. You get a report page.

Message: Featured products without template ID was requested.
Stack trace:

#0 vendor/emico/tweakwise/src/Model/Client.php(91): Emico\Tweakwise\Model\Client\Request\Recommendations\FeaturedRequest->getPathSuffix()
#1 vendor/emico/tweakwise/src/Model/Client.php(166): Emico\Tweakwise\Model\Client->doRequest(Object(Emico\Tweakwise\Model\Client\Request\Recommendations\FeaturedRequest))
#2 vendor/emico/tweakwise/src/Model/Catalog/Product/Recommendation/Context.php(97): Emico\Tweakwise\Model\Client->request(Object(Emico\Tweakwise\Model\Client\Request\Recommendations\FeaturedRequest))
#3 vendor/emico/tweakwise/src/Model/Catalog/Product/Recommendation/Context.php(108): Emico\Tweakwise\Model\Catalog\Product\Recommendation\Context->getResponse()
#4 vendor/emico/tweakwise/src/Block/Catalog/Product/ProductList/Featured.php(86): Emico\Tweakwise\Model\Catalog\Product\Recommendation\Context->getCollection()
#5 vendor/magento/module-catalog/Block/Product/ListProduct.php(321): Emico\Tweakwise\Block\Catalog\Product\ProductList\Featured->_getProductCollection()
#6 vendor/magento/module-page-cache/Model/Layout/LayoutPlugin.php(71): Magento\Catalog\Block\Product\ListProduct->getIdentities()
#7 vendor/magento/framework/Interception/Interceptor.php(152): Magento\PageCache\Model\Layout\LayoutPlugin->afterGetOutput(Object(Magento\Framework\View\Layout\Interceptor), '               ...')

Expected result

List the expected results as a bullet list of expectations

  • An product list page without an error and featured recommendations

The check to show the featured recommendations on the product list page is done here:
https://github.com/EmicoEcommerce/Magento2Tweakwise/blob/master/src/Block/Catalog/Product/ProductList/Featured.php#L126

But Magento also calls the function _getProductCollection directly for instance:
https://github.com/magento/magento2/blob/2.2-develop/app/code/Magento/Catalog/Block/Product/ListProduct.php#L268

Incorrect amount of products shown by default in the product grid

Issue Brief

When changing the default amount of products to show in the product grid, the change isn't being reflected by the extension.

Environment

  • PHP Version: 7.0.18
  • Magento Version: 2.1.7
  • Tweakwise Version: 1.0.1
  • Magento Deploy Mode: production

Steps to reproduce

  1. Install Magento 2.1.7
  2. Go to Stores -> Configuration -> Catalog -> Catalog and change the Products per Page on Grid Default Value value to something else than 12, for example to 30.
  3. Go to any category which has said amount of products.

Actual result

  1. The category grid should contain 30 products

Expected result

  1. The category grid contains 12 products.

Debugging results

When you change the limit, Magento add the product_list_limit=60 which is reflected by the tweakwise URL builder like tn_ps=60.

When using the default value, this parameter is not present. Tweakwise creates a request to the following URL:
http://navigator-group1.tweakwise.com/navigation/xxxxxxx?tn_cid=xxxxxxx

This returns a response containing 12 products, instead of the expected 30 (configured default value in Magento 2).

Call to a member function render() on boolean when upgrade to latest version

Tweakwise extension version: latest release
Magento version: 2.1.6
PHP 7

After upgrade to the latest extension version, when we view catalog product list on the frontend, we get the following error:

PHP Fatal error:  Uncaught Error: Call to a member function render() on boolean in app/code/Emico/Tweakwise/view/frontend/templates/product/navigation/view.phtml:52
Stack trace:
#0 vendor/magento/framework/View/TemplateEngine/Php.php(59): include()
#1 vendor/magento/framework/View/Element/Template.php(255): Magento\Framework\View\TemplateEngine\Php->render(Object(Magento\LayeredNavigation\Block\Navigation), '/var/domains/co...', Array)
#2 vendor/magento/framework/View/Element/Template.php(279): Magento\Framework\View\Element\Template->fetchView('/var/domains/co...')
#3 vendor/magento/framework/View/Element/AbstractBlock.php(659): Magento\Framework\View\Element\Template->_toHtml()
#4 vendor/magento/framework/View/Layout.php(542): Magento\Framework\View\Element\AbstractBlock- in app/code/Emico/Tweakwise/view/frontend/templates/product/navigation/view.phtml on line 52

This happens only when 'Use default magento filter renderer' is set to 'No'.

tweakwise_admin_config

Search: displayed searchresults is stuck

When using the search, the displayed searchresults will appear > this is fine.
When you click random on a empty space you expect the displayed searchresults to close.
This does not happen which makes you unable to browse properly.

Environment

  • PHP Version: 70
  • Magento Version: 2.1.7
  • Tweakwise Version: 1.0.1
  • Tweakwise Export Version: 1.0.2
  • Magento Deploy Mode: production

Steps to reproduce

  1. enter a search term with results, the autocomplete will appear with search results
  2. try to close the window, this can only be done by pressing ESC

Actual result

  1. by clicking outside the search dropdown the searchdropdown will not close

Expected result

  1. by clicking outside the search dropdown the searchdropdown should close

Search redirects defined in navigator account are not working properly

Environment

  • PHP Version: 7.0
  • Magento Version: 2.1.6
  • Tweakwise Version: latest release
  • Tweakwise Export Version: latest release
  • Magento Deploy Mode: production
  • Third party modules: yes

Steps to reproduce

  1. Create redirect in Tweakwise navigator account

redirect

  1. Publish data and search for that term in Magento

Actual result

We always get redirected to the home page

Expected result

Magento should redirect to defined URL

Error due to timeout settings

Zend-http is generating errors due to tweakwise sending a float where integer or is_numeric is required.

Latest zend-http version (2.8.3, since 2018-01-08) has a new check on the timeout setting. Because tweakwise is providing a timeout in float format, this produce an error.

What is the purpose of this issue? Explain the background context.

Environment

  • PHP Version: (7.1)
  • Magento Version: 2.2.7
  • Tweakwise Version: 0.3.0
  • Tweakwise Export Version:
  • Magento Deploy Mode: production & development
  • Third party modules: zend-http 2.8.3

Steps to reproduce

Ensure to have magento 2.2.7 installed and updated with zend-http 2.8.3.
Pages using tweakwise will produce this error in support_report.log or frontend

Actual result

Error on frontend and in log:

2 exception(s):
Exception #0 (Emico\Tweakwise\Exception\ApiException): integer or numeric string expected, got double
Exception #1 (Zend\Http\Client\Adapter\Exception\InvalidArgumentException): integer or numeric string expected, got double

Exception #0 (Emico\Tweakwise\Exception\ApiException): integer or numeric string expected, got double
#0 /Users/remco.schouten/websites/score/httpdocs/vendor/emico/tweakwise/src/Model/Client.php(166): Emico\Tweakwise\Model\Client->doRequest(Object(Emico\Tweakwise\Model\Client\Request\ProductNavigationRequest))
#1 /Users/remco.schouten/websites/score/httpdocs/vendor/emico/tweakwise/src/Model/Catalog/Layer/NavigationContext.php(125): Emico\Tweakwise\Model\Client->request(Object(Emico\Tweakwise\Model\Client\Request\ProductNavigationRequest))
#2 /Users/remco.schouten/websites/score/httpdocs/vendor/emico/tweakwise/src/Model/Catalog/Layer/NavigationContext/CurrentContext.php(59): Emico\Tweakwise\Model\Catalog\Layer\NavigationContext->getResponse()
#3 /Users/remco.schouten/websites/score/httpdocs/vendor/emico/tweakwise/src/Block/Catalog/Product/ProductList/Toolbar/Plugin.php(54): Emico\Tweakwise\Model\Catalog\Layer\NavigationContext\CurrentContext->getResponse()
#4 /Users/remco.schouten/websites/score/httpdocs/vendor/magento/framework/Interception/Interceptor.php(135): Emico\Tweakwise\Block\Catalog\Product\ProductList\Toolbar\Plugin->aroundGetAvailableOrders(Object(Magento\Catalog\Block\Product\ProductList\Toolbar\Interceptor), Object(Closure))

Expected result

no error message

When authentication_key is empty, the frontend crashes

Issue Brief

We have an environment where we don't have the authentication_key filled in for the Tweakwise module. But doing this crashes the frontend with the error:

1 exception(s):
Exception #0 (Emico\Tweakwise\Exception\ApiException): Invalid response received by Tweakwise server, response code is not 200. Request "http://navigator-group1.tweakwise.com/navigation/?tn_ps=24"

Environment

  • PHP Version: 7.0.27
  • Magento Version: EE 2.2.2
  • Tweakwise Version: v1.3.2
  • Tweakwise Export Version: v1.1.4
  • Magento Deploy Mode: production & development (both)
  • Third party modules: all kinds

Steps to reproduce

  1. In the database, make sure the config value tweakwise/general/authentication_key contains an empty string (or an invalid key)
  2. Visit a page which uses Tweakwise (in our case the homepage)

Actual result

1 exception(s):
Exception #0 (Emico\Tweakwise\Exception\ApiException): Invalid response received by Tweakwise server, response code is not 200. Request "http://navigator-group1.tweakwise.com/navigation/?tn_ps=24"

Expected result

Tweakwise acts like it is disabled and doesn't crash

Product suggestions do not show up.

Issue Brief

While typing a search term product suggestions do not show up in the dropdown below.

Environment

  • Magento 2 Community Edition
  • Magento configuration> Stores > Configuration > Catalog > Tweakwise > Sectie ‘autocomplete’:
    • Enabled: Yes
    • Show products: Yes
    • Show suggestions: Yes
    • Stay in category: No
    • Maximum number of results: 6

Steps to reproduce

  1. Go to demo shop Magento2 CE: https://tweakwise2-ce.emico.nl/
  2. Start typing the search term 'wom' in the search display.

Actual result

eee

Expected result

The endpoint autocomplete show a lot more product suggestions. They don’t show up.
http://navigator-group1.tweakwise.com/autocomplete/c07f4abc?tn_q=wo
We expect a result of 12 items. 6x a suggestion and 6x product suggestions.

Sensitive logs

Sensitive logs can be encrypted with our PGP public key using a tool like https://sela.io/pgp/.

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: OpenPGP v2.0.8

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
XCUAAGDt8WKn3NJ3wy6a8w==
=j0ue
-----END PGP PUBLIC KEY BLOCK-----

Layered Navigation

Issue Brief

Layered navigation is not updated after installing Tweakwise.

Environment

Magento Version: 2.1.5 CE
Tweakwise Version: 1.0.0
Tweakwise Export Version: 1.0.0
Environment: development
Third party modules: None, clean Magento 2 install

Steps to reproduce

  1. Install Tweakwise extensions.
  2. Setup Tweakwise and run import/export scripts
  3. Flush caches
  4. Go a category page

Actual result

Layered navigation is still the plain Magento

Expected result

Layered navigation and result should be updated by Tweakwise

Featured products (recommendations) incorrectly displayed when using widgets

Wrong display of recommendations when using multiple 'Tweakwise - featured products' widgets within one 'content block'. It seems that the same recommendation rule is called more often instead of using the two different rules.

Environment

  • Magento Version: Magento 2 CE

Steps to reproduce

  1. Create two features product rules in Tweakwise:
    image

image

  1. Create a 'content block' in Magento.
  2. Insert two 'Tweakwise - features products' Widgets in the 'content block'. Select two different recommendations rules. The HTML looks like:

`

{{widget type="Emico\Tweakwise\Block\Catalog\Product\Widget\FeaturedProducts" rule_id="2"}}

{{widget type="Emico\Tweakwise\Block\Catalog\Product\Widget\FeaturedProducts" rule_id="1"}}

`
  1. Check the frontend page where the 'content block' is used. In the demo environment we reproduce it on the homepage. Check:
    https://tweakwise2-ce.emico.nl/

Actual result

For both widgets the same products show up. Check:
image

Expected result

Both widgets has to show up different products.

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: OpenPGP v2.0.8

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
XCUAAGDt8WKn3NJ3wy6a8w==
=j0ue
-----END PGP PUBLIC KEY BLOCK-----

Feature request: add setting for adding visibility as filter parameter

In Magento you can set a product visibility to 'Not individually', 'Catalog', 'Search', 'Catalog, Search'.
It would be nice if this attribute can be selected in the setting as a filter option.

In the export module you can choose already which visibility you want to export, but I would like to be able to export all products and just use a visibility filter as search parameter.

isCollapsible & isCollapsed are null

Issue Brief

I am trying to make the filters as configured by Tweakwise however, when trying to access to settings, the magic getters for isCollapsible and isCollapsed are returning null. The other getters are working as expected.

I've tried to fix this by myself, but this is not possible. I tried to do so by creating a preference for the SettingsType model but this is not possible because the model isn't instantiated by the ObjectManager.

Environment

  • PHP Version: 7.0.18
  • Magento Version: 2.1.7 EE
  • Tweakwise Version: 1.0.x-dev
  • Magento Deploy Mode: developer

Steps to reproduce

  1. Install Magento 2.17
  2. Install Tweakwise 1.0-x-dev
  3. In LayeredNavigation/templates/layer/view.phtml try to dump $filter->getFacet()->getFacetSettings()->getIsCollapsible();

Actual result

  1. Both functions return NULL

Expected result

  1. Both functions return their values as defined in Tweakwise

Search autocomplete should link to product

Issue Brief

What is the purpose of this issue? Explain the background context.

Environment

  • PHP Version: 7.0
  • Magento Version: 2.1.6 CE
  • Tweakwise Export Version: 1.0.0
  • Magento Deploy Mode: production + development
  • Third party modules:

Steps to reproduce

  1. Install Magento from develop branch.
  2. Activate the autocomplete in the Magento Tweakwise settings
  3. Search for an item and click on one of the results in the autocomplete

Actual result

  1. You will 'submit' the search form and go to the search result page, resulting in a search for the specific product name
  2. On the search result page, you see the products which you've searched for
  3. You have to click on the result to go to the product detail pagina

Expected result

  1. After clicking a result in the autocomplete, you should skip the results page and go to the clicked product detail page directly

Price filter remove link isn't working

When price filter is shown as a slider and you filter by price you get a GET param in your url something lik https://www.urlofyourshop.com/category/?price%5B0%5D=212-999. In the state block above the filters you will see two links to delete the price, one for 212 and one for 999. But the clear URL isn't made correctly. \Emico\Tweakwise\Model\Catalog\Layer\Url\QueryParameters::getAttributeRemoveUrl is not handeling the values correctly. It's handeling price as a multi select, trying to remove 212 or 999 from the options. But it's checking $index = array_search($value, $values); $values is an array [0 => '212-999'], and $value is 212 or 999, so array search doesn't return a $key and then the remove URL is incorrect.

Environment

  • PHP Version: 7.0
  • Magento Version: Magento 2.2.3
  • Tweakwise Version: 1.9.0
  • Tweakwise Export Version: 1.1.2
  • Magento Deploy Mode: production and development

Steps to reproduce

  1. Filter on price
  2. Notice that there are two price remove links
  3. Try to remove price filter by clicking on one of the links

Actual result

  1. Price filter isn't removed

Expected result

  • One state link for price
  • Price filter will be removed when clicking on the state link

Facet filter of type checkbox doesn't work.

Issue Brief

Environment

  • PHP Version: (5.6|7.0|7.1)
  • Magento Version:
  • Tweakwise Version:
  • Tweakwise Export Version:
  • Magento Deploy Mode: (production|development)
  • Third party modules:

Steps to reproduce

  1. Check demo shop: https://tweakwise2-ee.emico.nl/women/tops-women.html
  2. Use the filter 'Material' with, for example, the selection of the 'Fleece' value.

Actual result

  • nothing happened

Expected result

  • reload the product list view for the new selection made

Sensitive logs

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: OpenPGP v2.0.8

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
XCUAAGDt8WKn3NJ3wy6a8w==
=j0ue
-----END PGP PUBLIC KEY BLOCK-----

Visibility filter missing

Issue Brief

Magento has the attribute visibility, but the extension doesn't do anything with this feature. What would like to see is the following. For all the API requests to Tweakwise we would like the extension to always add the attribute visibility as an active filter tn_fk_visibility=\Magento\Catalog\Model\Product\Visibility::VISIBILITY_BOTH. If the request is for search we would like to also have the filter tn_fk_visibility=\Magento\Catalog\Model\Product\Visibility::VISIBILITY_IN_SEARCH and for all other requests it would be tn_fk_visibility=\Magento\Catalog\Model\Product\Visibility::VISIBILITY_IN_CATALOG. When this is added to the API request we can add the attribute visibility to our filter template in the Tweakwise Navigator backend. We'll set it to checkbox and hidden. Now on category pages only the products will be shown that are either visible in both catalog and search or only in catalog. And during a search request only products with visibility both or search will be visible. When someone doesn't add the attribute visibility to tweakwise filter template in navigator products with every visibility will be shown.

Environment

  • PHP Version: (7.0)
  • Magento Version: Magento 2.2.3
  • Tweakwise Version: 1.1.0
  • Tweakwise Export Version: -
  • Magento Deploy Mode: production
  • Third party modules: -

Steps to reproduce

  1. Install Magento from 1.1.0 tag.
  2. Create a product and set visibility to search and connect to a category
  3. Create a product and set visibility to catalog and connect to a category
  4. Visit the category and see if product with visibility search isn't shown
  5. Search for the product with visibility catalog and see if product isn't shown.

Actual result

  • Products with visibility search is also visible in category
  • Products with visibility catalog is also visible in search

Expected result

  • Products with visibility search shouldn't be visible in a category
  • Products with visibility catalog shouldn't be visible during search
  • Products with visibility catalog, search should be visible in categories and search.

Product list "Sort by" option resets selected option after return to the first page in pagination

Environment

  • PHP Version: 7.0
  • Magento Version: upgraded to 2.2.2
  • Tweakwise Version: 1.0.8
  • Tweakwise Export Version: 1.1.1
  • Magento Deploy Mode: production & development
  • Third party modules: yes

Steps to reproduce

  1. Create few "Sorting options" in Tweakwise navigator account
  2. Create "Sorting template" and associate created sorting options to it
    sorting_options
  3. Associate created template to one of the categories, and publish data

Expected result

  • When I sort product list on frontend, it works as expected
    levertijd_sorting

  • If I use pagination, it also keeps selected sorting option, and this is url query

?p=2&product_list_order=Levertijd

Actual result

  1. The problem occurs when I go back to the first page in pagination - sorting option resets to the default value, as if it was never selected, but url query remains. If I then try to select new sorting option, this is what I end up with in url query
?&product_list_order=Levertijd&product_list_order=Final+price+ascending

Wrong message is shown on the search result page when no products are found

Issue Brief

When you search on a search term that results in no products are found the wrong message is shown.

Environment

  • PHP Version: (5.6|7.0|7.1)
  • Magento Version: 2.1.9
  • Tweakwise Version: 1.0.9
  • Tweakwise Export Version: 1.1.2
  • Magento Deploy Mode: production|development

Steps to reproduce

  1. Install Magento from develop branch.
  2. Search on a term that you now results in zero products.

Actual result

  1. The message 'We can't find products matching the selection.' is shown.

Expected result

List the expected results as a bullet list of expectations

  • The following message should be shown: 'Your search returned no results.'

The reason why the wrong message is shown is because the result block of Magento checks if there are any results with the function 'getSize()':
https://github.com/magento/magento2/blob/2.1/app/code/Magento/CatalogSearch/Block/Result.php#L203

The function getSize uses the getSelectCountSql function to check how many products are found (https://github.com/magento/magento2/blob/2.1/lib/internal/Magento/Framework/Data/Collection/AbstractDb.php#L217). The product collection hasn't been filtered yet because that happens on load.

Display of upsell and cross-sell on product in multiple categories

Hello, this issue is more of a question than a bug. We have products that are associated to multiple categories and it is not clear which one of them is used to determine cross-sell and upsell templates for product.

Environment

  • PHP Version: 7.0
  • Magento Version: 2.1.6
  • Tweakwise Version: latest release
  • Tweakwise Export Version: latest release
  • Magento Deploy Mode: production
  • Third party modules: yes

Steps to reproduce

  1. In Magento, under Stores -> Configuration -> CATALOG -> Tweakwise -> Recommendations, enable Upsell and Cross-sell options, but don't choose default templates.
  2. Also, we don't select Tweakwise templates on product level.

Actual result

  1. Upsell and cross-sell are displayed on product in frontend

I assume they are collected from the category that the product belongs to. But this product is associated to over 10 categories, so which one is used to determine Tweakwise templates?

Headers already send when trying to retrieve generated feed xml

Issue Brief

In the following class vendor/magento/module-page-cache/Model/App/Response/HttpPlugin.php and X-Vary cookie can potentially be triggered unless the empty interface \Magento\Framework\App\PageCache\NotCacheableInterface is used. This causes the error 'headers already sent' to be shown on the screen along with an invalid xml feed. Since the text is already inserted in the output when calling the execute method for Emico\TweakwiseExport\App\Response. The actual xml feed is still valid, but can now not be imported from the Navigator, because of this.

The FileStorage Response class is using this: vendor/magento/module-media-storage/Model/File/Storage/Response.php. We could perhaps use this class or create our own Result class with this interface to fix the problem with setting the x-vary cookie after outputting the feed.

Problem: The Export execute method is not using a valid response object based on the interface: \Magento\Framework\Controller\ResultInterface|ResponseInterface But instead renders the feed to an output stream.

Way to go: We should either use an Result object which also implements \Magento\Framework\App\PageCache\NotCacheableInterface to avoid the X-Vary Cookie being set or place a die/exit at the end of the execute method.

The last solution is ugly, but might be good as a temporary fix. The first proposed solution would be the ideal way to go in my opinion.

Environment

  • PHP Version: (7.2)
  • Magento Version: 2.3.1
  • Tweakwise Version: v1.4.9
  • Tweakwise Export Version: v1.3.4
  • Magento Deploy Mode: (production)
    Steps to reproduce
    --
    I'm unsure how to reproduce this exactly. The problem occurs because a X-Vary / Sensitive Cookie is set after the Emico export action is done. The issue occurs because of the following:

Actual result
Headers already sent

Expected result
Outputted xml file

Grouped template items not showing

I think tweakwise changed the result given and changed the xml structure.
vendor/emico/tweakwise/src/Model/Client.php function doRequest returns the wrong array structure after xmlToArray. The upsell / crosssell collection expects an array return from doRequest items->item[]
But will return recommendation->items->item[], the collection will have no records.

URL: http://navigator-group1.tweakwise.com/recommendations/grouped/..../...../groupname

Magento 2.2.4
Tweakwise Version 1.3.2
php 7.1

For now fixed it with a dirty solution
In the doRequest added to the and before $this->responseFactory->create($request, $result);

        if(isset($result['recommendation'])) {
            $updatedResult=[];
            foreach($result['recommendation'] as $key => $items) {
                foreach($items['items'] as $itemArr) {
                    if(isset($itemArr['itemno'])) {
                        $updatedResult['items']['item'][] = $itemArr;
                    } else {
                        foreach($itemArr as $item) {
                            $updatedResult['items']['item'][] = $item;
                        }
                    }
                }
            }
            return $this->responseFactory->create($request, $updatedResult);
        }

Result grouped:

<recommendations xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<recommendation>
<id>12</id>
<name>Upsell / Cirkelzagen (Spanklemmen)</name>
<items>
<item>
<itemno>1000171667</itemno>
<title>Festool SYS-MFT Fixing-Set Limited Edition</title>
<brand/>
<price>247.89</price>
<url i:nil="true"/>
<image i:nil="true"/>
<labels i:nil="true"/>
<attributes/>
</item>
<item>
<itemno>1000154653</itemno>
<title>Festool FS-HZ 160 Snelspanklem 491594</title>
<brand/>
<price>41.28</price>
<url i:nil="true"/>
<image i:nil="true"/>
<labels i:nil="true"/>
<attributes/>
</item>
</items>
</recommendation>
<recommendation>
<id>421</id>
<name>Upsell / Cirkelzagen (Foudraals) </name>
<items>
<item>
<itemno>1000154650</itemno>
<title>Festool FS-BAG Foudraal 466357</title>
<brand/>
<price>47.89</price>
<url i:nil="true"/>
<image i:nil="true"/>
<labels i:nil="true"/>
<attributes/>
</item>
</items>
</recommendation>
<recommendation>
<id>422</id>
<name>Upsell / Cirkelzagen (Parallelaanslagen)</name>
<items>
<item>
<itemno>1000154086</itemno>
<title>Festool FS-PS/PSB 300 Geleideaanslag 490031</title>
<brand/>
<price>12.355</price>
<url i:nil="true"/>
<image i:nil="true"/>
<labels i:nil="true"/>
<attributes/>
</item>
</items>
</recommendation>
</recommendations>

Result product template (That works!):

This XML file does not appear to have any style information associated with it. The document tree is shown below.
<recommendation xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<items>
<item>
<itemno>1000153649</itemno>
<title>
Festool Speciaal Cirkelzaagblad 160x2,2x20 TF48 496308
</title>
<brand/>
<price>61.94</price>
<url i:nil="true"/>
<image i:nil="true"/>
<labels i:nil="true"/>
<attributes/>
</item>
<item>
<itemno>1000167623</itemno>
<title>
Festool Diamant Cirkelzaagblad 160x2,2x20 DIA4 201910
</title>
<brand/>
<price>123.925</price>
<url i:nil="true"/>
<image i:nil="true"/>
<labels i:nil="true"/>
<attributes/>
</item>
<item>
<itemno>1000153653</itemno>
<title>
Festool Fijngetand Cirkelzaagblad 160x2,2x20 W48 491952
</title>
<brand/>
<price>41.28</price>
<url i:nil="true"/>
<image i:nil="true"/>
<labels i:nil="true"/>
<attributes/>
</item>
<item>
<itemno>1000153650</itemno>
<title>
Festool Speciaal Cirkelzaagblad 160x2,2x20 TF48 496306
</title>
<brand/>
<price>68.553</price>
<url i:nil="true"/>
<image i:nil="true"/>
<labels i:nil="true"/>
<attributes/>
</item>
<item>
<itemno>1000153652</itemno>
<title>
Festool Universeel Cirkelzaagblad 160x2,2x20 W28 496302
</title>
<brand/>
<price>37.15</price>
<url i:nil="true"/>
<image i:nil="true"/>
<labels i:nil="true"/>
<attributes/>
</item>
<item>
<itemno>1000153651</itemno>
<title>
Festool Standaard Cirkelzaagblad 160x2,2x20 W18 768129
</title>
<brand/>
<price>30.537</price>
<url i:nil="true"/>
<image i:nil="true"/>
<labels i:nil="true"/>
<attributes/>
</item>
<item>
<itemno>1000163955</itemno>
<title>
Festool Panther Cirkelzaagblad 160x1,8x20 PW12 500460
</title>
<brand/>
<price>45.41</price>
<url i:nil="true"/>
<image i:nil="true"/>
<labels i:nil="true"/>
<attributes/>
</item>
<item>
<itemno>1000163954</itemno>
<title>
Festool Standaard Cirkelzaagblad 160x1,8x20 W18 500458
</title>
<brand/>
<price>33.016</price>
<url i:nil="true"/>
<image i:nil="true"/>
<labels i:nil="true"/>
<attributes/>
</item>
</items>
</recommendation>

Slider filter not working

Issue Brief

In the Tweakwise Navigator we created a filter option 'Price' based on the property final_price (which is set to output Numerical). The display type for the filter option is set to Slider.

On the front-end the slider is displayed, but it's not working correctly. When trying to set/change values the filter is not being applied and we end up with a URL like this:

category-x/?final_price=%7B%7Bfrom%7D%7D-%7B%7Bto%7D%7D

(instead of something like: category-x/?final_price=40-120).

Environment

  • PHP Version: 7.0
  • Magento Version: 2.2.2 (enterprise)
  • Tweakwise Version: 1.3.0, 1.3.1
  • Tweakwise Export Version: 1.1.2
  • Magento Deploy Mode: production, development
  • Third party modules: -

Steps to reproduce

  1. Install/configure Tweakwise and export products to Tweakwise.
  2. In the navigator set the feed property final_price to Numerical.
  3. Create a filter template.
  4. Add a new filter to the template (select final_price).
  5. Edit the added filter and set Display filter values to Slider.
  6. On the front-end visit a category and use/adjust the price slider.

Actual result

  1. Price filter not being applied.
  2. It reloads the page with this parameter added to the URL: ?final_price=%7B%7Bfrom%7D%7D-%7B%7Bto%7D%7D.

Expected result

List the expected results as a bullet list of expectations

  • Price filter is applied.
  • Url parameter (values) are correct.

Sorting parameter which is send to tweakwise is wrong

Issue Brief

It was discovered that the wrong parameter was send in the tn_sort field to the tweakwise servers to get a sorted list of products back.
It was sending the 'display title' instead of the 'title'
My guess is that these are by default probably the same so the issue was probably hiding because of this.
Our client has a different value for 'display title' and 'title' for a sortable attribute.

This diff seems to fix the problem:

diff --git a/src/Model/Client/Type/SortFieldType.php b/src/Model/Client/Type/SortFieldType.php
index 0a7ce41..0b330d3 100644
--- a/src/Model/Client/Type/SortFieldType.php
+++ b/src/Model/Client/Type/SortFieldType.php
@@ -57,6 +57,6 @@ class SortFieldType extends Type
      */
     public function getUrlValue()
     {
-        return $this->getDisplayTitle();
+        return $this->getTitle();
     }
-}
\ No newline at end of file
+}

This was already communicated to @EduardSelles via email a couple of weeks ago, but was probably lost in communciation somewhere, hence why I'm opening an issue so it isn't being forgotten, sorry for not creating a PR, due to lack of time at the moment.

Environment

  • PHP Version: 7.0
  • Magento Version: 2.2.5 EE
  • Tweakwise Version: test-branch
  • Tweakwise Export Version: test-branch
  • Magento Deploy Mode: production & development
  • Third party modules: a lot

Steps to reproduce

  1. Try to use the sort dropdown on a product listing page

Actual result

  1. Sort doesn't work

Expected result

  1. Sort works

Filter value with a special character ' provides broken link

The problem occurs on the product list page.
If there is a filter with a value that contains a special character like ', and you select that value, the page will be broken.

Steps to reproduce

  1. Go to a product list page.
  2. Make sure you have a facet filter value that contains a '. For example brand "Chasin' jeans".
  3. Select that facet value.

Actual result

  1. The URL looks like this: SHOP/catalog/category/view/s/jeans/id/26/?brand%5B0%5D=CHASIN%26%23039%3B
  2. The facets are gone, and the selection of products has not been made correctly.
  3. See screenshot

Sensitive logs

Sensitive logs can be encrypted with our PGP public key using a tool like https://sela.io/pgp/.

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: OpenPGP v2.0.8

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
XCUAAGDt8WKn3NJ3wy6a8w==
=j0ue
-----END PGP PUBLIC KEY BLOCK-----

Every slider shows currency on dragging the slider

Issue Brief

All sliders show currency upon sliding, even when the filter attached to it is no price filter.

Environment

  • PHP Version: 7.1
  • Magento Version: 2.2.7
  • Tweakwise Version: 1.4.4
  • Tweakwise Export Version: 1.2.3
  • Magento Deploy Mode: production

Steps to reproduce

  1. Install/configure Tweakwise and export products to Tweakwise.
  2. Create a filter template
  3. Add a new non-price filter
  4. Set filter to display as slider
  5. Go to the front-end and see that upon sliding the slider you will see a currency even when the field does not have anything to do with prices.

Actual result

  1. Currency is shown upon sliding
    image

Expected result

List the expected results as a bullet list of expectations

  1. Currency is not shown upon sliding

Feature request: Possible to create widgets of the type 'Tweakwise featured products'

Issue Brief

Tweakwise Extension Magento1 makes it possible to create widgets of the type 'Tweakwise featured products'. This widget can be placed on the homepage.

This features is also desirable for Tweakwise Extension Magento 2. Various customers wish to use this feature.

Sensitive logs

Sensitive logs can be encrypted with our PGP public key using a tool like https://sela.io/pgp/.

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: OpenPGP v2.0.8

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
XCUAAGDt8WKn3NJ3wy6a8w==
=j0ue
-----END PGP PUBLIC KEY BLOCK-----

Search and Layered Navigation not working - 401 return from Tweakwise API

Issue Brief

While testing the configured Magento 2 Tweakwise extension, both Layered Navigation and Search break. The cause is in the Tweakwise API returning a 401 forbidden response.

Environment

Magento Version: 2.1.5
Tweakwise Version: @dev latest
Tweakwise Export Version: @dev latest
Environment: (production / development): Byte staging server (php 5.6) and local development (php7).
Third party modules: none.

Steps to reproduce

  1. Install latest Magento 2 community (2.1.5 atm)
  2. Install Tweakwise extensions and configure with API data as supplied by Tweakwise ('MediaCT Magento extensie' client account).
  3. Export feed.
  4. Import feed into Tweakwise.
  5. Enable search and layered navigation.

Actual result

  1. Layered Navigation breaks. Category pages show a report error. Debugging reveals a 401 return.
  2. Search falls back to normal Magento search. Debugging reveals a 401 return.

Expected result

  • Working Search and Layered Navigation, powered by Tweakwise.
  • Layered Navigation fallback to native version, instead of showing an error page.

Additional information

  • A report of MediaCT's testing efforts will be sent to Tweakwise. This report will contain additional data, including the exact settings and credentials used.

Sort option is not working

In the navigation toolbar and we use tweakwise, sort option is still using option from Magento instead of Tweakwise sort option. It's make sort option doesn't work.

Environment

  • PHP Version: 70
  • Magento Version: 2.1.7
  • Tweakwise Version: 1.0.1
  • Tweakwise Export Version: 1.0.2
  • Magento Deploy Mode: production

Steps to reproduce

  1. Go to category page
  2. Check product list order
  3. Change sort option on click sort order option button
  4. Recheck product list order

Actual result

  1. Product list doesn't change
  2. Sort option is different if we compare to option in the "Sorteer templates" of tweakwise

Expected result

  • Product list should changes respect to selected sort option
  • Sort option list should be the same as configured from the "Sorteer templates" of tweakwise

"Ongeldige methode Emico\Tweakwise\Model\Catalog\Layer\Filter:: isCollapsible" Exception

After upgrade to the latest (1.0.8) version of the Tweakwise extension, we get the following error:

1 exception(s):
Exception #0 (Magento\Framework\Exception\LocalizedException): Ongeldige methode Emico\Tweakwise\Model\Catalog\Layer\Filter::isCollapsible

Exception #0 (Magento\Framework\Exception\LocalizedException): Ongeldige methode Emico\Tweakwise\Model\Catalog\Layer\Filter::isCollapsible
#0 /vagrant/vendor/emico/tweakwise/src/view/frontend/templates/product/navigation/view.phtml(38): Magento\Framework\DataObject->__call('isCollapsible', Array)
#1 /vagrant/vendor/magento/framework/View/TemplateEngine/Php.php(59): include('/vagrant/vendor...')
#2 /vagrant/vendor/magento/framework/View/Element/Template.php(270): Magento\Framework\View\TemplateEngine\Php->render(Object(Magento\LayeredNavigation\Block\Navigation), '/vagrant/vendor...', Array)
#3 /vagrant/vendor/magento/framework/View/Element/Template.php(300): Magento\Framework\View\Element\Template->fetchView('/vagrant/vendor...')
#4 /vagrant/vendor/magento/framework/View/Element/AbstractBlock.php(667): Magento\Framework\View\Element\Template->_toHtml()
#5 /vagrant/vendor/magento/framework/View/Layout.php(558): Magento\Framework\View\Element\AbstractBlock->toHtml()
#6 /vagrant/vendor/magento/framework/View/Layout.php(534): Magento\Framework\View\Layout->_renderBlock('catalog.leftnav')
#7 /vagrant/generated/code/Magento/Framework/View/Layout/Interceptor.php(206): Magento\Framework\View\Layout->renderNonCachedElement('catalog.leftnav')
#8 /vagrant/vendor/magento/framework/View/Layout.php(489): Magento\Framework\View\Layout\Interceptor->renderNonCachedElement('catalog.leftnav')
#9 /vagrant/generated/code/Magento/Framework/View/Layout/Interceptor.php(193): Magento\Framework\View\Layout->renderElement('catalog.leftnav', true)
#10 /vagrant/vendor/magento/framework/View/Layout.php(585): Magento\Framework\View\Layout\Interceptor->renderElement('catalog.leftnav')
#11 /vagrant/vendor/magento/framework/View/Layout.php(536): Magento\Framework\View\Layout->_renderContainer('sidebar.main')
#12 /vagrant/generated/code/Magento/Framework/View/Layout/Interceptor.php(206): Magento\Framework\View\Layout->renderNonCachedElement('sidebar.main')
#13 /vagrant/vendor/magento/framework/View/Layout.php(489): Magento\Framework\View\Layout\Interceptor->renderNonCachedElement('sidebar.main')
#14 /vagrant/generated/code/Magento/Framework/View/Layout/Interceptor.php(193): Magento\Framework\View\Layout->renderElement('sidebar.main', true)
#15 /vagrant/vendor/magento/framework/View/Layout.php(585): Magento\Framework\View\Layout\Interceptor->renderElement('sidebar.main')
#16 /vagrant/vendor/magento/framework/View/Layout.php(536): Magento\Framework\View\Layout->_renderContainer('div.sidebar.mai...')
#17 /vagrant/generated/code/Magento/Framework/View/Layout/Interceptor.php(206): Magento\Framework\View\Layout->renderNonCachedElement('div.sidebar.mai...')
#18 /vagrant/vendor/magento/framework/View/Layout.php(489): Magento\Framework\View\Layout\Interceptor->renderNonCachedElement('div.sidebar.mai...')
#19 /vagrant/generated/code/Magento/Framework/View/Layout/Interceptor.php(193): Magento\Framework\View\Layout->renderElement('div.sidebar.mai...', true)
#20 /vagrant/vendor/magento/framework/View/Layout.php(585): Magento\Framework\View\Layout\Interceptor->renderElement('div.sidebar.mai...')
#21 /vagrant/vendor/magento/framework/View/Layout.php(536): Magento\Framework\View\Layout->_renderContainer('columns')
#22 /vagrant/generated/code/Magento/Framework/View/Layout/Interceptor.php(206): Magento\Framework\View\Layout->renderNonCachedElement('columns')
#23 /vagrant/vendor/magento/framework/View/Layout.php(489): Magento\Framework\View\Layout\Interceptor->renderNonCachedElement('columns')
#24 /vagrant/generated/code/Magento/Framework/View/Layout/Interceptor.php(193): Magento\Framework\View\Layout->renderElement('columns', true)
#25 /vagrant/vendor/magento/framework/View/Layout.php(585): Magento\Framework\View\Layout\Interceptor->renderElement('columns')
#26 /vagrant/vendor/magento/framework/View/Layout.php(536): Magento\Framework\View\Layout->_renderContainer('main.content')
#27 /vagrant/generated/code/Magento/Framework/View/Layout/Interceptor.php(206): Magento\Framework\View\Layout->renderNonCachedElement('main.content')
#28 /vagrant/vendor/magento/framework/View/Layout.php(489): Magento\Framework\View\Layout\Interceptor->renderNonCachedElement('main.content')
#29 /vagrant/generated/code/Magento/Framework/View/Layout/Interceptor.php(193): Magento\Framework\View\Layout->renderElement('main.content', true)
#30 /vagrant/vendor/magento/framework/View/Layout.php(585): Magento\Framework\View\Layout\Interceptor->renderElement('main.content')
#31 /vagrant/vendor/magento/framework/View/Layout.php(536): Magento\Framework\View\Layout->_renderContainer('page.wrapper')
#32 /vagrant/generated/code/Magento/Framework/View/Layout/Interceptor.php(206): Magento\Framework\View\Layout->renderNonCachedElement('page.wrapper')
#33 /vagrant/vendor/magento/framework/View/Layout.php(489): Magento\Framework\View\Layout\Interceptor->renderNonCachedElement('page.wrapper')
#34 /vagrant/generated/code/Magento/Framework/View/Layout/Interceptor.php(193): Magento\Framework\View\Layout->renderElement('page.wrapper', true)
#35 /vagrant/vendor/magento/framework/View/Layout.php(585): Magento\Framework\View\Layout\Interceptor->renderElement('page.wrapper')
#36 /vagrant/vendor/magento/framework/View/Layout.php(536): Magento\Framework\View\Layout->_renderContainer('root')
#37 /vagrant/generated/code/Magento/Framework/View/Layout/Interceptor.php(206): Magento\Framework\View\Layout->renderNonCachedElement('root')
#38 /vagrant/vendor/magento/framework/View/Layout.php(489): Magento\Framework\View\Layout\Interceptor->renderNonCachedElement('root')
#39 /vagrant/generated/code/Magento/Framework/View/Layout/Interceptor.php(193): Magento\Framework\View\Layout->renderElement('root', true)
#40 /vagrant/vendor/magento/framework/View/Layout.php(954): Magento\Framework\View\Layout\Interceptor->renderElement('root')
#41 /vagrant/vendor/magento/framework/Interception/Interceptor.php(58): Magento\Framework\View\Layout->getOutput()
#42 /vagrant/vendor/magento/framework/Interception/Interceptor.php(138): Magento\Framework\View\Layout\Interceptor->___callParent('getOutput', Array)
#43 /vagrant/vendor/magento/framework/Interception/Interceptor.php(153): Magento\Framework\View\Layout\Interceptor->Magento\Framework\Interception\{closure}()
#44 /vagrant/generated/code/Magento/Framework/View/Layout/Interceptor.php(494): Magento\Framework\View\Layout\Interceptor->___callPlugins('getOutput', Array, Array)
#45 /vagrant/vendor/magento/framework/View/Result/Page.php(257): Magento\Framework\View\Layout\Interceptor->getOutput()
#46 /vagrant/vendor/magento/framework/View/Result/Layout.php(170): Magento\Framework\View\Result\Page->render(Object(Magento\Framework\App\Response\Http\Interceptor))
#47 /vagrant/vendor/magento/framework/Interception/Interceptor.php(58): Magento\Framework\View\Result\Layout->renderResult(Object(Magento\Framework\App\Response\Http\Interceptor))
#48 /vagrant/vendor/magento/framework/Interception/Interceptor.php(138): Magento\Framework\View\Result\Page\Interceptor->___callParent('renderResult', Array)
#49 /vagrant/vendor/magento/framework/Interception/Interceptor.php(153): Magento\Framework\View\Result\Page\Interceptor->Magento\Framework\Interception\{closure}(Object(Magento\Framework\App\Response\Http\Interceptor))
#50 /vagrant/generated/code/Magento/Framework/View/Result/Page/Interceptor.php(130): Magento\Framework\View\Result\Page\Interceptor->___callPlugins('renderResult', Array, Array)
#51 /vagrant/vendor/magento/framework/App/Http.php(139): Magento\Framework\View\Result\Page\Interceptor->renderResult(Object(Magento\Framework\App\Response\Http\Interceptor))
#52 /vagrant/generated/code/Magento/Framework/App/Http/Interceptor.php(24): Magento\Framework\App\Http->launch()
#53 /vagrant/vendor/magento/framework/App/Bootstrap.php(256): Magento\Framework\App\Http\Interceptor->launch()
#54 /vagrant/index.php(39): Magento\Framework\App\Bootstrap->run(Object(Magento\Framework\App\Http\Interceptor))
#55 {main}

This is cased by setting isCollapsible() method's visibility to private in the latest release of the extension, and this method is called from the template.
The same problem is with the isDefaultCollapsed() method.
getCssClass(), getTooltip() also should be public.

Environment

  • PHP Version: 7.0
  • Magento Version: 2.2.2
  • Tweakwise Version: 1.0.8
  • Tweakwise Export Version: 1.1.1
  • Magento Deploy Mode: production & development

Steps to reproduce

  1. Install latest (1.0.8) version of the Tweakwise extension
  2. Enable Tweakwise "Layered navigation"
  3. Set "Use default magento filter renderer" to "No"
  4. Clear cache
  5. Open frontend anchor category page

Actual result

  1. The above mentioned exception is thrown

category in search results goes to category without search result

When going to the search page with a search result, it shows the search result with filters and the left side. On top are the category filters. When clicking on a category filter you are directly going to that category without the search result.

Environment

  • PHP Version: 70
  • Magento Version: 2.1.7
  • Tweakwise Version: 1.0.1
  • Tweakwise Export Version: 1.0.2
  • Magento Deploy Mode: production

Steps to reproduce

1 go to a search result page with a search term, make sure there are categories available to search in. All categories at the left side for filtering have a direct url to the category page.

Actual result

  1. All categories at the left side for filtering have a direct url to the category page.

Expected result

1, After clicking on a category, the current search result should filter all products based on the category

Populated log file and performance severe

Issue Brief

Currently we have server side LESS compile configured and tweakwise extension enabled. In our log file, it's populated for every request with:
[2017-07-31 10:53:12] report.CRITICAL: Magento\Framework\View\Asset\File\NotFoundException: Unable to get content for 'frontend/.../nl_NL/Emico_Tweakwise/style.min.css' in .../vendor/magento/framework/View/Asset/File.php:165

And also, it makes LESS recompiles and performance down to 20 seconds for every request.

We confirm that this is the tweakwise issue because we have no issue if we comments vendor/emico/tweakwise/src/view/frontend/layout/default.xml so it's become

Environment

  • PHP Version: 7.0)
  • Magento Version: 2.1.7
  • Tweakwise Version: v1.0.1
  • Magento Deploy Mode: production

Steps to reproduce

  1. Install Magento 2.1.7 with tweakwise
  2. Set Stores > Configuration > Advanced > Developer > Frontend Development Workflow > Workflow type to "Server side less compilation"
  3. Go to the category page or PDP or any page
  4. Check if less compiles css
  5. Check log file

Sensitive logs

[2017-07-31 10:53:12] report.CRITICAL: Magento\Framework\View\Asset\File\NotFoundException: Unable to get content for 'frontend/.../nl_NL/Emico_Tweakwise/style.min.css' in .../vendor/magento/framework/View/Asset/File.php:165
Stack trace:

Price filter is not working

When going to the search page with a search result, it shows the search result with filters and the left side. On top are the category filters. When clicking on a category filter you are directly going to that category without the search result.

Environment

  • PHP Version: 70
  • Magento Version: 2.1.7
  • Tweakwise Version: 1.0.1
  • Tweakwise Export Version: 1.0.2
  • Magento Deploy Mode: production

Steps to reproduce

1 go to a search result page with a search term or to a category with layered navigation, make sure there are price filters available on those pages. After changing the price filter the search result/category is not updated and filtered based on the price.

Actual result

  1. After changing the price filter the search result/category is not updated and filtered based on the price.

Expected result

  1. After changing the price filter the search result should be filtered for those prices

Setup:di:compile fails

Issue Brief

When running php bin/magento setup:di:compile or php bin/magento mode:set production the code crashes due to RuntimeException is already in use.

Environment

Magento Version: 2.1.5
Tweakwise Version: dev-master
Tweakwise Export Version: dev-master
Environment: (production)
Third party modules: -

Steps to reproduce

  1. Install Magento 2.1.5
  2. Install Tweakwise via composer
  3. Run php bin/magento setup:di:compile

Actual result

  1. php bin/magento setup:di:compile
    Compilation was started.
    Repositories code generation... 1/7 [====>-----------------------] 14% 1 sec 46.0 MiB
    PHP Fatal error: Cannot use RuntimeException as RuntimeException because the name is already in use in /var/www/techtwo/m2-clients/johnbeerens/johnbeerens.com/build/revision-e420b7557dadb6a8c3a641496d98179e3c53697e/vendor/emico/tweakwise/src/Exception/ApiException.php on line 11

Expected result

  • setup:di:compile runs smoothly without errors

Upsell and Crossell blocks not displayed after product save

Hello,

We have one issue with the latest version of the extension.
As I understood, upsell and crosssell templates can be configured in 3 places:

  • general configuration: M2 -> Admin -> Stores -> Configuration -> CATALOG -> Tweakwise -> Recommendations
  • product configuration: M2 -> Admin -> Products -> Catalog -> Tweakwise
  • category configuration: M2 -> Admin -> Products -> Categories -> Tweakwise

When displaying upsell and crosssell on product view page, if Tweakwise templates aren't configured on the product level, extension tries to load them from the category that the product belongs to.
If category doesn't have associated templates, then the ones configured in the general configuration are used.
In this case, upsell and crosssell blocks are displayed correctly.
But, if someone than saves product in admin, without changing anything related to Tweakwise templates, upsell and crosssell products are not displayed on frontend anymore.

Steps to reproduce

  • Configure upsell and crosssell templates in general configuration, without setting templates on product or category level
  • Upsell and crosssell blocks are displayed on frontend product view page
  • If you than save product in admin, without changing anything related to Tweakwise, "tweakwise_upsell_template" and "tweakwise_crosssell_template" get value "-1" saved in database (this shouldn't happen), as this is the first value in dropdown list. This indicates to the extension that it shouldn't use "template id", but "template code" which in this case should have value set. As that is not the case, it ties to load non-existing template, and crosssell and upsell products aren't displayed on frontend.

Environment

Magneto 2.1.6
Latest version of the extension
PHP 7

Illegal State Exception

Hey guys,

We are having an error on product category pages when installing the Tweakwise module

Environment

  • PHP Version: 7.0
  • Magento Version: 2.2.1 Enterprise
  • Tweakwise Version: v1.0.7
  • Tweakwise Export Version: v1.0.10
  • Magento Deploy Mode: Production
  • Third party modules:

Steps to reproduce

  1. Install Tweakwise on develop
  2. Deploy to production on Magento Cloud

Actual result

  1. The Product pages (category) are returning a 503 error.
{"0":"Illegal state","1":"
#0 \/app\/vendor\/emico\/tweakwise\/src\/Block\/Catalog\/Product\/ProductList\/Featured.php(86): Magento\\CatalogSearch\\Model\\ResourceModel\\Fulltext\\Collection->addFieldToFilter('entity_id', Array)\n
#1 \/app\/vendor\/magento\/module-catalog\/Block\/Product\/ListProduct.php(268): Emico\\Tweakwise\\Block\\Catalog\\Product\\ProductList\\Featured->_getProductCollection()\n
#2 \/app\/vendor\/magento\/module-page-cache\/Model\/Layout\/LayoutPlugin.php(71): Magento\\Catalog\\Block\\Product\\ListProduct->getIdentities()\n
#3 \/app\/vendor\/magento\/framework\/Interception\/Interceptor.php(146): Magento\\PageCache\\Model\\Layout\\LayoutPlugin->afterGetOutput(Object(Magento\\Framework\\View\\Layout\\Interceptor), '\\n<script>\\n    t...')\n
#4 \/app\/vendor\/magento\/framework\/Interception\/Interceptor.php(153): Magento\\Framework\\View\\Layout\\Interceptor->Magento\\Framework\\Interception\\{closure}()\n
#5 \/app\/generated\/code\/Magento\/Framework\/View\/Layout\/Interceptor.php(52): Magento\\Framework\\View\\Layout\\Interceptor->___callPlugins('getOutput', Array, Array)\n
#6 \/app\/vendor\/magento\/framework\/View\/Result\/Page.php(257): Magento\\Framework\\View\\Layout\\Interceptor->getOutput()\n
#7 \/app\/vendor\/magento\/framework\/View\/Result\/Layout.php(170): Magento\\Framework\\View\\Result\\Page->render(Object(Magento\\Framework\\App\\Response\\Http\\Interceptor))\n
#8 \/app\/vendor\/magento\/framework\/Interception\/Interceptor.php(58): Magento\\Framework\\View\\Result\\Layout->renderResult(Object(Magento\\Framework\\App\\Response\\Http\\Interceptor))\n
#9 \/app\/vendor\/magento\/framework\/Interception\/Interceptor.php(138): Magento\\Framework\\View\\Result\\Page\\Interceptor->___callParent('renderResult', Array)\n
#10 \/app\/vendor\/gene\/bluefoot\/Plugin\/RenderPageBuilder.php(66): Magento\\Framework\\View\\Result\\Page\\Interceptor->Magento\\Framework\\Interception\\{closure}(Object(Magento\\Framework\\App\\Response\\Http\\Interceptor))\n
#11 \/app\/vendor\/magento\/framework\/Interception\/Interceptor.php(135): Gene\\BlueFoot\\Plugin\\RenderPageBuilder->aroundRenderResult(Object(Magento\\Framework\\View\\Result\\Page\\Interceptor), Object(Closure), Object(Magento\\Framework\\App\\Response\\Http\\Interceptor))\n
#12 \/app\/vendor\/magento\/framework\/Interception\/Interceptor.php(153): Magento\\Framework\\View\\Result\\Page\\Interceptor->Magento\\Framework\\Interception\\{closure}(Object(Magento\\Framework\\App\\Response\\Http\\Interceptor))\n
#13 \/app\/generated\/code\/Magento\/Framework\/View\/Result\/Page\/Interceptor.php(26): Magento\\Framework\\View\\Result\\Page\\Interceptor->___callPlugins('renderResult', Array, NULL)\n
#14 \/app\/vendor\/magento\/framework\/App\/Http.php(139): Magento\\Framework\\View\\Result\\Page\\Interceptor->renderResult(Object(Magento\\Framework\\App\\Response\\Http\\Interceptor))\n
#15 \/app\/vendor\/magento\/framework\/App\/Bootstrap.php(256): Magento\\Framework\\App\\Http->launch()\n
#16 \/app\/pub\/index.php(37):

Thx in advance

Kind regards

Tristan

Exception when using Category Permissions

When using category permissions for a category and customer is not logged in then the category page is giving an exception.

Environment

  • PHP Version: 7.1
  • Magento Version: 2.2.8
  • Tweakwise Version: 1.4.9
  • Tweakwise Export Version: 1.3.4
  • Magento Deploy Mode: production

Steps to reproduce

  1. Install Magento with Tweakwise configured
  2. Enable category permissions (Stores -> Configuration -> Catalog -> Catalog -> Category Permissions -> Enable)
  3. Go to category and set permissions (Catalog -> Categories -> Choose category -> Category Permissions -> New Permission) Select All Websites (as Website) -> Retailer (as Group). Allow for browsing, display prices and add to bag options.
  4. On frontend go to the edited category. (Use the full url if menu item is not visible)

Actual result

Exception:

{"0":"Navigation context not set, initialize a version of Emico\\Tweakwise\\Model\\Catalog\\Layer\\NavigationContext first.","1":"<pre>#1 Emico\\Tweakwise\\Model\\Observer\\AbstractProductNavigationRequestObserver->hasTweakwiseResponse() called at [vendor\/emico\/tweakwise\/src\/Model\/Observer\/AbstractProductNavigationRequestObserver.php:93]\n#2 Emico\\Tweakwise\\Model\\Observer\\AbstractProductNavigationRequestObserver->execute(&Magento\\Framework\\Event\\Observer#000000004136546200000000266328aa#) called at [vendor\/magento\/framework\/Event\/Invoker\/InvokerDefault.php:72]\n#3 Magento\\Framework\\Event\\Invoker\\InvokerDefault->_callObserverMethod(&Emico\\Tweakwise\\Model\\Observer\\CatalogLastPageRedirect#000000004136547100000000266328aa#, &Magento\\Framework\\Event\\Observer#000000004136546200000000266328aa#) called at [vendor\/magento\/framework\/Event\/Invoker\/InvokerDefault.php:60]\n#4 Magento\\Framework\\Event\\Invoker\\InvokerDefault->dispatch(array('instance' => 'Emico\\Tweakwise\\...', 'name' => 'emico-tweakwise'), &Magento\\Framework\\Event\\Observer#000000004136546200000000266328aa#) called at [vendor\/magento\/module-staging\/Model\/Event\/Manager.php:97]\n#5 Magento\\Staging\\Model\\Event\\Manager->dispatch('controller_actio...', array('controller_actio...' => &Magento\\Catalog\\Controller\\Category\\View\\Interceptor#00000000413653b400000000266328aa#, 'request' => &Magento\\Framework\\App\\Request\\Http#000000004136504100000000266328aa#)) called at [generated\/code\/Magento\/Staging\/Model\/Event\/Manager\/Proxy.php:95]\n#6 Magento\\Staging\\Model\\Event\\Manager\\Proxy->dispatch('controller_actio...', array('controller_actio...' => &Magento\\Catalog\\Controller\\Category\\View\\Interceptor#00000000413653b400000000266328aa#, 'request' => &Magento\\Framework\\App\\Request\\Http#000000004136504100000000266328aa#)) called at [vendor\/magento\/framework\/App\/Action\/Action.php:112]\n#7 Magento\\Framework\\App\\Action\\Action->dispatch(&Magento\\Framework\\App\\Request\\Http#000000004136504100000000266328aa#) called at [vendor\/magento\/framework\/Interception\/Interceptor.php:58]\n#8 Magento\\Catalog\\Controller\\Category\\View\\Interceptor->___callParent('dispatch', array(&Magento\\Framework\\App\\Request\\Http#000000004136504100000000266328aa#)) called at [vendor\/magento\/framework\/Interception\/Interceptor.php:138]\n#9 Magento\\Catalog\\Controller\\Category\\View\\Interceptor->Magento\\Framework\\Interception\\{closure}(&Magento\\Framework\\App\\Request\\Http#000000004136504100000000266328aa#) called at [vendor\/magento\/module-customer-segment\/Model\/App\/Action\/ContextPlugin.php:81]\n#10 Magento\\CustomerSegment\\Model\\App\\Action\\ContextPlugin->aroundDispatch(&Magento\\Catalog\\Controller\\Category\\View\\Interceptor#00000000413653b400000000266328aa#, &Closure#00000000413653b500000000266328aa#, &Magento\\Framework\\App\\Request\\Http#000000004136504100000000266328aa#) called at [vendor\/magento\/framework\/Interception\/Interceptor.php:135]\n#11 Magento\\Catalog\\Controller\\Category\\View\\Interceptor->Magento\\Framework\\Interception\\{closure}(&Magento\\Framework\\App\\Request\\Http#000000004136504100000000266328aa#) called at [vendor\/magento\/framework\/Interception\/Interceptor.php:153]\n#12 Magento\\Catalog\\Controller\\Category\\View\\Interceptor->___callPlugins('dispatch', array(&Magento\\Framework\\App\\Request\\Http#000000004136504100000000266328aa#), NULL) called at [generated\/code\/Magento\/Catalog\/Controller\/Category\/View\/Interceptor.php:39]\n#13 Magento\\Catalog\\Controller\\Category\\View\\Interceptor->dispatch(&Magento\\Framework\\App\\Request\\Http#000000004136504100000000266328aa#) called at [vendor\/magento\/framework\/App\/FrontController.php:55]\n#14 Magento\\Framework\\App\\FrontController->dispatch(&Magento\\Framework\\App\\Request\\Http#000000004136504100000000266328aa#) called at [vendor\/magento\/framework\/Interception\/Interceptor.php:58]\n#15 Magento\\Framework\\App\\FrontController\\Interceptor->___callParent('dispatch', array(&Magento\\Framework\\App\\Request\\Http#000000004136504100000000266328aa#)) called at [vendor\/magento\/framework\/Interception\/Interceptor.php:138]\n#16 Magento\\Framework\\App\\FrontController\\Interceptor->Magento\\Framework\\Interception\\{closure}(&Magento\\Framework\\App\\Request\\Http#000000004136504100000000266328aa#) called at [vendor\/magento\/module-store\/App\/FrontController\/Plugin\/RequestPreprocessor.php:94]\n#17 Magento\\Store\\App\\FrontController\\Plugin\\RequestPreprocessor->aroundDispatch(&Magento\\Framework\\App\\FrontController\\Interceptor#000000004136514800000000266328aa#, &Closure#000000004136514900000000266328aa#, &Magento\\Framework\\App\\Request\\Http#000000004136504100000000266328aa#) called at [vendor\/magento\/framework\/Interception\/Interceptor.php:135]\n#18 Magento\\Framework\\App\\FrontController\\Interceptor->Magento\\Framework\\Interception\\{closure}(&Magento\\Framework\\App\\Request\\Http#000000004136504100000000266328aa#) called at [vendor\/magento\/module-page-cache\/Model\/App\/FrontController\/BuiltinPlugin.php:69]\n#19 Magento\\PageCache\\Model\\App\\FrontController\\BuiltinPlugin->aroundDispatch(&Magento\\Framework\\App\\FrontController\\Interceptor#000000004136514800000000266328aa#, &Closure#000000004136514900000000266328aa#, &Magento\\Framework\\App\\Request\\Http#000000004136504100000000266328aa#) called at [vendor\/magento\/framework\/Interception\/Interceptor.php:135]\n#20 Magento\\Framework\\App\\FrontController\\Interceptor->Magento\\Framework\\Interception\\{closure}(&Magento\\Framework\\App\\Request\\Http#000000004136504100000000266328aa#) called at [vendor\/magento\/framework\/Interception\/Interceptor.php:153]\n#21 Magento\\Framework\\App\\FrontController\\Interceptor->___callPlugins('dispatch', array(&Magento\\Framework\\App\\Request\\Http#000000004136504100000000266328aa#), NULL) called at [generated\/code\/Magento\/Framework\/App\/FrontController\/Interceptor.php:26]\n#22 Magento\\Framework\\App\\FrontController\\Interceptor->dispatch(&Magento\\Framework\\App\\Request\\Http#000000004136504100000000266328aa#) called at [vendor\/magento\/framework\/App\/Http.php:136]\n#23 Magento\\Framework\\App\\Http->launch() called at [generated\/code\/Magento\/Framework\/App\/Http\/Interceptor.php:24]\n#24 Magento\\Framework\\App\\Http\\Interceptor->launch() called at [vendor\/magento\/framework\/App\/Bootstrap.php:257]\n#25 Magento\\Framework\\App\\Bootstrap->run(&Magento\\Framework\\App\\Http\\Interceptor#00000000413650ec00000000266328aa#) called at [index.php:77]\n<\/pre>","url":"\/vip.html","script_name":"\/index.php"}

Expected result

Customer is redirected to the 404 not found page. (default value under Category Permissions config)

Maximum value price slider defined without decimals

Issue Brief

The extension does not include decimals (cents) when selecting products with the maximum price value.

For example: The price slider goes from € 2 to € 56 while there are products that cost € 56.45. If you now use the slider and only set the 'from' value, those products (> €56.00) are not selected.

The price slider may show a maximum value of € 56 but must include this value with decimals.

Steps to reproduce

  1. Use price slider, select minimum value.
  2. For example slider €20 - €56

Actual result

Products with a price between €20,00 - €56,00 are selected.

Expected result

Products with a price between €20,00 - €56,99 must be selected

Sensitive logs

Sensitive logs can be encrypted with our PGP public key using a tool like https://sela.io/pgp/.

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: OpenPGP v2.0.8

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
XCUAAGDt8WKn3NJ3wy6a8w==
=j0ue
-----END PGP PUBLIC KEY BLOCK-----

Wrong outline product title in autocomplete

Issue Brief

The product title in the autocomplete doesn't use the full width

Environment

  • PHP Version: (5.6|7.0|7.1)
  • Magento Version: 2.1.9
  • Tweakwise Version: 1.0.9
  • Tweakwise Export Version: 1.1.2
  • Magento Deploy Mode: production|development

Steps to reproduce

  1. Install Magento from develop branch.
  2. Search and look at the outlining of the product title in the autocomplete.

Actual result

actual_result

Expected result

expected_result

Invalid json in src/composer.json prevents magento's module:enable

While trying to enable a magento 2 module with bin/magento module:enable, an error of Zend_json_decode occurred.

After digging the failing composer.json file is the file mentioned above, containing ../composer.json and indeed, that is invalid json.

Same with tweakwise-export

  • PHP Version: (|7.0|)
  • Magento Version: 2.1.10
  • Tweakwise Version: 0.3.0
  • Tweakwise Export Version: 0.1.0
  • Magento Deploy Mode: (development)
  • Third party modules: N/A

Steps to reproduce

  1. Install Magento from develop branch.
  2. [Example] Export configurable product with multiple children and 2 configurable attributes to Tweakwise.
  3. [Example] Configure color filter in Tweakwise
  4. ...

Actual result

  1. [Example] Error message appears: "Cannot save quote".
  2. [Screenshot, logs]
  3. ...

Expected result

List the expected results as a bullet list of expectations

  • [Example] Configurable product added to the shopping cart.
  • ...

Sensitive logs

Sensitive logs can be encrypted with our PGP public key using a tool like https://sela.io/pgp/.

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: OpenPGP v2.0.8

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
XCUAAGDt8WKn3NJ3wy6a8w==
=j0ue
-----END PGP PUBLIC KEY BLOCK-----

XSS vulnerability (HTML encoding issues)

At this moment the Tweakwise content is not HTML encoded.
The same problem exists with parameter values that are included in the url.

All texts shown on the screen must be HTML-coded. Also the texts that come from Navigator.

Environment

  • Magento Version: Magento 2 Master extensie

Steps to reproduce

-- Scenario 1 (Tweakwise content)--

  1. Check: https://tweakwise2-ee.emico.nl/women/tops-women/jackets-women.html
  2. Check filter template config in Tweakwise:
    image
  3. Compare with the result in de shop:
    image

Actual result: The coded facet template titel is translated into HTML.
Expected result: The specified title must be displayed unchanged as specified in the configuration.

-- Scenario 2 (URL)--

  1. Check: https://tweakwise2-ee.emico.nl/women/tops-women/jackets-women.html?climate%5B0%5D=%22%20onEvent%3DX168798896Y1Z%20

image

Expected result: The specified value must be displayed unchanged as specified in the URL. (URL parameter %22)

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: OpenPGP v2.0.8

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
XCUAAGDt8WKn3NJ3wy6a8w==
=j0ue
-----END PGP PUBLIC KEY BLOCK-----

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.