Using a basic Product Attribute

Saturday, December 28, 2024 1:09:38 PM
  • Posted: Thursday, January 21, 2021 8:51 AM
  • 30
I am looking to move my site from Magento to Grandnode and I am finding it difficult to understand how product attributes work in Grand node.

It seems one or more of the themes uses The product attribute on simple products combined with product attributes, price changes etc.  this does not have enough functionality for me.  I need to do it the "Magento" way.
I need ( for example )
1 x grouped Product
3 x Associated ( simple ) Products
I need to create a product attribute called "size" on the simple products and set it to a specific value.  

It seems the only way of doing this is to
- Create the Product Attribute size
- Create a Drop Down Product Attribute in the simple product
- Add a Value to the Drop down

When I render this in the theme in the Grouped product - I need to say something like:
@variant.ProductAttributes.Where(attr => attr.Name=="Size").First().Values.First().Name

To me - that seems very convoluted, and doesn't allow the enforcement of entering the product.

Should I be using Specification Attributes?   It seems then I need to add ALL of the attributes globally.

It seems a lot different to Magento
0
  • Posted: Thursday, January 21, 2021 9:18 AM
  • 30
I also wonder if there is some sort of helper like  helper.GetProductAttribute(product) that handles errors at each level
0
  • Posted: Thursday, January 21, 2021 10:29 AM
  • 33
Martin wrote:
I am finding it difficult to understand how product attributes work in Grand node.

Actually, it is very simple. Each item may be offered with different options, like size, color, etc. Attributes allow you to add more options without the need of creating new products. If you have specific values limited, you may use the Attribute Combinations feature, which allows you to set inventory stock and the price difference per specific attribute combination. To use fully this type of stock management need to change the "manage inventory method" to use product attribues to track stocks.

Martin wrote:
I need to do it the "Magento" way.
I need ( for example )
1 x grouped Product
3 x Associated ( simple ) Products
I need to create a product attribute called "size" on the simple products and set it to a specific value.

I do not know Magento and do not know how such a scenario is resolved by Magento. GrandNode is a different eCommerce platform that offers each store owner its own way of setting products.
For me, the above example is a bit tricky, not sure why need to call grouped item to add single attribute? Sure, it is possible, but a much more easy and friendly way is to use just an attribute assign to a simple product. Just like in the image below:


Martin wrote:
Should I be using Specification Attributes?

Specification attributes are a bit different than attributes. Not sure about your case, but a "size" is rather a product attribute.

Martin wrote:
It seems then I need to add ALL of the attributes globally.

Again, GrandNode offers each store owner to set up their own way. If a large number of items will be using this same attribute, like size, you may add this globally and ad preselected options to save time while adding to each product. This is set up at the admin panel (Catalog->Attributes->Product Attributes).
However, if you would like to add an attribute that will be used by a small number of items, you may add it at the product details view, at the product attributes tab.

Hope that helps.

Best regards,
Tomasz

GrandNode Team
0
  • Posted: Thursday, January 21, 2021 11:07 AM
  • 30
Thanks.  sorry - but the main product needs to be a Grouped product and the attributes for size actually need to come from the individual simple products ( that are associated products )

The first reason is that doing it your way ( which is what seems to be implemented in some of the paid themes )  - you miss out on the full functionality of pricing ( e.g. old pricing ).  

Secondly - It is much better and cleaner to have inventory managed as a simple product.  this is the way it is done in Magento.

The main thing that is missing is :
The ability to add a product attribute that is a text field that is mandatory and has one value. ( a bit like adding a custom field )   The product attribute that is a text field can't receive values it seems except in the front end. Magento did all this very well it is just, unfortunately, a big slow mass of buggy spaghetti code.





0
  • Posted: Friday, January 22, 2021 6:04 AM
  • 33
It is good to have a different view, it gives us a better perspective.

Martin wrote:
The first reason (...) you miss out on the full functionality of pricing ( e.g. old pricing ).

With the simple products I may add old prices, may add special prices, may add special prices per currency, and may add tier prices to offer discounts for those who buy more pieces. What functionality is missing then?


