Showing ideas with status New.
Show all ideas
Given that the current invoice, shipment and credit memo PDFs look the same as in Magento 1 and PDF's are always a bit of a nightmare to customize for the merchants: I suggest to replace the PDFs with a html2pdf tool. Actually the preview of the invoice looks already really nice in the backend, so this could just be converted to pdf. This would maybe also help the problem Hirokazu Nishi mentioned in his tweet: "Magento2 still use LinLibertine font. It’s only for Alphabets. To change PDF font, we still have to rewrite some classes..." This idea resulted from a tweet/discussion here: https://twitter.com/hirokazu_nishi/status/770282916819578881 https://twitter.com/rescueAnn/status/770338589326635008 https://twitter.com/benmarks/status/770339381995384832
... View more
See more ideas labeled with:
Hi everyone,
In most of the pages in Magento, we can find the "State/Province" before the "Country" field. Since the "State/Province" depends on the country, that is confusing since the customer has go to next field and select the country, and then go back to the previous field and select the state/province.
This is not correct in the most important page in the storefront, the onepage checkout:
And you can also see the wrong order in some pages of the admin panel:
In other pages, like the shopping cart page, the order is correct:
It would be better if the country can be selected first, then the state/province and finally the ZIP/Postal Code (just like the shopping cart page).
... View more
See more ideas labeled with:
Feature request from acidreian666, posted on GitHub Jul 15, 2016
Steps to reproduce
Install Magento 2.1.zip from magento.com
Add Click Add Simple Product.
Click Advanced Pricing.
Expected result
Display a Textbox for MSRP.
Special Price
Special Price From
Cost
Tier Price
--
Actual result
--
Special Price
Special Price From
Cost
Tier Price
Missing MSRP input Textbox.
changing location of MSRP under Default Attribute set from Advanced Pricing to something else End result nothing still not showing up under any Group within "Add New Product"
Sorry if this is a duplicate I searched but i feel I'm the only person experiencing this.
... View more
Feature request from darrenjennings, posted on GitHub Oct 23, 2016
On latest mangeto version, would love to see TinyMCE upgraded and maintained since Magento is several versions behind latest TinyMCE. https://www.tinymce.com/
Newest version should include integration with image uploading/resizing/editing, magento widget/variable insertion etc.
I've attempted to upgrade the core myself so as to offer a PR, but it broke too many things along the way. :)
... View more
One big issue I find when working with UI Components is that you end up writing deeply nested xml trees. These quickly become hard to read, and are really unmanageable. I'd like to propose two new XML nodes to be introduced: alias and referenceAlias. These would provide a mechanism for reducing the amount of XML I need to write and manage when working with nested components. Consider the following: <?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<body>
<referenceBlock name="checkout.root">
<arguments>
<argument name="jsLayout" xsi:type="array">
<item name="components" xsi:type="array">
<item name="checkout" xsi:type="array">
<item name="children" xsi:type="array">
<item name="steps" xsi:type="array">
<item name="children" xsi:type="array">
<item name="shipping-step" xsi:type="array">
<item name="children" xsi:type="array">
<item name="shippingAddress" xsi:type="array">
<item name="component" xsi:type="string">Ashsmith_Checkout/js/view/shipping</item>
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</argument>
</arguments>
</referenceBlock>
</body>
</page> It's deeply nested, and all to common when all you want to do is replace a component or alter it's configuration in some way. The alias and referenceAlias solution would result in XML that looks like this: <?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<body>
<alias name=checkout_step_shipping_address path=“checkout.root/arguments/jsLayout/components/checkout/children/steps/children/shipping-step/children/shippingAddress” />
<referenceAlias name="checkout_step_shipping_address">
<item name="component" xsi:type="string">Ashsmith_Checkout/js/view/shipping</item>
</referenceAlias>
</body>
</page> Immediately we have less depth, and can still get the job done. Our XML is easier to read and can be quickly understood by anyone jumping in. Furthermore, these aliases could be defined by the Magento core. They would serve as invaluable extension points for developers. Even better this feature request would not introduce any breaking changes. I go over this in a little more detail (and my reasoning behind it) over on my blog: www.ashsmith.io/magento2/suggestions-to-improve-ui-components/
... View more
See more ideas labeled with:
Hi Guys, I would like to request a new improvement for the checkout. Currently users could have trouble finding out about invalid fields which disappear above the screen fold. Scenario: User fills out his address information Scrolls down below to submit the form and go to the next step. Hey! The button is not working. Weird... When the invalid fields are not visible because they are above the fold, the end user is not notified of the problems with his information. In some cases the user may be smart enough to scroll up and see if there are invalid fields, but you may understand that not every user is thinking about doing that. Possible solution Automatically scroll to the first invalid field on the page Notification message below the submit form to inform the user that he has to fill out his invalid forms. I am curious about what you guys think of this user experience issue. Cheers, Clarke
... View more
See more ideas labeled with:
Hi, I am facing a problem with configurable products. If you create a configurable product and create some product variations based on lets say color & size, if you change the price and image for a specific variation and select this variation on the configurable product page, the price and image will change. This is a very good feature altough the expected behaviour for me would be that the description and specifications for this selected variation would be shown, in stead of the specifications of the configurable product itself. Why does it change the price and image, but not the description and product specifications? I attached a screenshot to give you an idea of the issue. I also used to have this problem in Magento 1 and found a module for this which solved the problem. However this module is not supported for Magento 2. https://www.magentocommerce.com/magento-connect/sdocp-simple-details-on-configurable-products-1.html Is there a way this can be done programmatically or fixed in the core? Kind regards, Falco
... View more
Feature request from aleron75, posted on GitHub May 10, 2016
Hi,
this is not something which doesn't work but something that doesn't work as expected, so feel free to take it more as a suggestion than as a bug.
As stated in the title, I expected dates saved in UTC just like in Magento 1 but it doesn't seem to work this way in Magento 2.
What's more, the \Magento\Eav\Model\Entity\Attribute\Backend\Time\Created and \Magento\Eav\Model\Entity\Attribute\Backend\Time\Updated attribute backend models don't seem to have the same logic implemented (even if I don't think that any default attribute use them at date).
You can read some considerations and suggestions here: http://magento.stackexchange.com/questions/114706/magento-2-best-practice-to-get-current-date
Thank you
... View more
The suggestion is to establish a pattern of adding the following code to deprecated functions: // This is just an example. Write whatever -- something to point people in the right direction.
$sMessage = 'save() has been deprecated in favour of using the usage of repositorties, and the deferral of persistence to the persistence layer. See https://h.dev.magento.com/repositories for further details'
@trigger_error($sMessage, E_USER_DEPRECATED); This can be introduced harmlessly to the stack, and does not actually change any error behaviour, or make the deprecated methods more fragile. However the error handler indicated by set_error_handler() will be called; allowing the surfacing of the deprecated methods. This is useful in a couple of ways: Tests can stub the error handler such that it propagates these error messages and fails tests. This clearly indicates that the code is no longer valid. The error handling function can be modified such that in developer mode these errors are surfaced to the user, and either halt execution or are simply logged to the debug log State of "known violations" can be tracked (perhaps simply with a try_catch in tests, with a skip or the like). This means that any new code must either violate the deprecation intentionally (picked up in review) or fail tests (picked up in CI) This pattern has been previously established by Symfony[2][3] and appears to work as expected there. Such work will allow enforcement of deprecation; something that has proved problematic in the past (particularly in code review where it's not apparent that used functions are deprecated) [1] http://uk.php.net/manual/en/language.operators.errorcontrol.php [2] https://twitter.com/andrewhowdencom/status/900675010641133571 [3] https://github.com/symfony/class-loader/blob/b94aa5c3608cd53444fc4c7a2a506d163eb4a8f3/MapClassLoader.php#L14
... View more
See more ideas labeled with:
In magento 1 X.commerce produced the following guide http://info2.magento.com/rs/magentosoftware/images/magento-extension-developers-guide-v1.0.pdf Its approximately 70 pages long. I found this invaluable in learning how Magento 1 worked. Put simply it was a short guide that produced an extension from start to finish teaching many basic principals of Magento 1 such as: Code setup and configuration - code structure Design setup - templates and layouts Frontend development - database schema, models, output (blocks), routes, helpers, sample data Backend development - admin configuration, routes, models, output (including grids), helpers, ACLs I believe where this guide succeeds is that it carries a single example across many topics. More importantly it has the right level of detail in terms of producing something useful yet not too much to becoming obsolete overnight. And it focuses on magento in terms of PHP development unlike some of the books I've read through which cover a far wider range of topics and often include a few chapters on installation and setup for example. I realise that Magento 2 is technologically more advanced and perhaps this is too difficult to achieve. However reading through the developer docs many areas still seem disjointed (and by this i mean a common example which is carried throughout - not simply a collection of snippets of information) and I feel it would be really helpful if an all-in-one guide extension guide was put together not only for me but to help the greater community. To give you a bit of history I'm a competent Magento 1 developer but I'm finding some Magento 2 concepts difficult to follow. I'll be honest I've seen https://u.magento.com/training/schedule/ and I believe your pricing will stall the adoption of Magento 2
... View more
See more ideas labeled with:
When working with B2B, it is not uncommon for the customer to place large quantities in the basket. In addition to this, it has been noted that certain parts of the site, most notably the checkout, tend to slow down in relation to the amount of items that are added to the basket. The more items added, the slower certain areas become. We suggest refining the code in order to facilitate a large basket quantity, upwards of 200 perhaps, without losing to much time waiting for reloads. Specifically, the more items in the cart, the slower the following seems to process: /Webapi/Rest/Magento\Checkout\Api\TotalsInformationManagementInterface/calculate /checkout/sidebar/updateItemQty /checkout/cart/updatePost /checkout/cart/add /checkout/cart/delete /checkout/sidebar/removeItem
... View more
The "Update" button for the billing address field is completely counterintuitive and bad user design. Customers do not expect to need to (and should not have to) hit an "Update" button for their billing address to take on an order. We've taken hundreds of calls from customers who don't understand why their billing address is incorrect on their order. It would be much more intuitive if, when the checkbox for "My billing and shipping address are the same" is unchecked, address validation on the billing address ran when the customer clicked the "Place Order" button. Conversion rates go down for every step you put between a customer and hitting the "Place Order" button. This counterintuitive "Update" button step undoubtedly has a negative effect on conversion rates and should be fixed.
... View more
See more ideas labeled with:
Broadly speaking, there is a few different ways of expressing application state in such a way that it's useful debugging: Logs (implemented in M2 with the excellent psr/log interface) Time series data (also known as metrics). Things like Data Dog, Promethiums, Sensu and so on. Traces; primarily expressed by opentracing.io, but also Zipkin, Lightstep This feature request is to track the implementation of #2; the expression of time series data in the application, as well as the export of this data via whatever mechanism might be setup to receive it. Time series data exposed by an application can provide extremely rapid feedback on an applications performance. This information can be used for a number of useful processes such as: Allowing infrastructure to make decisions around whether to modify the applications runtime environment Debugging the application performance during runtime Alerting when an application violates it's SLO Note: I am doing some work on this with PHP more generally tracked on github. Best place to contrib beyond core support is there. There is currently no simple way to express such time series data in Magento. There are several efforts that have been done to implement this in a third party, vendor specific way including: https://github.com/sitewards/magento-prometheus https://github.com/magento-hackathon/Hackathon_Datadog https://newrelic.com/partner/magento https://github.com/janpapenbrock/magento-statsd However, these suffer form a few drawbacks. In particular, There is no standard API (such as the psr/log api) that can be invoked in third party extensions reliably It locks the users into a hosting infrastructure; undesirable for the continuity of the project. Additionally, there are various metrics that would prove extremely useful when debugging Magento: Cache hit rates (https://github.com/magento/magento2/issues/11151) Cron metrics, such as last execution per job, queue length etc. Indexer status (expressed as 1 or 0) Cache enabled status (expressed as 1 or 0) Cache invalidations issued Orders in various states (processing, shipped etc) Customer logins (aggregate, not per customers) HTTP status codes However, the utilities aren't limited to the above. In particular, third party code often has reason to express it's health (such as the code developed by an agency) to ensure custom logic is functioning correctly, and that a feature is delivering sufficient value to jusify it's cost. General Background It is suggested the implementer have some experience implementing and using application instrumentation. There is a body of knowledge in this area that is immense of it's own right, and not a task that is so simple. Beyond that, the goal of the work should be to checkpoint the data, but defer all processing to the implementing time series databases. It should also have minimal impact on performance. Lastly, high cardinarily data can be expressed through logs or traces, and is perhaps not something that is easily expressed by time series metrics (though honeycomb et. al would beg to differ) Primitives The open source monitoring package Prometheus expresses the primitives: counter gauge histograma summary The author has implemented this in several places, and has found uses for counter and gauge in a repeated way, as well as a limited use for histogram. To begin, the implementation of "guage" and "counter" would be amply sufficient to justify the majority of cases. This is supported by both Prometheus and DataDog, and it's presumed the majority of time series databases. Non Goals It should not be a goal of this work to implement the metrics view in Magento. This can be approached as a separate task, but the primary intent of this work is to express time series data in such a way it can be consumed by third party services. It should not be a goal of this work to track the time associated with the time series data. The sampling is left to the third party application implementations. It should not be a goal of this work to instrument third party applications (redis). They have their own implementations, and should be considered separate services. It's unclear whether instrumenting the PHP runtime itself would be beneficial, though this can likely be handled in the bespoke cases it's required by third party utilisation of the above library. Interface Ideally there should be an interface similar to the psr/log exposed that allows the checkpointing of metrics. Something like: <?php
class Foo
{
private $oMetricRegistry;
/**
* Dependencies automagically wired by DI
*/
public function __construct(
// Singleton injected that stores the metrics. Invariably a global, persists towards the end of the request
\Magento\Framework\Metrics $oMetricRegistry
) {
$this->oMetricRegistry;
// Ensure the metric exists. This operation is an idempotent "create if not exists" type operation.
$this->oMetricRegistry->register(
// metric identifier
'vendor_extension_foo_thing',
// metric type. Can be one of "count" or "gauge"; potentially "histogram".
'count',
// label keys. Labels are mechanisms to slice time series data, supported by both data dog and prometheus
[
'attribute'
]
);
}
public function doThing()
{
// An operation changing the state of the metric. In this case, an increment -- it's a count.
$this->oMetricRegistry->increment(
// The metric identifier
'vendor_extension_foo_thing',
// The label values.
['value']
);
}
} This would allow an extremely simple API to quickly expose the data for ingestion into time series. Storage Ideally, the storage engine should be pluggable, but implement: APCu In Memory (or "null" when considering parity with psr/log) Redis MySQL This would cater the wide range of hosting constraints that Magento can operate with, with a predisposition for not changing exising behaviour (checkpoint to memory but flush at the end of each request) Exposition There are various ways that the data may be exposed. It's suggested the core team deliberately not support any mechanim (except perhaps a native admin panel one, expressed as separate work). Instead, rely on third party / community vendors to provide the required libraries, similar to psr/log. Broader PHP community involvement It is the authors hope that this conversation is extended to the broader PHP community, perhasp through the involvement in FIG. A single interface for time series data would have ramifications for the langauge more generally. Future Work Once implemented, Magento's introspectability could be extended further by implementing traces. Related Reading: http://www.brendangregg.com/usemethod.html https://prometheus.io/docs/introduction/overview/ https://github.com/DataDog/php-datadogstatsd https://github.com/Jimdo/prometheus_client_php
... View more
See more ideas labeled with:
It would be helpful if Magento supported the direct integration of Google Analytcs 4. As is currently possible under Stores-> Sales -> Google Api for GTM and Universal Analytics.
... View more
See more ideas labeled with:
Feature request from paales, posted on GitHub Jul 31, 2016
I just added 19 products to my category. The frontend doesn't show any products. It would be really helpful to give a hint why a product isn't visible on the shop. (After being a Magento developer for years, I still struggle with such a basic thing..)
In an effort to improve the usability of the system and greatly improve the merchant experience, context aware hints are crucial. Explain what is going on and how should the merchant fix their 'mistakes'.
The idea is to add a visibility-helper-icon to product grids so that it is clear why products aren't shown and suggestions how to fix this.
With this, we can collapse the Visibility, Status and maybe Websites column into one 'Visibility Helper' column (or just an icon behind the name of the product). The visibility helper icon will have a popover with additional information why this is happening:
Not visible:
Icon: http://fontawesome.io/icon/eye-slash/
Product isn't visible anywhere //one or more applicable
Product is disabled [Enable Product]
Inventory is set to 0 [Set inventory] //when the setting is enabled
Product is set to Not Visible Individually and isn't part of a composite product [Make visible]
Product is set to Catalog but isn't connected to a visible category
Limited
The product has limited visibility
Product is set to Not Visible Individually but part of a composite product.
Product is set to Search [Set Catalog Search]
OR Product is set to Catalog, Search but isn't attached to a visible category. [Add Category]
Product is set to Visibility: Catalog but isn't connected to a visible category [Assign to Category]
Visible
Conditions:
The above conditions don't match
Tooltip:
Gives a link to the category and product view page.
Questions:
How are we going to handle store view / website specific values without having huge popovers?
Might it be a good idea to include salable information as well?
... View more
We need an alternative to the customer email login which is phone number login. It may not sound useful in Western countries but in China, it's necessary. Chinese people only use this login method with Taobao (taobao.com), Tmall (tmall.com) or JD (jd.com), they are used to it. Without this basic option, Magento 2 will never make it in China.
... View more
See more ideas labeled with:
Feature request from paales, posted on GitHub Jun 21, 2016
Currently using 2.1-rc3.
There is no API available for product option swatches. It makes sense if we are able to use the ProductAttributeOptionManagementInterface to add new swatch texts to products.
Maybe to have better separation of concerns we could have a ProductAttributeOptionSwatchManagementInterface to add swatch information to an existing option.
... View more
It would be great to be able to manually control the order of static assets added via XML, for example if you are loading 5 CSS files you can set the order they load in. At the moment this is out of a developers control, there are workarounds such as a adding an attribute but this still isn't very useful.There are extensions that add the ability to use so this is possible. Some useful links/discussions: - https://github.com/magento/magento2/issues/1821 - https://github.com/magento/magento2/issues/8406 - https://magento.stackexchange.com/questions/94769/what-is-the-proper-way-of-positioning-ordering-css-files-in-magento-2 - https://github.com/quickshiftin/mage2-ordered-assets I have heard this mentioned several times, in this instance a third party module is adding some CSS which is loading before the custom CSS therefore overwriting it.
... View more
See more ideas labeled with:
The current Adobe Live Search implementation doesn't currently support adding translations. The only current way to add translations to the Search Popover "View All" and "Suggestions" labeling is to use CSS (as provided as a temp solution by the Adobe Support team). This is not an accessible friendly approach. The desire would be to replace the text within the label. Being able to translate within the i18n CSV files where most translations are defined would be best.
... View more
See more ideas labeled with:
Feature request from markoshust, posted on GitHub Oct 13, 2015
Grunt has a very slow building process. Gulp should replace Grunt as the recommended method for building static assets.
This would also be a good time to decouple PHP calls from the nodejs build process. Any PHP calls from nodejs should be moved to ./bin/magento so node/js code is kept node/js only, and PHP scripts are only called from PHP. This will help streamline the deployment process.
... View more