We finally added support for our Search in filters feature, which can be easily setup in Tweakwise App > Filtertemplates and now works out of the box in both Magento2Tweakwise plugin as Magento2TweakwiseHyva. This does mean that we offer native support for both Luma as Hyva themes, but in case of a custom theme the frontend implementation has to be implemented by yourself.

Click here to read our initial release note on this Search in filters feature.

Other improvements

  • Magento2Tweakwise 6.0.0 | Fixed an bug with wrong filterurls when Ajax was disabled. This bug prevented from two filters to be selected at the same time.
  • Magento2Tweakwise 6.0.0 | Refactored code. Breaking (see below).
  • Magento2TweakwiseExport 7.0.0 | Fixed a bug where SKUs were used instead of IDs, which slowed down the export if you used characters as SKUs. This resulted in an 84% increase in export speed for affected customers. Results may vary depending on the customer.
  • Magento2TweakwiseExport 7.0.0 | Refactored code. Breaking (see below).
  • Magento2AttributeLandingTweakwise 4.3.2 | Bug fix for incorrect URLs as filter links, pointing to Attribute Landing Pages (ALPs). Due to a bug, the domain name was included twice in the URL when linking to an ALP page. This release fixes that. Furthermore, code is refactored to follow coding standards. This module has no breaking changes.
  • Magento2AttributeLanding 5.0.0 | Refactored code. Breaking (see below).
  • Magento2TweakwiseHyva 2.4.0 | We fixed an issue that gave a notice when Searchbanners where activated in the Hyva theme, but there where no banners to show based on Tweakwise API response. This issue is not related to the introduction of the Search in filters feature (although this was introduced in this version).
  • Magento2TweakwiseHyva 2.4.0 | We fixed a bug where the search field template was always active, even when it shouldn't be.

📘