Martin wrote:
Secondly - It is much better and cleaner to have inventory managed as a simple product

That is why I show you a simple product to use :) So this is the same as Magento.

Martin wrote:
The main thing that is missing is :
The ability to add a product attribute that is a text field that is mandatory and has one value. ( a bit like adding a custom field )   The product attribute that is a text field can't receive values it seems except in the front end. Magento did all this very well it is just, unfortunately, a big slow mass of buggy spaghetti code.

Not sure about this. So you are setting up a text field, with a possibility to set it as mandatory or not (depend on an admin suppose), but without the ability to add any text by the buyer? So what for you need text field? You may use a read-only checkbox with a predefined value that can be preselected or not.





Best regards,
Tomasz

GrandNode Team
0
  • Posted: Friday, January 22, 2021 6:23 AM
  • 30
1) Yes you can do old pricing with a simple product but you can't if you use a simple product to represent multiple skus ( by use of an attribute )

You also cannot add any custom fields or attributes so if you wanted to use your simple products to appear in a google shopping feed for example and have a custom field / attribute there you can not do it.

2) Magento - in themes typically uses grouped products with simple products on them - not simple products with price adjustments

3)  In Magento - you add a product attribute - and it might be a text field - it could be a drop down or whatever and it's sole purpose is to store data to be displayed ( not changed  ) on the product page or in a feed somewhere. And it can not even be displayed on the front end. It's just like having a custom field.  and it's used a lot.



0
  • Posted: Friday, January 22, 2021 12:52 PM
  • 33
Martin wrote:
1) Yes you can do old pricing with a simple product but you can't if you use a simple product to represent multiple skus

Simple product to represent multiple SKUs? Sound like a product attribute combination will be something you are looking for. There you may add SKU per each attribute, even add its own price or stock.


However, GrandNode gives you another opportunity to set it up - by a bundle. The main item may have its own SKU, while each of bundled items may have its own.


Martin wrote:
2) Magento - in themes typically uses grouped products with simple products on them - not simple products with price adjustments

And that is wrong? Each platform is different, each showing its own way.

Martin wrote:
3)  In Magento - you add a product attribute - and it might be a text field - it could be a drop down or whatever

And at the GrandNode not able? See the screen below? See how many options are possible to be chosen?


Maybe it is time to start thinking of how it can be done in a GrandNode way? If you keep thinking in a Magento way, then always will find something, because both platforms are different! That is natural, and there is nothing wrong with it.
Best regards,
Tomasz

GrandNode Team
0
  • Posted: Friday, January 22, 2021 9:06 PM
  • 30
Yes - but you miss out on some functionality - like old price, catalog price ( and probably others )  - it's not the same as having a separate simple product and all it's features; and surely this is doubling up on functionality.  It really "feels" like a bit of a hack when I look at it!

And ( thinking ahead ) what happens when you want to represent stock in a grid or query the API and filter by low stock and things like that? You will probably have to query each simple product and aggregate the attribute combinations.  when I said "Convoluted" this is what I was talking about.

It's much better to keep things clean and simple - a simple product should represent a stock keeping unit - which is what they do in Magento ( and these sorts of scenarios are represented with configurable product types ) .

Where Magento lacks here ( and probably Nop commerce because it is a relational DB ) is the performance hit of having to do a look up on a related table for each product attribute. this could be different in MongoDB.

It would be a great thing to have
- a custom field ( so you could add a custom property / attribute to the product )  that is enforceable to be mandatory
- configurable for the admin panel so that you can say where it appears  ( this is done in product attribute sets in Magento )
- if it can't be easily accessed  like @variant.newProperty then some sort of helper would be needed (  to render these attributes currently I need to do something like
@variant.ProductAttributes.Where(att => att.Name=="size").First().Values.First().Name .. which will error if I don't put it in a try-catch block )
0
  • Posted: Friday, January 22, 2021 9:34 PM
  • 30
In addition - I guess Magento is a good Model to follow in terms of needed functionality.

