Feature request from IvanChepurnyi, posted on GitHub Mar 04, 2016
It is a proposal for the future pull request, upon product team and dev team approval
1. Scalability Problem
At the moment, Magento database gets unmanageable, when you have URL rewrites for products and categories combined. The problem is in the way how URL rewrite table is build up. Becuase URL rewrite generator creates an entry in a database table for each combination of product and category. So it makes databases with only 3000 of products and 200 categories grow into 600,000 record table for URL rewrites. That limits most of the Magento merchants to create SEO valuable URL structure when they URL rewrites lookup takes more time that it could.
Solution
Use combination algorithm at runtime instead of generating all possible combination of URL. I already had PoC with one of my existing customers on 1.x; I have plans to port to Magento 2.0 if core team would be interested in such performance improvement contribution.
How does combination algorithm work? Let consider we have the following URL:
path1/path2/path3/path4
Then we can chain multiple processors for URL match. In default implementation there will be 2:
Full match processor
Combined processor
Full match processor
Simply lookups the full URL rewrite, if it does not return match, then the next one is used
Combined processor
Splits the given URL in two parts: path1/path2/path3 and path4 . If there is a URL rewrite for the first part and it has the flag, that it is combinable with another record, the processor then makes a request to find URL rewrite target for path4 . By having specific merge algorithms assigned to it (category + product or even more in feature), it will create a virtual rewrite record that will be used to forward the request to a needed target path
How does it affect Canonical Url for a Product?
This algorithm allows to specify canonical category even at runtime, and you don't need to create a separate index for it.
How does it affect Duplicates of URL?
Because path1/path2/path3 and path4 should be unique in the main table, combining them together does not bring any issue, except if there is path1/path2/path3/path4 rewrite exists.
How does it affect Current Installments?
It will use the same tables that exist atm.
2. Internationalization Problem
Because Magento URL generator removes all the characters from non-latin alphabet, it makes impossible to use all the possibilities of allowed URI specification (RFC3986)
Solution
By lifting the logic behind the algorithm of URL generator we can gain much broad SEO possibilities, including ones with different writing schemes (Cyrillic, Chinese, Arabic, etc.). As you can easily use UTF-8 characters in URL path as soon as you escape with rawurlencode when building the rewritten URL, then on the processing convert it back with rawurldecode. SEO experts will love that as it gives better search results rankings in non-latin alphabets.
This approach does make it even possible to generate URL rewrite lookup in much easier faster manner, as you can simply replace all the defined prohibited characters with "-" (dash). So it allows moving URL generation logic to the pure database level.
How does it affect Current Installments?
There are no changes to already translated URLs, it might re-index it a bit differently, but then redirect rewrite history will make auto-redirect.
3. Large Varchar Index Problem
As request path is a string match, when you have a huge database it makes it much slower to lookup the required record.
Solution
There is a simple solution that can help improve performance dramatically on such datasets. As all of us know CRC32 is an integer checksum of 32 bits (perfect for INT column). MySQL has a built-in function for calculating it and PHP has it as well. It is not widely used as it has much higher collision probability than other checksum algorithms. But it is a perfect solution for fast closest match calculation. It can have 5 billion different checksums calculated based on the input. The probability that a 100,000 record in the database will collide is 1 to 50. So there might be the worst scenario 50 records returned for one record lookup, but you can add a single char field to reduce that to only URLs starting with the same letter. Then on PHP side, you only walk over an array of returned result and check the closest match. This option allows managing millions of URL rewrite entries with reasonable lookup time.
How does it affect Current Installments?
It won't change existing table structure as the new table will be introduced, and existing records will be inserted by a simple SQL query during migration. New records will be handled in the URL indexer itself.
... View more
Feature request from MaximKitsenko, posted on GitHub Sep 01, 2016
Previous versions of magento (1.7.x-1.9.x) provides API Method that returns current magento store version. Why did you removed this API in Magento2? Please add this method to API!
I'm developing Magento wrapper for .net ([https://www.nuget.org/packages/MagentoAccess/]) and i need this API to support a lot of Magento's versions.
... View more
At the moment Adobe Live Search for Magento only supports searching for products. I'd like to suggest it be extended to support searching for CMS page content as well. Our website has lots of content related to our products and it would be great to have that content show up within the search results for customers to find. Our current search provider Algolia can serve up CMS content results along with products in the same search query. In the search pop up, I'd like to see CMS search results in the left column and products shown in the right. In addition, it would be great if Live search could be extended to support indexing of 3rd party extensions for additional searchable content. For example, my company sells books. We created a custom module that databases authors who wrote the books we sell. This database is displayed to customers on the front-end of the site. Each author has page with their biography and a list of active products. Authors are also linked to from the product page. I'd love to be able to create a custom Live Search extension the would allow our authors to be searched on by name. Another example is Blog software. We use a blogging extension provided by a premium Magento partner and having their blog content showing up within site search would be great as well.
... View more
See more ideas labeled with:
Hi - I am suggesting that there should be a report to review the usage of a cart price rule specifically when no coupon code is configured for the rule. This would be very similar to the existing "coupon report" (Report > Sales > Coupons) [ Coupons Report | Adobe Commerce 2.4 User Guide (magento.com)] where you could specify cart price rule(s) but it would not show the data by "coupon code". We have cart price rules that discount the price of an item based on the qty purchased of that item. The promotion is triggered for all customers and no coupon code is required. We would like to be able to report on this cart price to see how often it was used and sales metrics, exactly how the data is displayed in the existing coupon report. Thank you.
... View more
See more ideas labeled with:
When using the bulk product update there should be a warning for how many products are selected - "Are you sure you want to update [X amount/selected] of products?"
... View more
See more ideas labeled with:
I believe the customer group allows about 50 characters. But now only show 10 or 12 characters. Please assist to lengthen the combo box (At least 25 characters, from my point of view)
... View more
See more ideas labeled with:
We are using the magento 2.3.3 version with multiwebsite setup also we are using the MSI concept for inventory management. We came to following scenario where both websites are using same SKUs and handling for backorder is different on each website. Ex: website1 - Allow backorder website 2 - Not allow backorder Since by using MSI concept the inventory can be handled at website level, it would be good to provide an option in core magento that backorder feature also can be handled at website level instead of global level. Appreciate if you can pick this idea and provide a path or implement in future releases. Thank you.
... View more
See more ideas labeled with:
Status:
Investigating
Submitted on
08-30-2016
01:12 PM
Submitted by
apiuser
on
08-30-2016
01:12 PM
Feature request from SRaromicon, posted on GitHub Sep 25, 2014
It would be great to get an extra field for attributes, that holds the unit of an numeric / decimal attribute.
Now you have to save every attribute, which has an unit like mm, oz or V, as an attribute of type varchar.
In very large stores with more than 2000 attributes the varchar table becomes very large and the other tables are not used, because you need the unit of meassurement.
... View more
Command injection vulnerabilities take two forms: - An attacker can change the command that the program executes: the attacker explicitly controls what the command is. - An attacker can change the environment in which the command executes: the attacker implicitly controls what the command means. In this case we are primarily concerned with the second scenario, the possibility that an attacker may be able to change the meaning of the command by changing an environment variable or by putting a malicious executable early in the search path. 1.Applications should avoid incorporating user-controllable data into operating system commands. 2.Use library calls rather than external processes to recreate the desired functionality. 3.Ensure that all external commands called from the program are statically created For more information refer : https://www.owasp.org/index.php/Testing_for_Command_Injection_(OTG-INPVAL-013) ex : $output = shell_exec($cmd); shell_exec() function used in multiple places. Example code path : vendor/laminas/laminas-console/src/Adapter/Virtual.php (Line: 171) protected function switchToUtf8() { shell_exec('mode con cp select=65001'); } and few other vendor files. CWE Code : CWE-77
... View more
See more ideas labeled with:
Status:
Investigating
Submitted on
08-30-2016
01:12 PM
Submitted by
apiuser
on
08-30-2016
01:12 PM
Feature request from seansan, posted on GitHub Dec 01, 2014
Would it be possible to add a config option per payment method that allows us to set and use the payment option for backend only?
http://magentotoolkit.com/code/magento-admin-only-payment-method/
... View more
Status:
Investigating
Submitted on
08-30-2016
01:12 PM
Submitted by
apiuser
on
08-30-2016
01:12 PM
Feature request from kassner, posted on GitHub Feb 06, 2015
Hi,
Can you guys think about merging all customer's name-related fields ( prefix , firstname , middlename , lastname and suffix ) into a single name field? I think this makes magento a more international product.
Motivational literature:
http://www.w3.org/International/questions/qa-personal-names
http://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/
http://blog.jgc.org/2010/06/your-last-name-contains-invalid.html
Thanks!
... View more
Status:
Investigating
Submitted on
08-30-2016
01:11 PM
Submitted by
apiuser
on
08-30-2016
01:11 PM
Feature request from navarr, posted on GitHub Feb 27, 2015
Suggested Labels: feature request, up for grabs
Email highlights allow email providers programmatic knowledge of the contents of email. This is a wonderful user experience, and one that would be beneficial in Magento's default email templates.
These Highlights are currently in a standardization process, however they are already implemented in Gmail as action buttons, Inbox by Gmail (as rich data), and Google Now (as rich data).
The two highlights that Magento would most benefit from are the Order and Parcel Delivery Highlights, linked here:
Order Highlight
Parcel Delivery Highlight
... View more
Status:
Investigating
Submitted on
08-30-2016
01:11 PM
Submitted by
apiuser
on
08-30-2016
01:11 PM
Feature request from CRYX2, posted on GitHub Jul 08, 2015
Hello to all, it think it could be very usefull creating a media library for storing and retreving all uploaded files (for example like the Drupal media module: https://www.drupal.org/project/media).
It's very usefull for the users reusing an uploaded file for a product or for a custom entity (like news or blogs).
... View more
Status:
Investigating
Submitted on
08-30-2016
01:11 PM
Submitted by
apiuser
on
08-30-2016
01:11 PM
Feature request from chasteIT, posted on GitHub Sep 03, 2015
Problem: Customers use layered navigation to filter to their desired product, but if the user selects a configurable products from the category, they must select the same options again to configure the product before getting the associated simple product.
Solution: Use the options selected in the layered navigation filters to pre-select configurable product options.
Example: A category of Shoes (configurable product) has layered navigation filters for Size, Color, etc. In the category, a user selects filter attributes for Size10 and ColorRed to find the products with Red, Size 10 shoes. As Magento is now, the user clicks on their desired shoe to go to the configurable product page and must then select the attributes again to configure their product. We could skip this step by using the Size10 and ColorRed filtered attributes to pre-select those same attributes on the configurable product page.
This improvement could go hand-in-hand with the issue: Set Configurable Product Default Configuration #1783.
... View more
Status:
Investigating
Submitted on
08-30-2016
01:10 PM
Submitted by
apiuser
on
08-30-2016
01:10 PM
Feature request from mage2pro, posted on GitHub Oct 27, 2015
The decision whether a JavaScript component need be shown could be made when the layout is already built, so the component is unable to add its CSS resources by the standard way ( \Magento\Framework\View\Page\Config::addPageAsset() ).
Is any standard possibility to load stylesheet asynchronously? (like require-css do).
... View more
Status:
Investigating
Submitted on
08-30-2016
01:10 PM
Submitted by
apiuser
on
08-30-2016
01:10 PM
Feature request from mage2pro, posted on GitHub Nov 10, 2015
... View more
Status:
Investigating
Submitted on
08-30-2016
01:03 PM
Submitted by
apiuser
on
08-30-2016
01:03 PM
Feature request from tzyganu, posted on GitHub Sep 29, 2014
I don't know if this is on your todo list but I thought It would be good to throw it in here.
The tabs (and maybe all the elements) in the admin dashboard could be generated in a more abstract form.
I mean, the dashboard should be just a list of placeholders that can be filled in by the rest of the modules.
Right now the Magento\Backend\Block\Dashboard\Grids::_prepareLayout contains 4 hardcoded tabs that should be moved in the correct module.
For example Bestsellers and Most Viewed Products could be part of the reports module, New Customers of course in the customer module and so on.
Also a way to add custom tabs could be nice. I know about interceptors, but I'm not exactly sure I can intercept a protected method.
... View more
Status:
Investigating
Submitted on
08-30-2016
01:03 PM
Submitted by
apiuser
on
08-30-2016
01:03 PM
Feature request from gstaniforthsessiondigital, posted on GitHub Oct 10, 2014
Instead of storing cache in a serialised array it would be much faster to store it as a native php file and var_export() the array.
If the file is .php it will get picked up via the opcache and be stored in memory but also precompiled and stored in opcache. This would also remove unserialised logic also.
... View more
Status:
Investigating
Submitted on
08-30-2016
01:03 PM
Submitted by
apiuser
on
08-30-2016
01:03 PM
Feature request from tzyganu, posted on GitHub Oct 14, 2014
Is there any reason why I cannot set a product attribute with type 'Media Image' to be used in product listing?
When I create an attribute from Stores->Attribute->Products and select the Catalog Input Type for Store Owner to be Media Image the Frontend Properties tab disappears completely.
If I create the attribute like that and then change the value for the field used_in_product_listing in the catalog_eav_attribute table for the attribute I just created to 1 it works just fine. I have my attribute loaded in the product listing page.
Sometimes I may need an additional image attribute in the product listing. I cannot do that from the UI and I see no reason for it. A real use case: I want to have a rollover image. When hovering the product image I want to see a different image (with the backside of my product for example).
This problem exists in Magento 1 also. I hope it will be tackled at least in M2.
And while on this...please change the label of the attribute type field. Catalog Input Type for Store Owner sounds scary. Attribute type sounds more friendly.
... View more
Per Google's documentation: "reCAPTCHA v3 introduces a new concept: actions. When you specify an action name in each place you execute reCAPTCHA, you enable the following new features: A detailed break-down of data for your top ten actions in the admin console Adaptive risk analysis based on the context of the action, because abusive behavior can vary. Importantly, when you verify the reCAPTCHA response, you should verify that the action name is the name you expect." From: https://developers.google.com/recaptcha/docs/v3#actions Associating an action name with each reCAPTCHA implementation location will allow us to have a more granular view of where bots are interacting with our forms/actions and react based on what we see in the reporting. Additionally, Google indicates that reCAPTCHA v3 will perform better with actions specified.
... View more