All Projects → crankycyclops → DiscountCodeUrl

crankycyclops / DiscountCodeUrl

Licence: GPL-3.0 license
Magento 2 module that applies a discount code automatically via URL

Programming Languages

PHP
23972 projects - #3 most used programming language

Projects that are alternatives of or similar to DiscountCodeUrl

magento-2-infinite-scroll
Magepow Infinite Scroll extension Free hepls website loading content and products without reloading page
Stars: ✭ 17 (-48.48%)
Mutual labels:  magento, magento2, magento2-extension, magento2-module, magento2-extension-free
LargeConfigProducts
Large Configurable Products workaround for Magento 2
Stars: ✭ 83 (+151.52%)
Mutual labels:  magento, magento2, magento2-extension, magento2-module, magento2-extension-free
Dev-Tools-Magento-2-Module
A collection of utilities meant to improve the experience of developing modules for Magento without breaking existing functionality.
Stars: ✭ 18 (-45.45%)
Mutual labels:  magento, magento2, magento2-extension, magento2-module, magento2-extension-free
module-translation
magefan.com/magento-2-translation-extension
Stars: ✭ 35 (+6.06%)
Mutual labels:  magento, magento2, magento2-extension, magento2-module, magento2-extension-free
module-login-as-customer
Allows admin to login as a customer (enter to customer account).
Stars: ✭ 104 (+215.15%)
Mutual labels:  magento, magento2, magento2-extension, magento2-module, magento2-extension-free
module-dsu
No description or website provided.
Stars: ✭ 18 (-45.45%)
Mutual labels:  magento, magento2, magento2-extension, magento2-module, magento2-extension-free
module-conflict-detector
magefan.com/magento2-conflict-detector
Stars: ✭ 40 (+21.21%)
Mutual labels:  magento, magento2, magento2-extension, magento2-module, magento2-extension-free
module-blog-comments-recaptcha
module-blog-comments-recaptcha
Stars: ✭ 17 (-48.48%)
Mutual labels:  magento, magento2, magento2-extension, magento2-module, magento2-extension-free
module-blog-sample-data
Sample data for Magento 2 blog extension
Stars: ✭ 15 (-54.55%)
Mutual labels:  magento, magento2, magento2-extension, magento2-module, magento2-extension-free
module-blog-m22
Fixes for Blog on Magento 2.2.x
Stars: ✭ 21 (-36.36%)
Mutual labels:  magento, magento2, magento2-extension, magento2-module, magento2-extension-free
magento-2-security
Magento 2 Security extension FREE. Security extension gives store owners the ability to detect the IP addresses that are intentionally attacking their store at any given time. Therefore, they have timely measures to prevent this issue such as blocking those IP addresses or sending warning emails to store owners.
Stars: ✭ 40 (+21.21%)
Mutual labels:  magento, magento2, magento2-extension, magento2-module, magento2-extension-free
magento2-edit-order-email
Magento2 - Edit Order Email from Admin
Stars: ✭ 30 (-9.09%)
Mutual labels:  magento, magento2, magento2-extension, magento2-module, magento2-extension-free
module-geoip
Detect Country by IP in Magento 2
Stars: ✭ 51 (+54.55%)
Mutual labels:  magento, magento2, magento2-extension, magento2-module, magento2-extension-free
module-notifications
Notify the Magento 2 admin user about disabled caches or new customer reviews.
Stars: ✭ 20 (-39.39%)
Mutual labels:  magento, magento2, magento2-extension, magento2-module, magento2-extension-free
module-catalog
Fixes for some known Magento 2 issues in Catalog
Stars: ✭ 23 (-30.3%)
Mutual labels:  magento, magento2, magento2-extension, magento2-module, magento2-extension-free
module-lazyload
magefan.com/magento-2-image-lazy-load-extension
Stars: ✭ 47 (+42.42%)
Mutual labels:  magento, magento2, magento2-extension, magento2-module, magento2-extension-free
magento2-guest-to-customer
Guest to Customer for Magento2 - Quickly and easily convert existing guest checkout customers to registered customers.
Stars: ✭ 66 (+100%)
Mutual labels:  magento, magento2, magento2-extension, magento2-module, magento2-extension-free
module-dsu-client
No description or website provided.
Stars: ✭ 17 (-48.48%)
Mutual labels:  magento, magento2, magento2-extension, magento2-module, magento2-extension-free
module-wysiwyg-advanced
Extend TinyMCE 4 & 5 tools in Magento 2
Stars: ✭ 60 (+81.82%)
Mutual labels:  magento, magento2, magento2-extension, magento2-module, magento2-extension-free
clean-admin-menu
Magento 2 Extension to cleanup admin menu and Store > Configuration area by arranging third party extension items.
Stars: ✭ 101 (+206.06%)
Mutual labels:  magento2, magento2-extension, magento2-module, magento2-extension-free

