Jump to content

Advice on Custom Online Retail Store

- - - - -

  • Please log in to reply
9 replies to this topic

#1
LiveByTheCode

LiveByTheCode

    Newbie

  • Members
  • Pip
  • 6 posts
Greetings my fellow coders,

Starting off 2012, I received my first freelance project for an online retail startup. I'll be independently coding the site with my girlfriend (who's a graphic designer) providing the designs. I'm pretty sure that's why they even considered giving me a shot, she's amazing, lol

Anyways... I do have experience coding my own personal sites using PHP, MySQL, Javascript, JQuery and HTML/CSS. But this will be my first site that I'm actually selling items online and also the first one I'll be coding and handing off to someone else to maintain.

Being a business consultant by day, I am very much into designing a strong and flexible solution upfront rather than piecing it together as I go along. I'm stuck in this design phase right now! And am wondering if any of you much more brilliant and experienced minds out there might be able to give me some advice/guidance.

Here are the basic requirements:
-Online retail store
-After I hand the site over, the founders will need to be able to add more products, modify existing products, modify existing information (like descriptions or prices) ...this is the requirement I'm struggling with as I've never "handed a site over" before

My Open Questions:
  • What is the best way to code the site to allow the founders to add new products or take existing ones away without them delving into code? Perhaps I could create the products page as more of a framework in PHP and pull product images/information from a MySQL table? Is this the best approach and would there be an easy way for them to modify the MySQL table (because even that may be a little too technical for them)?
  • What shopping cart plugins have served you best before and do you have any recommendations (Magneto, OpenCart, OSCMax, etc.)?
  • What credit card plugins have served you best before and do you have any recommendations (Merchant Plus, PayPal Website Paytments Pro, etc.)?
  • Would I need a separate plugin to calculate Salestax?

Those are some of huge questions I have that define the foundation of this project. Any help would be GREATLY appreciated. Thanks so much for your time. Let's make 2012 a big year!! :w00t:

#2
Orjan

Orjan

    Writes binary right handed and hex left handed

  • Moderators
  • 3,299 posts
  • Location:Karlstad, Sweden
  • Programming Language:C, Java, C++, C#, PHP, JavaScript, Pascal
  • Learning:Java, C#
The small experience I have is that Drupal/Übercart probably has what you would need, even tax and stuff. Pretty easy to set up and a web interface to handle the products.
__________________________________________
I study Information Systems at Karlstad University when I'm not on CodeCall

#3
LiveByTheCode

LiveByTheCode

    Newbie

  • Members
  • Pip
  • 6 posts
Thanks again for the reply. So I have done some research on a bunch of the platforms (like Drupal) that I could build this site on top of.

Looks like there are e-commerce platforms, with the 3 most popular looking like Magneto, OpenCart and PrestaShop. Out of these, it seems like OpenCart is in fact the cleanest and allows a developer to work with the code the best. As for Magneto, it looks like the code is inefficient/buggy and incredibly tedious to customize.

There are also CMS platforms, with the 3 most popular looking like WordPress, Joomla and Drupal. They all have e-commerce plugins (like Ubercart) that would allow these sites to be turned into an online store. Based on my research here, it looks WordPress is the simplest of all 3 platforms while Drupal is the most complex yet flexible. Joomla, like Mageneto, doesn't appear like a good option.

I was wondering what approach seems better - taking a CMS Platform like Drupal and adding an Ubercart extension? Or starting with an e-commerce platform like (like OpenCart) and adding blogging extensions?

Also, I've heard Ubercart is a great software, but due to it's flexibility and larger scale design (at least relative to WordPress) - that it's loading times can be very slow, especially for international clients who are located far from the server. Have you experienced any issues like this? Thanks!

#4
Orjan

Orjan

    Writes binary right handed and hex left handed

  • Moderators
  • 3,299 posts
  • Location:Karlstad, Sweden
  • Programming Language:C, Java, C++, C#, PHP, JavaScript, Pascal
  • Learning:Java, C#
It's a lot talking about taste in this. Taste and Believe. If you want your shop fully integrated into your web page, I'd definitely go with a CMS and a e-commerce plugin to it. Then on which way to go, I would agree that Drupal and WordPress are probably the best shots to be found today, but that's only my opinion.

I have more experience with Drupal than WordPress, I have to admit, to not trick you to anything, but I think if it's a plain simple shop, few articles etc, both would do. I believe Drupal is more powerful and flexible, but as you say, it also means it's complex. WordPress isn't a bad choice, neither is Drupal. If you want extended functionality on your web site than just a shop and a blog, I think I'd go with Drupal, but if there isn't more than a few static pages, a blog/news section and the shop, I think WordPress is simpler to set up for the plain usage.

