I have done some minor dev work with Umbraco so I'm not a comlete noob, but one concept I don't have an idea on is this.
I'm using 'products' in this example but the idea could apply to any number of items you might typically control from a database.
How would you administer your Products in your Umbraco system
if those products are to be part of a 'standard' purchase system (with orders,
customer details, shipping details etc) ?
My issue is I just can't see how Umbraco can store all that
info.
If your site is just a 'brochure site'. Ie: just lists your
products, then fine. Just make a 'product' datatype that can be a child of the
Product page datatype.
But if you need to maintain some referential integrity
between your order system, shipping system and all the other stuff that is
normally in a relational database, surely you cannot have your products as mere
Umbraco datatype.
All that being the case. Then how do you display and
administer your products?
Display is easy. Make a usercontrol or two that gets your
products out of the database and displays them as required by your site.Then use those usercontrols as marcos in umbraco. Simple.
But admin is a whole new ball game. These products are now
not longer controlled by the Umbraco system. Yet you might want to sell your client one admin. Not one for site content and another to adminsiter their products.
So if you want to administer the
products in the Umbraco system when you login, I'd image you need to build your admin pages a usual, but someone add them to the Umbraco cms. Is that possible? Am I on the right track here.
Please don't point me to the e-commerce plug in for umbraco at Codeplex. This is not about e-commerce. This is simply a data structure concept that I am not clear on.
One option would be to create the product item in code from whatever Admin system you set - so this doesn't have to be the Umbraco backend. You can still use the Umbraco API to create the product nodes and you can then use node ID as the foriegn key in other tables for referential integrity.
You're right, Umbraco doesn't support referential integrity between custom data objects/types.
This is ok, as it's not the primary purpose of Umbraco; it's a CMS. It's not a 'one size fits all' application.
Within Umbraco, you can create relationships between nodes (using mutli content
pickers, etc) to establish related content, the key here is that it is
the content that is related, not business objects.
To achieve what you're discussion you would implement your admin interface as a custom section. This is bascially just a series of .NET pages, using whatever code/business layer you write, accessing whatever DB structures you design. See packages like Commerce (http://commerce4umbraco.codeplex.com/) for examples custom sections ;-)
A meta data structure, like the one in Umbraco, is great for a CMS. In fact, it's basically the core and purpose to any CMS. However, it does not fit well for bespoke, single purpose web application as you cannot define or control the relationships between your data objects.
Good question. If you have a large product or client or whatever database it doesn't make really sense to hold it in Umbraco datatypes. and you may prefer to hold the data in a database. To maintain the data from this database in Umbraco you have a few options
1. Create a new section in umbraco where you can maintain the data. Simply create a new page that have crud operations. and add them to the tree. Check out the blogpost from Tim how to integrate a new section into umbraco
2. Create a datatype that contains functionality for the crud operations. I've build this for a client a few months back. What's great about this approuch is that you can use it in document types and you can apply automatic filters based on the document properties to filter data. It's a lot of work though.
To display database data in your website is the simple part. You can use a usercontrol or an xslt macro to display data. When you are using an xslt macro I recommend watching the following video that explains how this works.
Also I would still recommend to view the source of Commerce4Umbraco. That is also using a technique to maintain external data in Umbraco. So it gives you a good insight.
Product administration
Hi
I have done some minor dev work with Umbraco so I'm not a comlete noob, but one concept I don't have an idea on is this.
I'm using 'products' in this example but the idea could apply to any number of items you might typically control from a database.
How would you administer your Products in your Umbraco system if those products are to be part of a 'standard' purchase system (with orders, customer details, shipping details etc) ?
My issue is I just can't see how Umbraco can store all that info.
If your site is just a 'brochure site'. Ie: just lists your products, then fine. Just make a 'product' datatype that can be a child of the Product page datatype.
But if you need to maintain some referential integrity between your order system, shipping system and all the other stuff that is normally in a relational database, surely you cannot have your products as mere Umbraco datatype.
All that being the case. Then how do you display and administer your products?
Display is easy. Make a usercontrol or two that gets your products out of the database and displays them as required by your site.Then use those usercontrols as marcos in umbraco. Simple.
But admin is a whole new ball game. These products are now not longer controlled by the Umbraco system. Yet you might want to sell your client one admin. Not one for site content and another to adminsiter their products.
So if you want to administer the products in the Umbraco system when you login, I'd image you need to build your admin pages a usual, but someone add them to the Umbraco cms. Is that possible? Am I on the right track here.
Please don't point me to the e-commerce plug in for umbraco at Codeplex. This is not about e-commerce. This is simply a data structure concept that I am not clear on.
One option would be to create the product item in code from whatever Admin system you set - so this doesn't have to be the Umbraco backend. You can still use the Umbraco API to create the product nodes and you can then use node ID as the foriegn key in other tables for referential integrity.
You may consider adding a 'custom section' for products admin in umbraco.
Please have a look at this link: http://www.nibble.be/?p=71
Hi Brad,
You're right, Umbraco doesn't support referential integrity between custom data objects/types.
This is ok, as it's not the primary purpose of Umbraco; it's a CMS. It's not a 'one size fits all' application.
Within Umbraco, you can create relationships between nodes (using mutli content pickers, etc) to establish related content, the key here is that it is the content that is related, not business objects.
To achieve what you're discussion you would implement your admin interface as a custom section. This is bascially just a series of .NET pages, using whatever code/business layer you write, accessing whatever DB structures you design. See packages like Commerce (http://commerce4umbraco.codeplex.com/) for examples custom sections ;-)
A meta data structure, like the one in Umbraco, is great for a CMS. In fact, it's basically the core and purpose to any CMS. However, it does not fit well for bespoke, single purpose web application as you cannot define or control the relationships between your data objects.
Cheers,
Chris
Hi Brad,
Good question. If you have a large product or client or whatever database it doesn't make really sense to hold it in Umbraco datatypes. and you may prefer to hold the data in a database. To maintain the data from this database in Umbraco you have a few options
1. Create a new section in umbraco where you can maintain the data. Simply create a new page that have crud operations. and add them to the tree. Check out the blogpost from Tim how to integrate a new section into umbraco
2. Create a datatype that contains functionality for the crud operations. I've build this for a client a few months back. What's great about this approuch is that you can use it in document types and you can apply automatic filters based on the document properties to filter data. It's a lot of work though.
To display database data in your website is the simple part. You can use a usercontrol or an xslt macro to display data. When you are using an xslt macro I recommend watching the following video that explains how this works.
Also I would still recommend to view the source of Commerce4Umbraco. That is also using a technique to maintain external data in Umbraco. So it gives you a good insight.
Hope this helps you,
Richard
is working on a reply...