kongondo Posted May 29, 2017 Share Posted May 29, 2017 Variations Released 29 May 2017 Variations is a simple yet powerful commercial ProcessWire module that allows website editors to create attributes and their values and from those generate variations of any entity, most notably products. The module consists of FieldtypeVariations and InputfieldVariations as well as a ProcessVariations for managing variations configurations and attributes. Setting up the field is quite easy. First, create a field of type Variations. Define some custom inputs that will need to be directly edited on the page containing the field, for instance a product price, SKU, etc. Secondly, via the Inputfield, create a couple of attributes. Thirdly, create a variations configuration and add the attributes and values you want in the configuration. Link that variations configuration to your page and the module will automatically generate all possible combinations (variations) of the attribute values in that configuration. These, together with the custom inputs you created when setting up the field will be displayed on the page (e.g. a product page), ready for editing. This makes this module quite unique; variations are defined at the page-level rather than at the field level. This presents lots of possibilities such as infinitely reusable attributes and variations configurations. For those using Padloper, integration with the e-commerce platform is quite simple as demonstrated in this tutorial. The module consists of 4 modules ProcessVariations FieldtypeVariations InputfieldVariations VariationsCustomTableManager (autoload module, working behind the scenes) Video Demo: https://youtu.be/T93nn96UL8o Documentation: https://variations.kongondo.com/ Shop: https://processwireshop.pw/plugins/variations/ Requires: ProcessWire 2.5 or newer Features Easily create variations of anything, including products for e-commerce websites, etc Create an attribute once, use it everywhere, multiple times, picking and choosing all or only the attribute values you want Bulk editing of variations configurations and attributes Reusable variations configurations Works with Padloper out-of-the-box with minimal coding User-friendly, intuitive and easy to set up 13 Link to comment Share on other sites More sharing options...
Jan Fromm Posted June 14, 2017 Share Posted June 14, 2017 This sounds very interesting. Is it possible to use Variations for downloadable products? Link to comment Share on other sites More sharing options...
Jan Fromm Posted June 15, 2017 Share Posted June 15, 2017 I’m bulding a small webshop with Padloper where i will have around 500 products, each with a lot of variations. These are digital products for download. Setting up the variations with PageTable is quite a mess. That’s why i’m considering using Variations for that. @kongondo in this post you mentioned: Quote Please note that, in respect of these subfields, there are no plans to include anything as near exhaustive as what Table does. Meaning, these will likely be limited to TEXT, INT, FLOAT, etc fields, but not complicated Fieldtypes such as Page fields, Repeaters, etc. Does that mean that the download field can not be included? Thanks, Jan Link to comment Share on other sites More sharing options...
a-ok Posted June 23, 2017 Share Posted June 23, 2017 On 2017-6-15 at 7:46 PM, Jan Fromm said: I’m bulding a small webshop with Padloper where i will have around 500 products, each with a lot of variations. These are digital products for download. Setting up the variations with PageTable is quite a mess. That’s why i’m considering using Variations for that. @kongondo in this post you mentioned: Does that mean that the download field can not be included? Thanks, Jan Any word on this @kongondo Link to comment Share on other sites More sharing options...
kongondo Posted June 24, 2017 Author Share Posted June 24, 2017 On 2017-6-15 at 7:46 PM, Jan Fromm said: Does that mean that the download field can not be included? Hi @Jan Fromm and @oma, Sorry I have been away. I'll have to look into Padloper and get back to you. Thanks Link to comment Share on other sites More sharing options...
kongondo Posted August 16, 2017 Author Share Posted August 16, 2017 On 15/06/2017 at 7:46 PM, Jan Fromm said: Does that mean that the download field can not be included? Sorry did not get back to you earlier Jan. It seems as well that I misunderstood your question. Please clarify. Are you looking to have a dropdown select or asmSelect or similar for each variation from which you can select and specify a download or downloads for that variation? How are you defining your digital downloads? Is each download a ProcessWire page or are they physical files stored on the server? Link to comment Share on other sites More sharing options...
kongondo Posted August 23, 2017 Author Share Posted August 23, 2017 Renewals and Resend Links Hi, Renewal and resend links pages for Variations have been added. Use renewals if you wish to renew a Variations order whose subscription has expired (1 year). Resend are for orders that are yet to expire. Use this if you can't find or didn't get the confirmation email sent after your purchase. 1 Link to comment Share on other sites More sharing options...
kongondo Posted November 21, 2017 Author Share Posted November 21, 2017 Hi all. I am intending to ONLY support ProcessWire 3.x starting from the next version of this module. Please have a read here and let me know what you think. Thanks. Link to comment Share on other sites More sharing options...
elabx Posted July 31, 2019 Share Posted July 31, 2019 Hi! Is this module working with recent versions of ProcessWire? Is it compatible with UIKit theme? Link to comment Share on other sites More sharing options...
kongondo Posted August 3, 2019 Author Share Posted August 3, 2019 On 7/31/2019 at 4:25 PM, elabx said: Is it compatible with UIKit theme? Not yet, I am afraid. Link to comment Share on other sites More sharing options...
eydun Posted August 8, 2019 Share Posted August 8, 2019 Quote On 7/31/2019 at 4:25 PM, elabx said: Is it compatible with UIKit theme? Not yet, I am afraid. I just bought this module. Any chance to make it compatible with UIKit? 1 Link to comment Share on other sites More sharing options...
kongondo Posted September 3, 2019 Author Share Posted September 3, 2019 On 7/31/2019 at 4:25 PM, elabx said: Hi! Is this module working with recent versions of ProcessWire? Is it compatible with UIKit theme? On 8/8/2019 at 11:33 AM, eydun said: I just bought this module. Any chance to make it compatible with UIKit? Hi all. Just a quick update. I have been working on updating the module to make it ProcessWire 3.x compatible + add some improvements. Most of the work is done. I hope to release by next week. Thanks. 1 Link to comment Share on other sites More sharing options...
kongondo Posted September 16, 2019 Author Share Posted September 16, 2019 Variations 002 (released 16/09/2019) Happy to announce the latest release of Variations. Changelog ProcessWire 3.x support only. New GUI to match AdminThemeUiKit Save and exit or save and add more variations configuration or attributes (in modal) More granular control of custom column types and definitions: DECIMAL, FLOAT, DOUBLE, TINYINT, INT, VARCHAR, TEXT, DATETIME, TIMESTAMP, BOOLEAN, etc Decimal type better suited for price data compared to Float/Double Boolean type, useful for Yes/No type data, e.g. for sell out of stock? yes/no Datetime/Timestamp fields if required. Column definitions: null, precision, scale, length, default value, etc. Required fields: if column is not nullable and no default provided, it becomes a required field. E.g. can set price not to be null. Default fields: For uses such as prefixing SKU- Apologies that this has taken a while to update. Upgrading If upgrading from version 001, ProcessWire's Filecompiler will fight you. You might get errors such as Class ProcessVariations not found in file..... If you get such errors, first, try to clear your cache and compiled files several times. As a last resort, if clearing cache doesn't work (and I don't like this workaround), temporarily change the code in the offending file, e.g. in VariationsRender.php, where it says class VariationsRender extends ProcessVariations, change that to class VariationsRender extends WireData. Refresh the modules page until the errors disappear, then revert back to the original text (class VariationsRender extends ProcessVariations). I hate to ask you to do this but I've had it with the Filecompiler. Documentation Documentation can be found here. However, it still needs updating to reflect latest changes outlined above. For now, please note that we've added an extra setting for setting the default date and time formats for datetime/timestamp custom columns/subfields. This is available in the Input Tab of the field. Screenshots Thanks! 2 Link to comment Share on other sites More sharing options...
alexm Posted November 20, 2021 Share Posted November 20, 2021 Hey @kongondo just purchased this as I need to produce a kind of catalogue website for clothes and this seems to make life easier than adding lots of product-variation pages. A couple of questions though. Due to the fact that nearly every product has different combinations of sizes or colours, does that mean I have to create a new variation configuration for each item? Also I'm using ProFields: Table on order pages where the user can pick a product. Would there be any way of pulling in the product sizes into a field on the PageTable/have you ever tried anything similar. As there is (obviously) not a field type for Variations with ProFields Table, I guess perhaps a hook could work? Many Thanks Link to comment Share on other sites More sharing options...
alexm Posted November 20, 2021 Share Posted November 20, 2021 @kongondo I've got a work around, or solution the way I see it. Add a column called available and then just have all colours and sizes added and then just set "available" to false on the ones that aren't applicable. Would there be any performance impact with this. I can't seem to think of a better way other than having a lot of variation configurations. Link to comment Share on other sites More sharing options...
kongondo Posted November 21, 2021 Author Share Posted November 21, 2021 (edited) 21 hours ago, alexm said: Hey @kongondo just purchased this as I need to produce a kind of catalogue website for clothes Hi @alexm. Many thanks for the purchase. 21 hours ago, alexm said: Due to the fact that nearly every product has different combinations of sizes or colours, does that mean I have to create a new variation configuration for each item? No, you don't. You can (as you have found out) use the same Variation configuration multiple times. For example, a 'Catalogue' variation configurations made up of colours (black, red, green) x sizes (small, large, tall). However, currently, Variations does not allow you to remove / hide unavailable combinations (e.g. small / red). 16 hours ago, alexm said: Add a column called available and then just have all colours and sizes added and then just set "available" to false on the ones that aren't applicable. That is the way to do it. I'll have a think about how this can be improved. For instance, for some products, the seller would know that some combinations would never exists for that product, e.g. green x large is (silly example, maybe) never available for this product. In such a case, they may want to delete the combination altogether. On the other hand, it is better in many cases to readily see what is and what is not available. In some cases, unavailable might become available in the future. Hence, making it available is easier if the combination is still visible in the UI. Incidentally, in Padloper 2, variations are inbuilt and allow you much more control. You are not tied to one configuration and can either delete or disable a variant. 16 hours ago, alexm said: Would there be any performance impact with this. There shouldn't be. How many colours / sizes combinations are you generating? 21 hours ago, alexm said: Also I'm using ProFields: Table on order pages where the user can pick a product. Would there be any way of pulling in the product sizes into a field on the PageTable/have you ever tried anything similar. As there is (obviously) not a field type for Variations with ProFields Table, I guess perhaps a hook could work? I haven't tested with Table. Are you talking about Table or PageTable, by the way, given that they are different modules? I am not sure I follow the question as well. Please clarify the field on the PageTable. Docs, just in case you didn't see them. Thanks. Edited November 21, 2021 by kongondo 1 Link to comment Share on other sites More sharing options...
alexm Posted November 21, 2021 Share Posted November 21, 2021 @kongondo thank you for that. That means my set up is the best setup based on the way it works! Great work by the way!! ? 3 hours ago, kongondo said: Incidentally, in Padloper 2, variations are inbuilt and allow you much more control. You are not tied to one configuration and can either delete or disable a variant. 19 hours ago, alexm said: I saw this in the product video demo way back! Great job again. Looking forward to hopefully testing alpha, if you approve and supporting the amazing task you've undertaken as and when purchasing is available. 3 hours ago, kongondo said: There shouldn't be. How many colours / sizes combinations are you generating? On 11/20/2021 at 3:21 PM, alexm said: e.g. One has 396 variations 3 hours ago, kongondo said: I haven't tested with Table. Are you talking about Table or PageTable, by the way, given that they are different modules? I am not sure I follow the question as well. Please clarify the field on the PageTable. Table not PageTable. Effectively I'm using it to create a kind of invoice page and the table acts as the items to invoice. I have a PageReference field which grabs a product. It would be awesome to be able to either, grab the product variation (though they aren't I understand that they aren't pages, so that is ruled out), then I could grab the associated information such as sizes and colours available. Then I thought that perhaps another way would be to grab the available variations for a Referenced page in the PageField and then output a dropdown of options to make it easy to pick. To be honest though, it's not a whole lot of effort to just type XL and Blue in 2 text fields failing there being a solution that you can see. 1 Link to comment Share on other sites More sharing options...
alexm Posted November 21, 2021 Share Posted November 21, 2021 @kongondo I'll end up scrapping this setup once PadLoper is ready in the long run as I know it doesn't use pages now. So this is only a bridge really and there is no need to part with too much of your time considering this if it simply isn't straight forward. Thank you for your time. 1 Link to comment Share on other sites More sharing options...
kongondo Posted November 21, 2021 Author Share Posted November 21, 2021 51 minutes ago, alexm said: Looking forward to hopefully testing alpha, if you approve Just checking that you expressed an interest? 53 minutes ago, alexm said: e.g. One has 396 variations Wow! From performance side of things, that's still fine as each individual combination (variant) is not a page in itself. From a UI/UX point of view though...that can be a nightmare. I wonder if some sort of grouping is possible? i.e. creating configs for similar products. Maybe not worth the effort though as you can use the inbuilt pagination and search on the variations table. 1 hour ago, alexm said: I have a PageReference field which grabs a product. It would be awesome to be able to either, grab the product variation (though they aren't I understand that they aren't pages, so that is ruled out), then I could grab the associated information such as sizes and colours available. You should still be able to. However, I am not sure how your setup looks like. This confuses me: 1 hour ago, alexm said: It would be awesome to be able to either, grab the product variation Usually, a single product would have more than one variation, e.g. Red Small, Black Large, etc. However, it is also possible for a product to have one variation/variant only. The key thing here is that a one-to-many relationship is still assumed. The usual setup would be like this: Product A variant 1: Red Small variant 2: Black Small variant 3: Black Large In your Invoice Page, if you have Product A selected, you have access to all its variants (1, 2 and 3). Assuming you have a variations field inside Product A called catalogue, then you can access Product A variations like so: <?php namespace ProcessWire; $productA = $pages->get(1234); /** @var VariationsArray WireData $productAVariants */ // VariationsArray -> WireArray $productAVariants = $productA->catalogue; Since $productAVariants is a WireArray, you can use get() and find() on it like any other WireArray. E.g. <?php namespace ProcessWire; // find variants in Product A whose colour is 'Black' $productABlacks = $productAVariants->find("colour=Black"); // find variants in Product A whose colour is 'Blue' and 'Price' > 5 $productABlues = $productAVariants->find("colour=Blue,price>5"); Again, I don't fully understand your setup so I may be way off base here, but happy to help if I can see an illustration, screenshot, etc. 1 hour ago, alexm said: PadLoper is ready in the long run as I know it doesn't use pages now. Ahem... It has been a minute and a number of things had to change. This will be explained in due course but I can only say that we have the best of several worlds with the about to be released Padloper 2 Alpha/Early Beta ?. All will be revealed in due course ?. 1 Link to comment Share on other sites More sharing options...
alexm Posted November 21, 2021 Share Posted November 21, 2021 3 hours ago, kongondo said: Just checking that you expressed an interest? I have indeed expressed interest! ? 4 hours ago, kongondo said: Wow! From performance side of things, that's still fine as each individual combination (variant) is not a page in itself. From a UI/UX point of view though...that can be a nightmare. I wonder if some sort of grouping is possible? i.e. creating configs for similar products. Maybe not worth the effort though as you can use the inbuilt pagination and search on the variations table. Yup! Haha, mad. I've uploaded an example of the amount of colours for one T-shirt and the various sizes available, for your enjoyment ha. Insane. So those have all been added. 4 hours ago, kongondo said: Again, I don't fully understand your setup so I may be way off base here, but happy to help if I can see an illustration, screenshot, etc. 5 hours ago, alexm said: Yeah so, I've not made it clear that I meant when editing the page like a donut. See screenshot with red arrows. I have added hook so that when the page is saved and a quantity has been entered for that row it grabs the price from the related product (col 1) and then adds it to the price field and calculated the line total. It would be awesome if there were a way to either output the available variant sizes and colours as separate selects say, or as one join column called variations. 4 hours ago, kongondo said: Ahem... It has been a minute and a number of things had to change. This will be explained in due course but I can only say that we have the best of several worlds with the about to be released Padloper 2 Alpha/Early Beta ?. All will be revealed in due course ?. I applaud your efforts, patience and skill! It looks and sounds phenomenal based on the ongoing discussion in the PadLoper thread. Imagine if you drop it on Christmas... We could call you Santa? ? 1 Link to comment Share on other sites More sharing options...
kongondo Posted November 22, 2021 Author Share Posted November 22, 2021 19 hours ago, alexm said: See screenshot with red arrows. I have added hook so that when the page is saved and a quantity has been entered for that row it grabs the price from the related product (col 1) and then adds it to the price field and calculated the line total. It would be awesome if there were a way to either output the available variant sizes and colours as separate selects say, or as one join column called variations OK, we are getting warmer. A few questions: Pro RTX Pro Pique Polo Shirt: is that a product or a product variant? I guess the former though. If it is product, I am assuming it has variants? If it has variants, what do you want to display in the columns Size and Colour? Should they not display a single size and colour (e.g., Small and Lilac) respectively? 1 Link to comment Share on other sites More sharing options...
alexm Posted November 23, 2021 Share Posted November 23, 2021 SORRY! Missed your reply. My bad. 1. It is the product itself. 2. It does. On 11/22/2021 at 5:19 PM, kongondo said: Should they not display a single size and colour (e.g., Small and Lilac) respectively? 3. Yes, that would also be fine as it's a combination of 2 attributes. So it could just be Small Lilac like you say all in one column. Link to comment Share on other sites More sharing options...
kongondo Posted November 23, 2021 Author Share Posted November 23, 2021 19 minutes ago, alexm said: 1. It is the product itself. OK. If the table is an invoice table, I presume then that you know which of the variants of this product was bought. For instance, Pro RTX Pro Pique Polo Shirt comes in several variants, Small x Lilac, Medium x Brown. In your first line then, you should know if it was Small x Lilac that was bought of Medium x Brown. All variants have IDs. This is the bit I don't get. In your Hook, you can autofill Size and Colour by grabbing the product variant using its ID. Is there a reason you cannot do that? Unless, these invoices are being created manually maybe off a phone order, in which case, the editor has no idea what the variant ID is :-). Sorry if I am taking you round in circles. Alternatively, I could have a quick look if a discrete temporary login to your site is possible. 1 Link to comment Share on other sites More sharing options...
alexm Posted November 23, 2021 Share Posted November 23, 2021 50 minutes ago, kongondo said: Unless, these invoices are being created manually maybe off a phone order, in which case, the editor has no idea what the variant ID is :-). Sorry if I am taking you round in circles. Alternatively, I could have a quick look if a discrete temporary login to your site is possible. This! So it's not going to function as a front end store in the short term. Why would one do such a thing when I could wait and use something as delicious as PadLoper. Haha. It will be simply so invoices can be created quickly from the relevant stock items. It's my fault for not explaining in more detail. By all means, jump in and take a look. I'll fire over details once I've uploaded it in a mo ? Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now