I haven't got that much experience on UberCart loading times, but where I've seen it, I haven't noticed any special problems. I believe everything depends on how the site is set up, with the cache and other accelerator functions in Drupal that is meant to make the site faster. If these isn't configured in a good way, I can believe a Drupal site can feel somewhat slower, it is, as you say, more complex, more flexible and powerful in more advanced senses. Drupal has a big supportive community which is great for a new user.
__________________________________________
I study Information Systems at Karlstad University when I'm not on CodeCall

#5
LiveByTheCode

LiveByTheCode

    Newbie

  • Members
  • Pip
  • 6 posts
Thanks for your detailed feedback. Good to know about Drupal's acceleration functions. I have one question about your statement: "I'd definitely go with a CMS and a e-commerce plugin to it".

Do you mean, because we have some static pages and a blog - it's better to start on a CMS platform? Just out of curiosity, what's the benefit of doing it this way? More flexibility or cleaner?

---------- Post added at 12:53 PM ---------- Previous post was at 11:51 AM ----------

Also out of curiosity - as a drupal programmer, is it difficult to make manual coding tweaks since the code is more bloated than wordpress? Or is it relatively easy to go back and forth, and make custom changes? Thanks!

#6
Orjan

Orjan

    Writes binary right handed and hex left handed

  • Moderators
  • 3,299 posts
  • Location:Karlstad, Sweden
  • Programming Language:C, Java, C++, C#, PHP, JavaScript, Pascal
  • Learning:Java, C#
1) I believe it's easier to make one template in a cms that works with both the e-commerce solution and the content. But I can be wrong, as I have pretty little experience with the stand alone e-shops, but I have got the feeling that they are just that - stand alone. And you might need to do a template/theme for your shop and one for your content - double work. Change in the content template and it turns out it can't be done like that in the shop template or vice versa. My main reason is maintainability. If you decide to add more functionality later on, there might be a third system with a third template/theme system, for example a forum. With a cms, you let everything fit in into one template/theme.

2) usually, you don't have to do tweaks. it's built as a configuration system with modules and you add on the modules/functionality you need and build your site online on your site. With the right modules and a theme of your own (might be as a subtheme of something already done) you come a long way. if you don't find a module do the functionality you need, you can always write your own module. It is strongly discouraged to change in the code in core modules or contrib modules, better to do what you want in a new module then, which modifies another modules fuctionality.

Usually a Drupal site is built on content nodes, and then shown by views and blocks which can have just about any of the content. Views is a sort of report generator, blocks is pieces of information you place in a spot, a little like the widgets in iGoogle. There are a few standard node tyes, depending on what you want to store, and you can add more fields to the node types as you wish. It's somewhat as how to work with a database, node types is your tables and views is your prebuilt queries. Drupal is pretty basic in that matter, but modules add on to it so you can have whatever you like with a few clicks more.
__________________________________________
I study Information Systems at Karlstad University when I'm not on CodeCall

#7
LiveByTheCode

LiveByTheCode

    Newbie

  • Members
  • Pip
  • 6 posts
1) This makes sense to me. I agree that CMS platform does sound more flexible as long as the online store plugins are as robust as an e-commerce platform. I think it must be as sites like ebay are built on CMS platforms (wordpress for that matter).

2) I'm surprised you don't need to do many tweaks. I guess that's pretty good news. I'm a salesforce consultant/developer, so I do understand the difference between configuration and coding on a platform. Are you saying most of the stuff you do in Drupal is point-and-click? Doesn't that force you to stick to your template almost exactly? My girlfriend is a graphic designer so I'd imagine we want to greatly customize the look - for aesthetic purposes, would I be able to use just configuration? Also, when you say "build your site online" do you mean you build it directly on the web server?

I think I understand what you mean with node types representing tables, but the views is a little confusing without seeing it. Do you mean, for example, a node type could be Product. With fields being name, description, price, quantity, etc. What would a view or block be then in this case?

Once again...thanks for all your help in understanding... I will be downloading a platform soon and testing it out

#8
Orjan

Orjan

    Writes binary right handed and hex left handed

  • Moderators
  • 3,299 posts
  • Location:Karlstad, Sweden
  • Programming Language:C, Java, C++, C#, PHP, JavaScript, Pascal
  • Learning:Java, C#
1)Yes. The thing to think of if is the site is going to be a shop with some pages, or a site with a shop. I guess you understand the difference.

2) A lot in Drupal is point and click, drag and drop, selecting values in select boxes or checking checkboxes, but not everything of course. The theme is made by coding, usually to download a pretty good conrib theme which is good for creating your own subtheme on, then upload your own image files, a template file and a css file, maybe code some small things if needed. In your template, you create areas where you can add content (blocks) in the configuration part.

Example: you want to do a header, a menu bar, three columns and a footer, which you want to fill, then you define these areas in a theme info file, tell your template file where to put the content of the areas, then the block configurator fills the areas with the content of your choise from available blocks.