Coding standards (PHPCS and PHPMD rules

We've made improvements to the code to follow coding standards (PHPCS and PHPMD rules) in order to make our code easier to read and maintain. However, this caused some changes that might break things for some modules. If a module has breaking changes, we've updated its major version number. So, if you want to upgrade to the latest version, you'll need to do it explicitly. You won't upgrade to this version by mistake.

In order to be able to manipulate the HTML-response of the Suggestions JS (part of a Tweakwise Javascript implementation), a data-item-id was added to each of the product item suggestions. The id corresponds with the data-response of our API and can be used to inject or update some custom HTML.

The chart timeline in Tweakwise App will show a full representation of the datetime span, as configured on top of the module. Previously, the chart did show all task statistics but was just rendered at the beginning of the first task untill the ending of the last task. Now we show a full timespan.

The task statistics can be consulted at Tweakwise App > Statistics & Reports > Tasks

In Tweakwise App > Merchandising > Rules the preview page of the rule-type 'weighted formula' was updated with some extra data, in order to make it clear why products are sorted on their particular place.

On the opening of a weighted rule preview tab, initially it won't show the in depth information. For displaying, you need to check the 'Show score' checkmark on the right top of the table. The tabular data will then be expanded with extra information:

  • Extra row with the minimum and maximum values of every attribute, needed for calculation
  • On every product/article the outcome of the calculated value (score) is shown
  • On every product/article the relative percentage of the score is presented (which should add up to 100% on total for every row)
  • The final score of every product/article (which in the marks the order of the weighted rule) is shown in the column 'Order'. By clicking on ... the complete number is shown. The higher this score, the higher the product is shown based on this sorting rule.

Note: Good to know that empty values will be counted as with the attribute minimum value in ranking (shown in the top row). If so, the value is displayed in grey instead of 'empty', so it is clear which values are used for calculation.

For more information on how to setup the weighted rule formulas and the calculation which is used in the background, can be found in this article: https://support.tweakwise.com/en/cat/sorteeropties/36

Other improvements

  • Tweakwise App | We’ve fixed a bug that caused blacklisted suggestions to be applied incorrectly. Specifically patterns which were supposed to match a specific word acted like a wildcard. This caused search phrase suggestions to be blacklisted incorrectly because blacklisting a word like “sun” would also incorrectly blacklist “sunflower”, for example.
  • Tweakwise App | We fixed a product name visualization issue in Tweakwise App. Letters with diacritics were displayed in an encoded form that made it impossible to read them. The display issue has been resolved, and the characters appear correctly.
  • Tasks | A global timeout was added that will cancel a job if it has been running for longer than 12 hours. When a job runs for this long, something is definitely going wrong and we will kill the job execution. Note that this likely won't solve issues with GA4 jobs being stuck, we currently still encounter. That is probably caused by another issue that is not affected by the timeout.
  • Tasks | Feed imports could fail if products were deleted via the backend API while the feed import was running at the same time. This now shouldn't happen anymore.

Magento2Tweakwise v5.8.3 | Implemented prevention of duplicate attribute slug values. Previously, attribute values with variations in their representations, such as Black and Black", resulted in duplicate entries in the tweakwise_attribute_slug table. This duplication could disrupt filter functionality if the incorrect value was retrieved. This issue has been fixed by appending a unique identifier ("-") followed by a number to each slug, ensuring their uniqueness. Note that attributes with previously duplicated slug values will require re-saving to activate this fix.

  • Magento2Tweakwise v5.8.3 | Resolved a notice issue pertaining to missing variables when the shopping cart is empty. Previously, certain sections of the application would trigger notices due to uninitialised variables when the cart was empty. This symptoms occurred mainly in case cross-sell products were enabled on a cart page.
  • Magento2TweakwiseExport v6.0.2 | Implemented enhancements resulting in a significant 20% improvement in export speed for production sites, as observed with a limited dataset. Key improvements include:
    • Previously, the $this->log->debug function was called for every category or product, regardless of whether the site runs in production mode. This led to unnecessary overhead, as the function is slow and does not log actually anything when in production. The fix includes implementing a check for production mode before invoking the function, thereby reducing unnecessary processing.
    • In the getPriceValue function, price fields were fetched for each row, resulting in redundant data retrieval. To mitigate this inefficiency, the fix involves passing the already known price fields to the function, eliminating the need for fetching them repeatedly for each price. This optimization contributes to improved overall performance during data export operations.
  • Magento2TweakwiseExport v6.0.2 | With the removal of Class Zend_Http_Client from Magento 2.4.6, the triggerTweakwiseImport function didn't work any longer. To address this issue, we replaced the Zend client with the LaminasClient, ensuring the continued functionality of the affected feature.
  • Magento2Tweakwise Hyva v2.3.9 | Fixed a bug with category URL's being incorrect. If the category view is set to tree (in Tweakwise App), the category URLs in the Hyva theme were incorrect. When navigating through categories, the URLs contain the current category URL for other categories. When selecting the "Women" category, the URL for the "Men" category appears as https://shop.url/women/men, instead of https://shop.url/men.
  • Magento2AttributeLanding v4.1.4 | Fixed the inconsistency to ensure that categoryId is always treated as an integer.
  • MagentoTweakwise 5.8.2 | Resolved an issue where the incorrect parent category was utilized while navigating a category tree that is three levels deep.
  • MagentoTweakwise 5.8.2 | Resolved an issue where the filter parameter remained in the URL after deactivating the filter.
  • MagentoTweakwise 5.8.2 | Resolved an issue where in case of the URL pathslug strategy enabled, selecting a filter on a category page would lead to an incorrect URL upon refreshing the page and selecting another filter.
  • MagentoTweakwise 5.8.2 | Bugfix implemented to address the duplication of category names in the default Magento renderer.
  • MagentoTweakwise 5.8.2 | Implemented query length limitation for search to prevent a 500 error. We also have implemented measures to prevent 500 errors in the search when Tweakwise is inaccessible or down.
  • MagentoTweakwise 5.8.2 | Implemented a preventive measure to avoid errors when no attribute values are present for ALP facet requests.
  • MagentoTweakwise 5.8.2 | Resolved the issue with Merchandising Builder and pagination not functioning correctly when utilizing the filter form.
  • MagentoTweakwiseExport 6.0.1 | Resolved an issue where not all stores were exported when no feed was available and needed to be generated.
  • MagentoTweakwiseExport 6.0.1 | Resolved an issue where in case of the URL pathslug strategy enabled, selecting a filter on a category page would lead to an incorrect URL upon refreshing the page and selecting another filter.
  • MagentoTweakwiseHyva 2.3.8 | In Hyva themes, featured products where not working on the category page as the products shown were not fetched from Tweakwise. The product slider didn't have code to show featured or new products at all.
  • MagentoAttributeLanding 4.1.3 | Updated code comments to prevent an error in the Magento Swagger API.
  • MagentoAttributeLanding 4.1.3 | Resolved an issue with ALP URL when utilizing the store code in the URL and having 'allow link in facet search' enabled on an ALP.
  • MagentoAttributeLanding 4.1.3 | Resolved an issue with missing ALP resources in the ACL.

Really minor but important for understanding, we have added the Redirects-algorithm on top of the 'Search algorithm' in Tweakwise App > Search > Search algorithms, as every search request always starts with checking on available redirects. We've decided to show it prominently on top, as there was some confusion and misunderstanding on how this settings could affect your search behavior. Redirects is a locked algorithm and therefore can not be switched to another position.

Next to that, we made the overall page of the Search algorithms simpler. We have added buttons to each algorithm linking them to their respective support articles, and we moved the 'Add algorithm' button to below the table to comply with new algorithms being added to the bottom of your funnel too.

Other improvements

  • Tweakwise App | In a hypothetical situation where your Tweakwise instance is still being created while accessing Tweakwise App, we now do show a neat error message that the instance is not ready for use yet (instead of throwing an unknown server 500 error).
  • Frontend API | There is a field showselectedfirst that was already available in the XML-response of our navigation endpoint, but was missing from the JSON version of that same response. This field can be used as an indicator which determines whether selected filters should be shown on top of a facet.
  • Tweakwise App | Tweakwise App now is completely available in German language. You can access Tweakwise in German by using the language switch button by clicking on your avatar in the top right of the screen first.
  • Tweakwise App | We've rebranded the Tweakwise Account login pages as we did with the Tweakwise Instance Select screen. We changed the display font throughout the app to have it more in line with our marketing.
  • Tweakwise App | We also simplified the Merchandising templates detail and creation page. The labels with rules and templates are now separated and at the bottom of the page instead of showed on top.
  • Tweakwise App | We fixed in-app tooltips that were annoyingly disappearing when you hovered on them. Also fixed a bug on redirecting when initializing a new JS Instance from within Tweakwise App.
  • Backend API | We've added status to the BackendApi get instance call. If an instance is not yet ready for use, it will have the status New. Other possible states are Active and Inactive.
  • Suggestions JS | A bug was fixed in our Suggestions JS solution, where when looking for redirects for a specific search term, the current category was not taken into consideration. This is now fixed.

The Category Match search algorithm is real powerful algorithm that checks whether your entire search query exactly matches the name of a single category. If so, your query will only search through categories and products that are within or directly underneath the current category.

We have now implemented the possibility to exclude categories from the Category Match algorithm's behavior. That is, if there is a match during the category search and the found category is in the exclusion list, then the matching result will be ignored and the search algorithm will continue with the next step.

Example: In case you sell LEGO-products and there is a found Category Match on the category Junior > Cars (based on search term 'cars'). It will then only show products from that specific category, although there might be other cars available in the rest of the assortment as well. These products will not be shown, unless you configure the category Junior> Cars to be excluded from the Category Match algorithm.

Read this support article for a complete understanding of the Category Match algorithm.

Other improvements

  • Tweakwise App | In Search algorithms we fixed the behavior of 'Use Merchandising Template of the matching category' option. If the checkbox is enabled, then the filter template, merchandising rule and merchandising builder configured for this category will be applied to the found category.
  • Tweakwise App | In Catalog > Properties (of any kind) there is now a possibility to download an export of all values available for that specific property. It is available under the 'Download' button at the bottom of the detail screen.
  • Tweakwise App | Pagination is added to the detail pages of Derived attributes of the type 'replace' as we did experience some performance issues on the override page of a derived attribute if the attribute contains too many overrides. Now opening the page and saving changes is much faster, as is the the transition between pages.
  • Tweakwise App | We have introduced a new feature that allows users to download the full error message of a failed job, which can be helpful when dealing with feeds containing many incorrectly configured products and/or categories. The full error message can be downloaded by clicking on the link provided below the truncated error message. Good to note that the same file is re-used on every new run of the same job.
  • Frontend API | An optimization for searching with strange words was done under the hood. We encountered some issues with requests timing out because the search query became too complex. Meaning a search term with mix of a lot of normal words consisting of only alphanumeric characters and so called strange words consisting of special characters and/or numeric characters. Execution times were unpredictable and could differ per server. Now searches with a lot of strange words are more predictable and stable in terms of execution time.

We have added new events that are being fired at different points of using the JS Implementation and JS Suggestions. These can be used to hook into for implementing custom functionality and business logic.

JS Implementation

  • The twn.product.visible event is fired when a product tile is visible on the screen (technically it goes for the middle pixel on the entire tile, so you must scroll at least 50% for this event to be fired).
  • The twn.product.click event is fired when a link is clicked on the product tile (right click or middle click; any anchor tag including the one on the product image).

These events are useful for additional tracking the impressions of for example products fetched from an external source.

Suggestions JS

  • twn.request.started - Request to fetch suggestions has started
  • twn.request.products.started - Request to fetch product suggestions has started
  • twn.request.success - Request to fetch suggestions has succeeded
  • twn.request.products.success - Request to fetch product suggestions has succeeded
  • twn.request.failed - Request to fetch suggestions has failed
  • twn.request.products.failed - Request to fetch product suggestions has failed
  • twn.request.completed - Request to fetch suggestion has been completed
  • twn.request.products.completed - Request to fetch product suggestions has been completed

Series of events following the lifecycle of requests to fetch the suggestion data.

Read our complete Tweakwise JS documentation for more information on how to implement this.

Redirects can be triggered when a user enters a specific search term on your website. With Tweakwise’s autocomplete feature, your users get suggestions for search phrases while they’re typing. Sometimes there is a suggested search phrase that would result in a redirect. However, previously you would first have to do a navigation search or products request to know if there was a redirect for the chosen search phrase.

With the addition of adding redirects directly in the response for search phrase suggestions, we’ve removed the need for a separate call. This means your users can get redirected immediately instead of having to wait for an extra request, speeding up the user experience.

<!--This is an example of a XML response for a suggestions call-->
<suggestionGroups xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
  <group>
    <name>Suggestions</name>
    <type>SearchPhrase</type>
    <suggestions>
      <suggestion>
        <match>Apple</match>
        <navigationLink>
          <path><![CDATA[/navigation-search/e4894213?tn_q=Apple]]></path>
          <context>
            <searchterm>Apple</searchterm>
          </context>
        </navigationLink>
        <redirects> <!--The new redirects node-->
          <redirect>
            <url>https://tweakwise.com</url>
          </redirect>
        </redirects>
      </suggestion>
    </suggestions>
  </group>
</suggestionGroups>
// This is an example of a JSON response for a suggestions call
[
    {
        "name": "Suggestions",
        "type": "SearchPhrase",
        "suggestions": [
            {
                "match": "Apple",
                "navigationLink": {
                    "path": "/navigation-search/tweakwise?tn_q=Apple",
                    "context": {
                        "searchterm": "Apple"
                    }
                },
                "redirects": [ // The new redirects object
                    {
                        "url": "https://tweakwise.com"
                    }
                ]
            }
        ]
    }
]

The following endpoints have been affected by the change: