D
David
Hi all,
I have built a CMS in C# (.NET 1.1, I started it ages ago and it works well,
so there is no point yet in upgrading it)
I have URL Re-Writing which is handled by the global.asax rather than a
httphandler. The idea behind all the functionality of the CMS is that it is
as portable as possible, i.e. it will be able to be hosted on whoevers
webserver, wether they allow isapi filters or whatever. I have also coded it
to work as much as it can on MONO though I have not tested that side yet.
I have a multi-tiered architecture. I have a database layer that has been
written to interact with different databases should it need to, for example,
Sql Server, MySQL and even Access. I guess at one stage, I will make it work
with Oracle, Sybase and other types of DB, as well as using XML as a data
store. However, this is not my question...
I have my CMS code class, my page code-behinds inherit from this class
instead of system.web.ui.page. This keeps all of the CMS logic out of the
way.
Each page is a templated page. The templated page has placeholders put in
there for the things like the wysiwyg editor. It is the template that is
inheriting from the CMS class.
When each page is created by the CMS, it has a custom-properties feature.
This could be used for anything, for example, to load a different
stylesheet, use a specific picture or whatever. The custom property is
exposed to the higher level page so that the page programmer can use them.
There is no limit to the number of custom properties a page can have.
What I am currently using the custom property mostly for though is to
dynamically load User Controls. I have used this method on other CMSs as
well as my own with great success.
Now, I want to create like a plug-in architecture. My first plug-in will be
a shopping basket, but don't let this put you off. It is the architecture
that I need rather than the basket itself, as I intend to create a number of
plug-in items, once I have the architecture resolved.
I could use a user control to host the shop, but then each item in it will
only be able to be referenced by parameters on the URL. I wrote the
URL-ReWriter to get away from that. In this case, I want each product in the
shop to have its own unique URL, done via the re-writer.
The way I am thinking this will work is to have a control that is loaded (if
available, i.e. the DLL for the shop is in the bin folder) and it will show
itself in the administrative side of the interface. Each product will
basically be its own regular CMS page (to allow for url-rewriting plus be
searchable without having to use a spider on the site) but somehow linked
into the shopping system (add to basket, checkout, stock availability etc.)
The control will also interact with the page itself, for example, to put a
"You have X items in your basket - Checkout" link.
The control will also inject itself into the CMS based menu structure.
As I said above, I am not after the shop itself, I am after an idea to
create the plugin architecture. I am using the shop as an example, but many
of the features will be used by other plug-in ideas.
There is quite a lot to think about here and you might not be able to answer
all of the question, but if you can answer only even a little of it, it
would help tremendously.
--
Best regards,
Dave Colliver.
http://www.AshfieldFOCUS.com
~~
http://www.FOCUSPortals.com - Local franchises available
I have built a CMS in C# (.NET 1.1, I started it ages ago and it works well,
so there is no point yet in upgrading it)
I have URL Re-Writing which is handled by the global.asax rather than a
httphandler. The idea behind all the functionality of the CMS is that it is
as portable as possible, i.e. it will be able to be hosted on whoevers
webserver, wether they allow isapi filters or whatever. I have also coded it
to work as much as it can on MONO though I have not tested that side yet.
I have a multi-tiered architecture. I have a database layer that has been
written to interact with different databases should it need to, for example,
Sql Server, MySQL and even Access. I guess at one stage, I will make it work
with Oracle, Sybase and other types of DB, as well as using XML as a data
store. However, this is not my question...
I have my CMS code class, my page code-behinds inherit from this class
instead of system.web.ui.page. This keeps all of the CMS logic out of the
way.
Each page is a templated page. The templated page has placeholders put in
there for the things like the wysiwyg editor. It is the template that is
inheriting from the CMS class.
When each page is created by the CMS, it has a custom-properties feature.
This could be used for anything, for example, to load a different
stylesheet, use a specific picture or whatever. The custom property is
exposed to the higher level page so that the page programmer can use them.
There is no limit to the number of custom properties a page can have.
What I am currently using the custom property mostly for though is to
dynamically load User Controls. I have used this method on other CMSs as
well as my own with great success.
Now, I want to create like a plug-in architecture. My first plug-in will be
a shopping basket, but don't let this put you off. It is the architecture
that I need rather than the basket itself, as I intend to create a number of
plug-in items, once I have the architecture resolved.
I could use a user control to host the shop, but then each item in it will
only be able to be referenced by parameters on the URL. I wrote the
URL-ReWriter to get away from that. In this case, I want each product in the
shop to have its own unique URL, done via the re-writer.
The way I am thinking this will work is to have a control that is loaded (if
available, i.e. the DLL for the shop is in the bin folder) and it will show
itself in the administrative side of the interface. Each product will
basically be its own regular CMS page (to allow for url-rewriting plus be
searchable without having to use a spider on the site) but somehow linked
into the shopping system (add to basket, checkout, stock availability etc.)
The control will also interact with the page itself, for example, to put a
"You have X items in your basket - Checkout" link.
The control will also inject itself into the CMS based menu structure.
As I said above, I am not after the shop itself, I am after an idea to
create the plugin architecture. I am using the shop as an example, but many
of the features will be used by other plug-in ideas.
There is quite a lot to think about here and you might not be able to answer
all of the question, but if you can answer only even a little of it, it
would help tremendously.
--
Best regards,
Dave Colliver.
http://www.AshfieldFOCUS.com
~~
http://www.FOCUSPortals.com - Local franchises available