Because of globalisation and people expecting to buy in their own currency - and multiple geographical sites ( we have 4 magento sites with one back end ) , what is needed ( and I reviewed many platforms ) is:
- Multi site ( targeting countries with hreflang )
- Multi currency (and the ability for the end user to pay in their own currency ) .  
Many of our customers don't even know that they ordered from another country as the speed of delivery is faster that their own country in some cases.
- one back end ( instead of multiple shops syncing )
- scalable ( I'm not sure how scalable NOP & Grandnode are but things like holding freight rates in the cache are not scalable if you are dealing with large amounts of rates )

So the only real contenders for this are:
- Magento, which does everything but it a HUGE resource hog and required me to have a very powerful server and LOTS of bugs because I needed about 25-30 extensions. I abandoned Magneto 2 upgrade recently after spending 30K+ on it because I realised it was just going to keep taking my money.  But Magento 1 ( although now obsolete ) works quite well - it fast and does it all.

- Shopify. only the pro version which starts at $2000USD per month which I can't really afford ( extra functionality goes up after that ) .  Also collections and sub collections don't work very well.

- Big-commerce.  Same as Shopify in terms of price; does the categories ( Shopify calls them collections ).  too expensive and these frameworks limit you in what you can do.

- Prestashop.  Looked good to start with but the multi-site part doesn't work very well.

- Nop.  Looks good but lacks true Multi currency support and some of the paid freight extensions use stored procedures in MSSQL ( My goodness - NEVER use stored procedures in this sort of app ) .  Relational database is always going to add extra overhead ( although a lot of people are mentioning MongoDB for the future versions ).

- Grand node. Has great potential and better supports multi-currency in the last 12 months ( except it would be good to show the currency the customer purchased in the admin panel - I think that is in one of the next releases )

Both Nop and grand node
1. The Attribute / Stock system they use lets NOP and grand node down in terms of custom fields/properties.
2. They both lack a proper way of creating orders in the admin panel
3. The API lacks the ability to add orders - and while it was mentioned that this would be only a one-off task, that would never be the case if you want to expose these to other systems.  For example, someone might create a system for creating orders that use the API ( like a desktop version ). I would probably do that myself - but there is a company that does this for Prestashop and Magento and a few others.

Grand node could easily be the next Magento for the small to medium business market - a lot of the functionality you spend thousands on for Magento is already out of the box so you don't have to pay big bucks to make extensions work together well. Being a strongly typed and compiled language it is less prone to bugs and hacking.

You're sitting on a gold mine - make it work!


0
  • Posted: Monday, January 25, 2021 7:53 AM
  • 33
Thanks for your time and some hints. Some improvements have been done and will be released with the next version of GrandNode.
Just would like to mention what you have point:
Martin wrote:
- Multi site ( targeting countries with hreflang )

Multistore is supported, hreflang is not implemented yet. Maybe you would be interested to add a work item?

Martin wrote:
- Multi currency (and the ability for the end user to pay in their own currency ) .  

Multicurrency is supported, even at our demo, you are able to place an order using USD or EUR currency. Also, the new version will have some improvements to the pricing feature.

Martin wrote:
- one back end ( instead of multiple shops syncing )

It is since the first release of GrandNode.

Martin wrote:
- scalable ( I'm not sure how scalable NOP & Grandnode are but things like holding freight rates in the cache are not scalable if you are dealing with large amounts of rates )

Maybe some improvements are still possible to be implemented. With technological development, this issue will probably require constant improvement.

Martin wrote:
Yes - but you miss out on some functionality - like old price, catalog price ( and probably others )  - it's not the same as having a separate simple product and all it's features; and surely this is doubling up on functionality.  It really "feels" like a bit of a hack when I look at it!

I`m still a bit confused about your GrandNode setup and the case of the attributes. Not able to understand why can not use a read-only checkbox if need only to inform your customers. I guess you are interested to use attributes to keep all required information in one place. Anyway, back to the missing information in the case of the bundle product, we design it to keep it with limited information to keep a clear view. If your requirement is about adding new things, you always may modify the view and apply changes.

Finally the API
Martin wrote:
The API lacks the ability to add orders

Orders are available as a paid extension.
Best regards,
Tomasz

GrandNode Team
0
back to top
Filters