Discount Code URL Module for Magento 2

This module allows discount codes to be applied to a browser session automatically via a query string. For example, with the default settings, the following will make sure the MYDISCOUNTCODE coupon is applied during checkout:

https://url.to.my.store?discount=MYDISCOUNTCODE

If the URL Path feature is turned on, then discount codes can also be applied via a URL like the following:

https://url.to.my.store/path/to/page/discount/MYDISCOUNTCODE

This URL will apply the discount code MYDISCOUNTCODE to the session and route internally to https://url.to.my.store/path/to/page without any redirection. This feature is experimental and relies on a bit of hackery, so if you turn it on, make sure to test your site thoroughly for incompatibilities.

The query string parameter and URL path can be configured via the URL Parameter admin setting. By default, this has a value of "discount", but if you change it to, say, "coupon", then the following URLs will apply the code to the session instead:

https://url.to.my.store?coupon=MYDISCOUNTCODE

https://url.to.my.store/path/to/page/coupon/MYDISCOUNTCODE (if the URL Path feature is turned on)

You can set the lifetime of the discount code cookie in the admin via the Cookie Lifetime setting. By default this is 0, which means the cookie will survive and the browser will remember the coupon until the window or tab is closed. A value greater than 0 will indicate the number of seconds that the coupon should be remembered (for example, 3600 would mean that the coupon will be remembered for an hour.)

Getting Started

Prerequisites

I've only tested this on Magento 2.3 (I'm developing this primarily for my own needs but am making it open source to share with anyone who might find it useful), but it should work on 2.2 as well, and quite possibly on 2.1. If it doesn't, post an issue, and if I have time I'll take a look--although, since 2.2 is already EOL as of 2.2.10, you should probably be moving to 2.3 anyway...right? O:-)

I use language features that require at least PHP 7.1, but since PHP 7.1 is already EOL, that (ideally) shouldn't be a problem for anyone.

Installing

The module can be installed via composer:

composer require crankycyclops/m2-module-discount-code-url
/path/to/store/bin/magento module:enable Crankycyclops_DiscountCodeUrl
/path/to/store/bin/magento setup:upgrade

It's also a good idea to clear your cache.

Config options can be found in Stores -> Configuration -> Customers -> Promotions -> Discount URL Settings

Contributors

How to Contribute

Want to fix a bug or implement a feature? If so, first and foremost, THANK YOU! It's incredible that there are people out there who find my code useful enough to contribute and I'm deeply grateful for your willingness to make this module better. As a rule, I'm very receptive to issues and PRs. I only ask that you observe the following guidelines:

  1. Always submit pull requests against the develop branch. I only merge code into master when I'm getting ready to release.

  2. Be conservative and avoid making changes to existing code unless you're fixing something that's broken. You might find a more elegant way to implement existing behavior, but doing so has the potential to introduce new bugs, and until the day comes when I no longer have a full-time job to worry about, I won't have time to perform a lot of additional regression testing. I rely on this module for my own production environment and will always value stability over elegance.

  3. Respect the existing code style. I know I don't adhere to the PSR-2 guidelines that are preferred by Magento and many others. This will make people groan, but I have my own K&R-like style that I find more comfortable, and while I've chosen to open source this module to benefit others, I still want to enjoy working with my own code.

  4. Avoid mixing unrelated changes in a single PR. For example, let's say you fixed a bug related to how a discount code is applied to the cart during checkout. Along the way, you realized you could also make the code more efficient by refactoring another unrelated class. The changes above should be split into two separate PRs so that I can examine and merge each one independently.

  5. Test your code before submitting a PR. I'm going to do my own testing before approving and merging your code, but you should still do your best to ensure it works as expected and doesn't introduce new bugs.

  6. Avoid frivolous changes. Frivolous changes include but are not limited to: needlessly altering the whitespace of surrounding code; renaming classes, functions, and variables without a good reason (this has the potential to introduce bugs); and altering the style of existing code just because you have different preferences.

  7. For new functionality, consider creating an issue first with the "feature request" label so we can talk about it. If you want to implement a new feature and skip straight to the PR, that's fine, but I might not want to merge it, which would be sad if you put a lot of work into it.

  8. Be nice. If you're rude, argumentative, or combative, I'm not going to deal with you. Open source is a collaborative experience and should be enjoyable for everyone.

License

This project is licensed under the GPL v3. See LICENSE file for details.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].