You start off a installation by downloading the install package, called core by drupalists, unzip it and upload it to the server and run the installation script to deloy the database and do the first basic settings.

Then, you start configuring the site as you want it. Ususally, you start adding modules from the contrib library, either download them, unzip them and upload them to the right position, or just give Drupal the path to the module zip/tar and let it do the downloading and unpacking itself. Enable the modules you want to use and set the correct permissions and then, configure each module so it works the way you want it.

After that, you get your theme (in the same way as the modules) and eventually upload your own (sub-)theme, start deploying the theme with blocks in the theme areas.

Blocks is either created by a module or by creating one in a view. Some blocks are standard in core, as a login form block, and some menus, others are provided by contrib moduls.

Views is actually a contrib module itself from where you can create content blocks, pages, rss feeds and some other stuff. yoou can create a view by some settings like "take all nodes of type X and Y, with date field greater than now (in the future), show 10 at a time and if there are more, use a pager, show only fields A, B and make a link in the bottom to another page based on the user who created the node" All this is in a configuration interface by click and select, ajax based.

In other words, you choose the fields of the SQL query, you configure the FROM and WHERE statements and eventually add on a GROUP BY statement, add on some JOINS if needed and so on... all in a web interface. define the path to the view/page and voila, you have it.

As a add on to this view, you can create a block in the Views module which for example "reads out a value from the URL as a argument so you can show other nodes of type Z which relates to the page content".


A practical example would be a multiblog site.
on /blog, you create a view displaying the different blogs, on /blog/blogname, you display the latest blog posts in that particular name, and then on /blog/blogname/post-title you can show a specific post and its comments. All this is just a view of three pages, for all blogs. all dynamically built.
then create a block that's only visible on any blog post page showing the latest blogs for the whole site. everything in the configuration interface. jut tell the Views cass what css classes to give to the div blocks, and your theme's css can do the magic of the look and feel.
__________________________________________
I study Information Systems at Karlstad University when I'm not on CodeCall

#9
LiveByTheCode

LiveByTheCode

    Newbie

  • Members
  • Pip
  • 6 posts
Thanks again for the extremely detailed explanation. Sounds like you have more than "a little" experience :)

So if I'm understanding you right, the process for Drupal (which I'm sure is not too different than other CMS platforms) is:

1) Install the Core
2) Add modules for functionality you know you'll need, and configure each module
3) Get a theme, and make further customizations in specific areas using your own subthemes
4) Add "blocks" into the theme's framework
5) Add views that define what content to display in specific blocks. Views are really just queries of all your content (or nodes), which are stored in your node types. You can also add css class to the view to format the content.
6) The platform will then handle the displaying of content in the right places, with the right format.


You did say a few things that I'm still a little unsure of:
1) What is the difference between theme, subtheme, and template? Is it that template is the structure, theme is the look, and subtheme is even more specific look (like CSS Class)?
2) If you want the same header and footer on every page... but want different number of columns or different column widths etc. on the individual pages - how would you accomplish this? With your multiblog example, it sounds like the content that is shown is dynamic but the layout is not.

Thanks again! So helpful to have this overall understanding.

#10
Orjan

Orjan

    Writes binary right handed and hex left handed

  • Moderators
  • 3,299 posts
  • Location:Karlstad, Sweden
  • Programming Language:C, Java, C++, C#, PHP, JavaScript, Pascal
  • Learning:Java, C#
Number 4 and 5 in your list needs to change place. Views create those blocks to place. Views is really much more than just a queryer, but it is hard to explain ;-) but to your questions:

1)
Theme: a contrb theme someone built from scratch
Subtheme: a new theme based on a already made theme. everything from master theme is inherited, unless it is replaced with some overriding code in the subtheme.
(This is how everything in Drupal works, and why you don't have to tweak code. If you want to do some changes, you do a new module, theme, profile etc where the modifications is done. You never alter core or other modules, unless you do develop them yourself.)
Template: a part of the theme which is a set of php files with the actual base page html code.

2) Yes, many sites are built by that. But of course, Drupal have a solution even here. Its a module called pages which let you configure the a set of page layouts dynamically so it can alter on different pages. It is also possible to have more php files in your template part of the theme that specifies the behaviour for different parts, but with a good clean templace, you can do all the rest with ages and let it make the layout by configuration. This is a part of Drupal I haven't worked with yet, so it's almost new territory for me.

Yes, I know quite alot of Drupal. It's the e-commerce part i'm not so into yet, but what I've used, seems great.

A Swedish guy have done loads of (I think someone said it is over 1000 now) screencasts (in english) about working with pages, views and lots of other modules in Drupal, you can find them here: Learn Drupal 7 with NodeOne | NodeOne
__________________________________________
I study Information Systems at Karlstad University when I'm not on CodeCall




1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users