fact-finder-web-components / magento2-module Goto Github PK
View Code? Open in Web Editor NEWFACT-Finder® Web Components for Magento 2
Home Page: https://web-components.fact-finder.de/
License: Other
FACT-Finder® Web Components for Magento 2
Home Page: https://web-components.fact-finder.de/
License: Other
The CSS styles included with this extension should be changed be more specific (and may be the generated HTML structure of the FACT Finder Webcomponents need to be changed too).
For example, the magento2-module includes the following CSS:
This will affect all product names across the whole shop - at least with the default Magento themes (blank and luma), not just the suggest element.
Another issue occurs with the .ff-suggest
class. The module includes the following CSS:
The FACT Finder Webcomponents generate the following HTML:
<ff-suggest layout="block" class="x-scope ff-suggest-0">
<div style="position: relative; width: 100%" class="style-scope ff-suggest">
<div id="ffSuggestContainerWrapper" class="style-scope ff-suggest hideffSuggestContainerWrapper">
<div id="ffSuggestContainer" class="style-scope ff-suggest blockLayout">
<section id="searchContainer" class="searchTermContainer">
<!-- … -->
</section>
<section id="productContainer" class="productsContainer">
<!-- … -->
</section>
</div>
</div>
</div>
</ff-suggest>
So in total there are 3 HTML elements that have the CSS class ff-suggest
and they are all nested. Thus the background color and box-shadow is applied to all of these.
Hello,
You are respecting the majority of Magento 2 best practices and the code is clean.
However, the use of private is not deprecated but usually borring for developpers.
While overriding Omikron\Factfinder\Controller\Router, I wanted to change
public const FRONT_NAME = 'FACT-Finder';
The associated function does :
private function isValidRequest(RequestInterface $request): bool { return !$request->getControllerName() && preg_match('#^(/' . self::FRONT_NAME . '/)#', $request->getPathInfo()); }
In my own class inheriting from yours I can't override the constant because it's use self
and not $this
.
Second problem I have to write completely isValidRequest
but since it's private I have also to write completely the function match
and since it used another private variable $actionFactory
... Well I rewrited the entire class just because self
isn't $this
and others private.
I have no other example right now since I'm beginning the modification of the module, but the use of "private" is really borring most of the time, protected
is preferred.
Could you in a future update modify this class at least ?
Thank you
The parameter add-params
should be added to each request (not only search) e.g. SimilarRecords.ff, Recommender.ff, ...
How can I access a value of a multi attribute field from a record list? I have the value indexed with |Key1=Value1|Key2=Value2|Key3=Value3|
and set the field to type "Multi-Attribute" in the Fact-Finder configuration. How can I access it?
I tried record.FieldName.Key1
, but with no success.
Currently, we offer FACT-Finder NG compatibility via an additional module (see https://github.com/FACT-Finder-Web-Components/magento2-ffng-module). In the future we want to offer both NG and 7.x support from the main module, deprecating the old approach with 2 modules.
FACT-Finder-Web-Components Magento2-Module version (see composer.json):
0.1.0 (release v0.9-beta.2)
Magento edition and version:
Magento CE 2.2.4
PHP version:
7.1.13
Expected behavior:
Actual behavior:
Steps to reproduce:
Is it necessary to move the searchbox to the content area? When we do this, we need to reset it in a custom theme in case this functionality is not needed, which honestly feels a bit cumbersome...
Going from 0.9 beta to 1.x some of the default column names have changed. However, there does not seem to be an easy way of changing the exported column names - other than replacing some classes and methods here and there.
Our FACT-Finder channels are set up with specific column names. Changing them would be a lot of work, since we would also have to change rules, campaigns etc.
I tried to rewrite the etc/view.xml file and i have put the size 500 * 500 but its still showing me 200 * 200.
The default header-navigation.phtml
currently produces invalid markup, since it is nesting other HTML elements between <ul>
and <li>
. The only allowed parents for <li>
are <ol>
and <ul>
and the only allowed children for <ul>
are <li>
.
https://www.w3.org/TR/2012/WD-html-markup-20121025/ul.html#ul-content-model
Magento2 do not have "not cacheable" blocks. If you set cacheable to false than all page with this block will be not cacheable.
In case of calling constants we can think about accessing them using public functions:
public function getApiName() {
return self::API_NAME;
}
As recommended by the official documentation we have set the document root of our Magento 2.2.6 installation to the pub/
folder. However, now the product images in the FACT Finder Suggest and Search results will not work.
This is because the export, when executed via Magento's cron, is unaware of the web server's DocumentRoot and thus the product image URLs will still contain the pub/
folder.
Though I am not sure if this is may be a configuration isse on Magento's side. However, I haven't found any configuration that could be done for this case.
The files exported from Magento have a second dot present in the file name. Upon trying to import the file into the FF-BO it fails.
Once the Attribute Export will be update, we are going to have a lot of discrepancies between our documentation and the actual implementation. Also, some things might not be too clear (e.g. configurable attributes, numerical attributes, etc). Our documentation needs to take these changes into account.
We should consider how to deal with docs in the future too. The current approach is quite good, but I'd prefer splitting the single topics over dedicated files.
Currently we have the docs published to GH pages, maybe we can have a dedicated branch for them to be more flexible with releases. Alternatively, we can look again into the project wiki.
We have several customers which also use FACT-Finder as their CMS search.
To do so, we need the data from Magento.
Pleas add a function which allows the customer to export the CMS data, similar to Magento 1.
Magento2 has a new CMS System in the Enterprise Edition, we also have to look into this.
https://www.bluefootcms.com/
NOT IN(NULL)
is applied to the collectionCustom Magento attributes should be exported:
Such a feed structure allows an easy and effective management in FACT-Finder. In order to obtain such a structure, we need to refactor the feed generation and its configuration in the admin panel.
Omikron\Factfinder\Observer\Tracking\Checkout
should be executed whenever checkout_submit_all_after
is dispatchedOmikron\Factfinder\Observer\Tracking\Checkout
is only executed when checkout_submit_all_after
is dispatched via REST APICurrently the Omikron\Factfinder\Observer\Tracking\Checkout
is only registered via etc/webapi_rest/events.xml
. This means checkout tracking is only done, when the order is placed via Magento's REST API, like it is done in the default implementation of Magento's One Page Checkout.
However, if you use a custom checkout method in the front end that does not use the REST API to place the order, checkout tracking will never take place.
To solve this, may be simply register the observer also in etc/frontend/events.xml
?
The bundle products should have the default selections applied for the "default" price calculation.
The Implementation below shows our current approach.
Be aware that since 2.2.7 or 2.2.8 there is a problem with an endless recursion on the getFinalPrice method of the bundle (I'm not 100% sure if it's generally the case or a project specific bug).
It might also have something to do with simple products not being in stock.
Example Implementation of Bundle Price Converter
<?php
declare(strict_types=1);
namespace Brandung\Factfinder\Model\ProductExport\BundleConverter;
use Brandung\Factfinder\Model\FactfinderProduct;
use Brandung\Factfinder\Model\ProductExport\DefaultConverter\FieldDataConverterInterface;
use Magento\Bundle\Model\Product\Type;
use Magento\Catalog\Model\Product;
use Magento\Framework\Serialize\SerializerInterface;
class BundlePriceConverter implements FieldDataConverterInterface
{
/**
* @var SerializerInterface
*/
private $serializer;
public function __construct(SerializerInterface $serializer)
{
$this->serializer = $serializer;
}
/**
* @param Product $product
* @param string[] $targetFieldData
* @return string[]
*/
public function convert(Product $product, array $targetFieldData): array
{
$usedSelections = [];
foreach ($this->getDefaultSelections($product) as $selectionId => $defaultSelection) {
$selectionId = $defaultSelection->getData('selection_id');
$usedSelections[$selectionId] = $selectionId;
$product->addCustomOption('selection_qty_' . $selectionId, $defaultSelection->getData('selection_qty'));
}
$product->addCustomOption('bundle_selection_ids', $this->serializer->serialize($usedSelections));
$targetFieldData[FactfinderProduct::PRICE] = round($product->getFinalPrice(), 2);
return $targetFieldData;
}
/**
* @param Product $product
* @return Product[]
*/
private function getDefaultSelections(Product $product): array
{
/** @var Type $typeInstance */
$typeInstance = $product->getTypeInstance();
$selections = $typeInstance->getSelectionsCollection($typeInstance->getOptionsIds($product), $product);
/** @var Product[] $defaultSelections */
return array_filter($selections->getItems(), function (Product $productSelection) {
return (bool)$productSelection->getData('is_default') === true;
});
}
}
GET https://example.fact-finder.de/FACT-Finder/rest/v1/records/channel?sid=qmm8spg40ssfm037lnscb1ajjrqnn5&recordId=123456&format=json 401 (Unauthorized)
<items>
<apiError>
<error>
You need to have valid user credentials to access this page.
</error>
<stacktrace/>
</apiError>
</items>
Previously in the beta versions of the extension, the Omikron\Factfinder\Model\Export\Product
class provided an exportProducts
function which could simply be called from anywhere, if you want to manually trigger an export of the product feed.
In the current version no such method seems to exist. Instead, the cron and the backend controller have to use duplicated code, where the following happens:
To avoid code duplication, this should be transferred to some form of helper service instead.
The current implementation of Omikron\Factfinder\Helper\Product::cleanValue
removes a lot of characters from the description and short description:
// do not allow special chars in values
$value = preg_replace('/([^A-Za-z0-9 -])+/', '', $value);
However, obviously this is not acceptable for any non-English store, since it also removes Umlauts or other language specific characters.
When entering an address in the address bar of the browser and hitting 'enter', I expect that address to be opened by the browser. When hitting Ctrl+Shift+Del (to delete the browser cache) and then hit 'enter', I expect no reaction from the web application.
Whenever you hit the enter key, a global key listener will either execute a search or a redirect. So when you are already in the shop, but not on the FACT-Finder/result page and you enter a new address in the address bar of the browser - the browser will actually redirect you to the FACT-Finder/result page upon hitting enter, instead of opening the newly entered address.
Similarly, if you clear your browser's cache with Ctrl+Shift+Del and then Enter, FACT-Finder reacts to that as well.
The browser will open the FACT-Finder/result page instead of the newly entered address.
It's very irritating ;)
When I execute bin/magento factfinder:export:products
on the server, the exported CSV-file contains all my products.
The exported file only contains the header-row, but nothing else:
ProductNumber;Master;Name;Description;Short;ProductURL;Price;Brand;Availability;MagentoId;ImageURL;CategoryPath;Attributes;HasVariants
There is also no log in var/log/factfinder.log
even when this is activated in the backend. I also don't see the message Store $storeId: File $path has been generated.
after the export is done. Also there are no files for the other storeViews.
I have actually no idea, it worked in one Magento 2.3.2 installation, it doesn't work in the other. I can't seem to find the problem, everything is configured the same in the FactFinder extension. Products are enabled & assigned to categories.
What needs to be fulfilled so that a product is inside the exported CSV?
Shouldn't the composer.json be moved to the project root? Otherwise this module cannot be installed and updated via composer.
[Report Only] Refused to connect to 'https://ng-demo.fact-finder.de/fact-finder/rest/v3/campaign/<customer>/product?sid=<..>&productNumber=<..>&format=json' because it violates the following Content Security Policy directive: "connect-src geostag.cardinalcommerce.com geo.cardinalcommerce.com 1eafstag.cardinalcommerce.com 1eaf.cardinalcommerce.com centinelapistag.cardinalcommerce.com centinelapi.cardinalcommerce.com 'self' 'unsafe-inline'".
Further info:
Externally loaded resources should be whitelisted.
This is explained here:
https://devdocs.magento.com/guides/v2.3/extension-dev-guide/security/content-security-policies.html
When we enable CSP for production, the current state of the module will stop working. Of course we can add a custom module where we whitelist the sources, but imho the FF module should take care of that.
While the Readme states that the Module is compatible with >= 2.2, it is currently not installable with 2.2
FACT-Finder-Web-Components Magento2-Module version (see composer.json): latest
Magento edition and version: 2.2.9
PHP version: 7.1
Expected behavior:
Module should be installable with 2.2.9
Actual behavior:
Composer Restriction forbids installing with 2.2.9
Steps to reproduce:
Install Magento 2.2.9
Try to install factfinder magento2 integration via composer
minimum version for Magento_Directory is 100.3.0 while Magento 2.2.9 is on 100.2.8
See: https://github.com/magento/magento2/blob/2.2.9/composer.json#L131
Or is there a specific reason why this Directory Version is not supported?
I checked in Omikron\Factfinder\Model\Export\Catalog\ProductType\SimpleDataProvider , the data is in the array returned by the toArray function, but the data is not in the CSV
/FACT-Finder/result
)example.org/vegetables-and-fruits/fruits.html
. Then on that page, enter a search query into the FACT-Finder search box. It will redirect you to example.org/vegetables-and-fruits/FACT-Finder/result
instead of example.org/FACT-Finder/result
Another example: doing a search on a page with an URL like example.org/custom/route/
will redirect you to example.org/custom/route/FACT-Finder/result
.
Currently, custom attributes can be added to the export feed via the Magento backend. They are added to the Attributes filed in the file (which contains all chosen custom attributes separated by |
).
e. g.
" | Attribute1=Value1 | Attribute2=Value2 | Attribute3=Value3 | ... | "
However, if the custom attribute itself contains a multi-attribute value, it can't be imported by FACT Finder.
e. g.
" | Attribute1=Value1 | Attribute2= |Attribute2_1=Value2_1|Attribute2_2=Value2_2| | Attribute3=Value3 | ... | "
Attribute2 will be ignored at the import.
I would suggest exporting all custom attributes in separate columns in the csv.
It is not immediately obvious that there are several variants - Pull (FTP export) and Push (Http export). Especially when scrolling down the page, it is easy to overlook "Http Export".
In addition, the "Cron configuration" should not be listed under "Http Export", since the setting is made directly in FACT-Finder. This should also be explained shortly.
FACT-Finder-Web-Components Magento2-Module version (see composer.json):
1.1
Magento edition and version:
Magento Commerce 2.3.1
PHP version:
7.1
Expected behavior:
The cronjob for feed export is ran
Actual behavior:
The following fatal PHP error occurs
Stack trace:
#0 /src/www/vendor/magento/framework/ObjectManager/ObjectManager.php(70): Magento\Framework\ObjectManager\Factory\Dynamic\Developer->create('Omikron\\Factfin...')
#1 /src/www/vendor/magento/framework/ObjectManager/Factory/AbstractFactory.php(160): Magento\Framework\ObjectManager\ObjectManager->get('Omikron\\Factfin...')
#2 /src/www/vendor/magento/framework/ObjectManager/Factory/AbstractFactory.php(246): Magento\Framework\ObjectManager\Factory\AbstractFactory->resolveArgument(Array, 'Omikron\\Factfin...', NULL, 'channelProvider', 'Omikron\\Factfin...')
#3 /src/www/vendor/magento/framework/ObjectManager/Factory/Dynamic/Developer.php(34): Magento\Framework\ObjectManager\Factory\AbstractFactory->resolveArgumentsInRuntime('Omikron\\Factfin...', Array, Array)
#4 /src/www/vendor/magento/framework/ObjectManager/Factory/Dyna in /src/www/vendor/magento/framework/ObjectManager/Factory/Dynamic/Developer.php on line 50
Fatal error: Uncaught Error: Cannot instantiate interface Omikron\Factfinder\Api\Config\ChannelProviderInterface in /src/www/vendor/magento/framework/ObjectManager/Factory/Dynamic/Developer.php:50
Stack trace:
#0 /src/www/vendor/magento/framework/ObjectManager/ObjectManager.php(70): Magento\Framework\ObjectManager\Factory\Dynamic\Developer->create('Omikron\\Factfin...')
#1 /src/www/vendor/magento/framework/ObjectManager/Factory/AbstractFactory.php(160): Magento\Framework\ObjectManager\ObjectManager->get('Omikron\\Factfin...')
#2 /src/www/vendor/magento/framework/ObjectManager/Factory/AbstractFactory.php(246): Magento\Framework\ObjectManager\Factory\AbstractFactory->resolveArgument(Array, 'Omikron\\Factfin...', NULL, 'channelProvider', 'Omikron\\Factfin...')
#3 /src/www/vendor/magento/framework/ObjectManager/Factory/Dynamic/Developer.php(34): Magento\Framework\ObjectManager\Factory\AbstractFactory->resolveArgumentsInRuntime('Omikron\\Factfin...', Array, Array)
#4 /src/www/vendor/magento/framework/ObjectManager/Factory/Dyna in /src/www/vendor/magento/framework/ObjectManager/Factory/Dynamic/Developer.php on line 50
I think the issue is, that the parameter $channelProvider for Omikron\Factfinder\Cron\Feed has no concrete class defined in any of the di.xml files.
See
The question is why we need this here? I'm pretty sure you can do this with the request interface in magento2.
In #74 we can find information on what needs to be done if the URLs in the FactFinder-Export are broken as they contain the /pub
in the URL. It would be nice to have a short info/reference to that issue in the README so that it's more obvious what a Magento-User has to do if they follow the guidelines of Magento.
Due to #84 (comment) we need to deselect all additional attributes from the FACT-Finder configuration and instead implement the export of the additional attributes on our own as described there.
However, when deselecting all "Additional Attributes" in the FACT-Finder store configuration and saving the configuration, no additional attribute should not be selected anymore.
When deselecing all "Additional Attributes" all the additional attributes that were previously selected, stay select after saving.
Ctrl
on your keyboard)The previously selected additional attributes will stay selected.
I want to display a record list with a slick slider which is already integrated in the project. My code looks as follows:
<ff-record-list class="product-slider" data-pagination-prefix="<?= __('Page') ?>" unresolved>
<ff-record itemprop="itemListElement" itemscope="">
<div class="product-tile" data-bind="scope: 'product-tile'" data-container="product-grid" id="product-item-{{record.Master}}"> ...</div>
</ff-record>
</ff-record-list>
Unfortunately, the slick slider sets the width to 0px which makes the result look odd. I assume that the slick slider is initialized before the product tiles are rendered. I tried a few variants, but with no success.
Is there an approach which allows to trigger a JS event (for initializing Slick Slider) AFTER rendering the product tiles?
The export cron only executes the following code currently:
$filename = "export.{$this->channelProvider->getChannel()}.csv";
$stream = $this->csvFactory->create(['filename' => "factfinder/{$filename}"]);
$this->feedGeneratorFactory->create($this->feedType)->generate($stream);
$this->ftpUploader->upload($filename, $stream);
It exports the CSV, but does not push an import.
Fatal error: Uncaught TypeError: Argument 1 passed to Omikron\Factfinder\Model\Filter\ExtendedTextFilter\Interceptor::filterValue() must be of the type string, bool given, called in /src/vendor/omikron/magento2-factfinder/src/Model/Export/Catalog/ProductType/ConfigurableDataProvider.php on line 89 and defined in /src/generated/code/Omikron/Factfinder/Model/Filter/ExtendedTextFilter/Interceptor.php:19
Stack trace:
#0 /src/vendor/omikron/magento2-factfinder/src/Model/Export/Catalog/ProductType/ConfigurableDataProvider.php(89): Omikron\Factfinder\Model\Filter\ExtendedTextFilter\Interceptor->filterValue(false)
#1 [internal function]: Omikron\Factfinder\Model\Export\Catalog\ProductType\ConfigurableDataProvider->Omikron\Factfinder\Model\Export\Catalog\ProductType\{closure}(Array, Array)
#2 /src/vendor/omikron/magento2-factfinder/src/Model/Export/Catalog/ProductType/ConfigurableDataProvider.php(92): array_reduce(Array, Object(Closure), Array)
#3 /src/vendor/omikron/magento2-factfinder/src/Model/Export/Catalog/ProductType/Configu in /src/generated/code/Omikron/Factfinder/Model/Filter/ExtendedTextFilter/Interceptor.php on line 19
There is a note and a hotfix at that position, for when the label value is null.
It seems that the value can also be a boolean now with Magento 2.3.5+.
-- categories
-- Media Gallery
-- Tier prices
-"ometria/magento2": "^2.0",
-"omikron/magento2-factfinder": "^1.6",
-"omikron/magento2-factfinder-ng": "^1.1",
Expected behaviour
Click on a product from a FACT Finder Category or Search results page, when the product is loaded, click the browser Back button to return to product on the previous page (return to the product and its position on the page).
Actual behaviour
The browser back button is not work as expected. We have ensured that the 'data-redirect' attribute is in place. When we click on a product on the first page of the search results, then click the browser back button, we are not returned to the same location in the search results.
When we go to a second or third in the search results, click on a product some way down in the results, then when the product has loaded, click the browser back button, we are returned to the bottom of the search results page - not the product we clicked on.
Steps to reproduce
Go to any page in your Magento store category or search results page.
Click on a product on the page or search results
Once the product page has loaded, click the Browser Back button.
You are returned to the previous page, but not the product on the page that was clicked.
FACT-Finder-Web-Components Magento2-Module version (see composer.json):
0.1.0 (release v0.9-beta.2)
Magento edition and version:
Magento CE 2.2.4
PHP version:
7.1.13
Expected behavior:
Actual behavior:
Can't connect to FTP!
Steps to reproduce:
Additional information
// $this->ftp->write($destinationPath, $content);
Since Magento 2.4 is now officially released, we need to check our module compatibility with it and ensure there won't be any conflicts during updates.
If the Accept-Language
request header only contains de
, the following error will be generated:
1 exception(s):
Exception #0 (Zend_Currency_Exception): No region found within the locale 'de'
Exception #0 (Zend_Currency_Exception): No region found within the locale 'de'
<pre>#1 Zend_Currency->__construct(NULL, NULL) called at [vendor/magento/framework/Currency.php:27]
#2 Magento\Framework\Currency->__construct(&Magento\Framework\App\Cache\Proxy#0000000024459fac0000000022db8a70#, NULL, NULL) called at [vendor/magento/framework/ObjectManager/Factory/AbstractFactory.php:111]
#3 Magento\Framework\ObjectManager\Factory\AbstractFactory->createObject('Magento\Framewor...', array(&Magento\Framework\App\Cache\Proxy#0000000024459fac0000000022db8a70#, NULL, NULL)) called at [vendor/magento/framework/ObjectManager/Factory/Dynamic/Developer.php:66]
#4 Magento\Framework\ObjectManager\Factory\Dynamic\Developer->create('Magento\Framewor...') called at [vendor/magento/framework/ObjectManager/ObjectManager.php:70]
#5 Magento\Framework\ObjectManager\ObjectManager->get('Magento\Framewor...') called at [vendor/magento/framework/ObjectManager/Factory/AbstractFactory.php:144]
#6 Magento\Framework\ObjectManager\Factory\AbstractFactory->resolveArgument(array('instance' => 'Magento\Framewor...'), 'Magento\Framewor...', NULL, 'currency', 'Omikron\Factfind...') called at [vendor/magento/framework/ObjectManager/Factory/AbstractFactory.php:230]
#7 Magento\Framework\ObjectManager\Factory\AbstractFactory->resolveArgumentsInRuntime('Omikron\Factfind...', array(array('scopeConfig', 'Magento\Framewor...', true, NULL), array('localeResolver', 'Magento\Framewor...', true, NULL), array('currency', 'Magento\Framewor...', true, NULL)), array()) called at [vendor/magento/framework/ObjectManager/Factory/Dynamic/Developer.php:34]
#8 Magento\Framework\ObjectManager\Factory\Dynamic\Developer->_resolveArguments('Omikron\Factfind...', array(array('scopeConfig', 'Magento\Framewor...', true, NULL), array('localeResolver', 'Magento\Framewor...', true, NULL), array('currency', 'Magento\Framewor...', true, NULL)), array()) called at [vendor/magento/framework/ObjectManager/Factory/Dynamic/Developer.php:59]
#9 Magento\Framework\ObjectManager\Factory\Dynamic\Developer->create('Omikron\Factfind...') called at [vendor/magento/framework/ObjectManager/ObjectManager.php:70]
#10 Magento\Framework\ObjectManager\ObjectManager->get('Omikron\Factfind...') called at [vendor/magento/framework/ObjectManager/Factory/AbstractFactory.php:180]
#11 Magento\Framework\ObjectManager\Factory\AbstractFactory->parseArray(array('user' => &InspiredMinds\KastnerFactfinder\Model\SessionData#000000002445964e0000000022db8a70#, 'communication' => &Omikron\Factfinder\Model\Config\CommunicationConfig#000000002445964d0000000022db8a70#, 'behaviour' => &Omikron\Factfinder\Model\Config\Communication\BehaviourConfig#00000000244596420000000022db8a70#, 'personalization' => &Omikron\Factfinder\Model\Config\Communication\PersonalizationConfig#000000002445964c0000000022db8a70#, 'cache' => &Omikron\Factfinder\Model\Config\Communication\CacheConfig#000000002445964b0000000022db8a70#, 'currency' => array('instance' => 'Omikron\Factfind...'))) called at [vendor/magento/framework/ObjectManager/Factory/AbstractFactory.php:156]
#12 Magento\Framework\ObjectManager\Factory\AbstractFactory->resolveArgument(array('user' => &InspiredMinds\KastnerFactfinder\Model\SessionData#000000002445964e0000000022db8a70#, 'communication' => &Omikron\Factfinder\Model\Config\CommunicationConfig#000000002445964d0000000022db8a70#, 'behaviour' => &Omikron\Factfinder\Model\Config\Communication\BehaviourConfig#00000000244596420000000022db8a70#, 'personalization' => &Omikron\Factfinder\Model\Config\Communication\PersonalizationConfig#000000002445964c0000000022db8a70#, 'cache' => &Omikron\Factfinder\Model\Config\Communication\CacheConfig#000000002445964b0000000022db8a70#, 'currency' => array('instance' => 'Omikron\Factfind...')), NULL, array(), 'parametersSource', 'Omikron\Factfind...') called at [vendor/magento/framework/ObjectManager/Factory/AbstractFactory.php:230]
#13 Magento\Framework\ObjectManager\Factory\AbstractFactory->resolveArgumentsInRuntime('Omikron\Factfind...', array(array('parametersSource', NULL, false, array())), array('parametersSource' => array('user' => array('instance' => 'Omikron\Factfind...'), 'communication' => array('instance' => 'Omikron\Factfind...'), 'behaviour' => array('instance' => 'Omikron\Factfind...'), 'personalization' => array('instance' => 'Omikron\Factfind...'), 'cache' => array('instance' => 'Omikron\Factfind...'), 'currency' => array('instance' => 'Omikron\Factfind...')))) called at [vendor/magento/framework/ObjectManager/Factory/Dynamic/Developer.php:34]
#14 Magento\Framework\ObjectManager\Factory\Dynamic\Developer->_resolveArguments('Omikron\Factfind...', array(array('parametersSource', NULL, false, array())), array('parametersSource' => array('user' => array('instance' => 'Omikron\Factfind...'), 'communication' => array('instance' => 'Omikron\Factfind...'), 'behaviour' => array('instance' => 'Omikron\Factfind...'), 'personalization' => array('instance' => 'Omikron\Factfind...'), 'cache' => array('instance' => 'Omikron\Factfind...'), 'currency' => array('instance' => 'Omikron\Factfind...')))) called at [vendor/magento/framework/ObjectManager/Factory/Dynamic/Developer.php:59]
#15 Magento\Framework\ObjectManager\Factory\Dynamic\Developer->create('Omikron\Factfind...') called at [vendor/magento/framework/ObjectManager/ObjectManager.php:70]
#16 Magento\Framework\ObjectManager\ObjectManager->get('Omikron\Factfind...') called at [vendor/magento/framework/ObjectManager/Factory/AbstractFactory.php:144]
#17 Magento\Framework\ObjectManager\Factory\AbstractFactory->resolveArgument(array('instance' => 'Omikron\Factfind...'), 'Omikron\Factfind...', NULL, 'parametersProvid...', 'Omikron\Factfind...') called at [vendor/magento/framework/ObjectManager/Factory/AbstractFactory.php:230]
#18 Magento\Framework\ObjectManager\Factory\AbstractFactory->resolveArgumentsInRuntime('Omikron\Factfind...', array(array('fieldRoles', 'Omikron\Factfind...', true, NULL), array('serializer', 'Magento\Framewor...', true, NULL), array('parametersProvid...', 'Omikron\Factfind...', true, NULL)), array()) called at [vendor/magento/framework/ObjectManager/Factory/Dynamic/Developer.php:34]
#19 Magento\Framework\ObjectManager\Factory\Dynamic\Developer->_resolveArguments('Omikron\Factfind...', array(array('fieldRoles', 'Omikron\Factfind...', true, NULL), array('serializer', 'Magento\Framewor...', true, NULL), array('parametersProvid...', 'Omikron\Factfind...', true, NULL)), array()) called at [vendor/magento/framework/ObjectManager/Factory/Dynamic/Developer.php:59]
#20 Magento\Framework\ObjectManager\Factory\Dynamic\Developer->create('Omikron\Factfind...', array()) called at [vendor/magento/framework/ObjectManager/ObjectManager.php:56]
#21 Magento\Framework\ObjectManager\ObjectManager->create('Omikron\Factfind...') called at [vendor/magento/framework/View/Layout/Argument/Interpreter/DataObject.php:48]
#22 Magento\Framework\View\Layout\Argument\Interpreter\DataObject->evaluate(array('name' => 'view_model', 'value' => 'Omikron\Factfind...')) called at [vendor/magento/framework/Data/Argument/Interpreter/Composite.php:61]
#23 Magento\Framework\Data\Argument\Interpreter\Composite->evaluate(array('name' => 'view_model', 'value' => 'Omikron\Factfind...')) called at [vendor/magento/framework/View/Layout/Argument/Interpreter/Decorator/Updater.php:47]
#24 Magento\Framework\View\Layout\Argument\Interpreter\Decorator\Updater->evaluate(array('name' => 'view_model', 'xsi:type' => 'object', 'value' => 'Omikron\Factfind...')) called at [vendor/magento/framework/View/Layout/Generator/Block.php:318]
#25 Magento\Framework\View\Layout\Generator\Block->evaluateArguments(array('view_model' => array('name' => 'view_model', 'xsi:type' => 'object', 'value' => 'Omikron\Factfind...'))) called at [vendor/magento/framework/View/Layout/Generator/Block.php:228]
#26 Magento\Framework\View\Layout\Generator\Block->generateBlock(&Magento\Framework\View\Layout\ScheduledStructure#00000000244596900000000022db8a70#, &Magento\Framework\View\Layout\Data\Structure#00000000244598090000000022db8a70#, 'factfinder.commu...') called at [vendor/magento/framework/View/Layout/Generator/Block.php:136]
#27 Magento\Framework\View\Layout\Generator\Block->process(&Magento\Framework\View\Layout\Reader\Context#00000000244596920000000022db8a70#, &Magento\Framework\View\Layout\Generator\Context#00000000244596ff0000000022db8a70#) called at [vendor/magento/framework/View/Layout/GeneratorPool.php:80]
#28 Magento\Framework\View\Layout\GeneratorPool->process(&Magento\Framework\View\Layout\Reader\Context#00000000244596920000000022db8a70#, &Magento\Framework\View\Layout\Generator\Context#00000000244596ff0000000022db8a70#) called at [vendor/magento/framework/View/Layout.php:343]
#29 Magento\Framework\View\Layout->generateElements() called at [generated/code/Magento/Framework/View/Layout/Interceptor.php:89]
#30 Magento\Framework\View\Layout\Interceptor->generateElements() called at [vendor/magento/framework/View/Layout/Builder.php:129]
#31 Magento\Framework\View\Layout\Builder->generateLayoutBlocks() called at [vendor/magento/framework/View/Page/Builder.php:55]
#32 Magento\Framework\View\Page\Builder->generateLayoutBlocks() called at [vendor/magento/framework/View/Layout/Builder.php:65]
#33 Magento\Framework\View\Layout\Builder->build() called at [vendor/magento/framework/View/Layout.php:253]
#34 Magento\Framework\View\Layout->build() called at [vendor/magento/framework/View/Layout.php:875]
#35 Magento\Framework\View\Layout->getBlock('page_content_hea...') called at [generated/code/Magento/Framework/View/Layout/Interceptor.php:414]
#36 Magento\Framework\View\Layout\Interceptor->getBlock('page_content_hea...') called at [vendor/magento/module-cms/Helper/Page.php:171]
#37 Magento\Cms\Helper\Page->prepareResultPage(&Magento\Cms\Controller\Index\Index\Interceptor#00000000244599ff0000000022db8a70#, 'home') called at [vendor/magento/module-cms/Controller/Index/Index.php:68]
#38 Magento\Cms\Controller\Index\Index->execute(NULL) called at [generated/code/Magento/Cms/Controller/Index/Index/Interceptor.php:24]
#39 Magento\Cms\Controller\Index\Index\Interceptor->execute() called at [vendor/magento/framework/App/Action/Action.php:107]
#40 Magento\Framework\App\Action\Action->dispatch(&Magento\Framework\App\Request\Http#0000000024459e310000000022db8a70#) called at [vendor/magento/framework/Interception/Interceptor.php:58]
#41 Magento\Cms\Controller\Index\Index\Interceptor->___callParent('dispatch', array(&Magento\Framework\App\Request\Http#0000000024459e310000000022db8a70#)) called at [vendor/magento/framework/Interception/Interceptor.php:138]
#42 Magento\Cms\Controller\Index\Index\Interceptor->Magento\Framework\Interception\{closure}(&Magento\Framework\App\Request\Http#0000000024459e310000000022db8a70#) called at [vendor/magento/framework/Interception/Interceptor.php:153]
#43 Magento\Cms\Controller\Index\Index\Interceptor->___callPlugins('dispatch', array(&Magento\Framework\App\Request\Http#0000000024459e310000000022db8a70#), array(array('designLoader', 'customerNotifica...', 'catalog_app_acti...', 'tax-app-action-d...', 'weee-app-action-...', 'storeCheck', 'contextPlugin', 'customer-app-act...'))) called at [generated/code/Magento/Cms/Controller/Index/Index/Interceptor.php:39]
#44 Magento\Cms\Controller\Index\Index\Interceptor->dispatch(&Magento\Framework\App\Request\Http#0000000024459e310000000022db8a70#) called at [vendor/magento/framework/App/FrontController.php:55]
#45 Magento\Framework\App\FrontController->dispatch(&Magento\Framework\App\Request\Http#0000000024459e310000000022db8a70#) called at [vendor/magento/framework/Interception/Interceptor.php:58]
#46 Magento\Framework\App\FrontController\Interceptor->___callParent('dispatch', array(&Magento\Framework\App\Request\Http#0000000024459e310000000022db8a70#)) called at [vendor/magento/framework/Interception/Interceptor.php:138]
#47 Magento\Framework\App\FrontController\Interceptor->Magento\Framework\Interception\{closure}(&Magento\Framework\App\Request\Http#0000000024459e310000000022db8a70#) called at [vendor/magento/module-store/App/FrontController/Plugin/RequestPreprocessor.php:94]
#48 Magento\Store\App\FrontController\Plugin\RequestPreprocessor->aroundDispatch(&Magento\Framework\App\FrontController\Interceptor#0000000024459e5d0000000022db8a70#, &Closure#0000000024459e470000000022db8a70#, &Magento\Framework\App\Request\Http#0000000024459e310000000022db8a70#) called at [vendor/magento/framework/Interception/Interceptor.php:135]
#49 Magento\Framework\App\FrontController\Interceptor->Magento\Framework\Interception\{closure}(&Magento\Framework\App\Request\Http#0000000024459e310000000022db8a70#) called at [vendor/magento/module-page-cache/Model/App/FrontController/BuiltinPlugin.php:69]
#50 Magento\PageCache\Model\App\FrontController\BuiltinPlugin->aroundDispatch(&Magento\Framework\App\FrontController\Interceptor#0000000024459e5d0000000022db8a70#, &Closure#0000000024459e470000000022db8a70#, &Magento\Framework\App\Request\Http#0000000024459e310000000022db8a70#) called at [vendor/magento/framework/Interception/Interceptor.php:135]
#51 Magento\Framework\App\FrontController\Interceptor->Magento\Framework\Interception\{closure}(&Magento\Framework\App\Request\Http#0000000024459e310000000022db8a70#) called at [vendor/magento/framework/Interception/Interceptor.php:153]
#52 Magento\Framework\App\FrontController\Interceptor->___callPlugins('dispatch', array(&Magento\Framework\App\Request\Http#0000000024459e310000000022db8a70#), array(array('inspiredminds.ka...'))) called at [generated/code/Magento/Framework/App/FrontController/Interceptor.php:26]
#53 Magento\Framework\App\FrontController\Interceptor->dispatch(&Magento\Framework\App\Request\Http#0000000024459e310000000022db8a70#) called at [vendor/magento/framework/App/Http.php:136]
#54 Magento\Framework\App\Http->launch() called at [generated/code/Magento/Framework/App/Http/Interceptor.php:24]
#55 Magento\Framework\App\Http\Interceptor->launch() called at [vendor/magento/framework/App/Bootstrap.php:257]
#56 Magento\Framework\App\Bootstrap->run(&Magento\Framework\App\Http\Interceptor#0000000024459e700000000022db8a70#) called at [pub/index.php:37]
Seems to happen during the generation of the <ff-communication>
block.
The Omikron\Factfinder\Model\Export\Product
class defines a PRODUCT_LIMIT of 50000 which is then used in the buildFeed
method. It is implemented in such a way that at most 50000 products will be exported to FACT Finder. If your store has 60000 products, those last 10000 will be ignored.
What is the limit for? Obviously we would like to export all products to FACT Finder, not just the first 50000.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.