Recommended approach to building an online store in PHP - php

I'm looking for some advice from the community about constructing an online store based on the following information:
About the Store:
Online store that sells physical products
product page will include elements such as customer reviews, product zoom, "you may like" etc.
uses open ID
needs a full backend to support credit card payments, order tracking, shipping, refunds, adding new products to the catalogue, etc
needs to support 3 languages (this is a business requirement)
About my skills:
I've built a similar e-commerce site in raw PHP before with many of the features I want for the new store, however that was my first big PHP project and I know it's coded terribly
My PHP/coding skills are novice and self taught and I have no experience with a framework but I'm keen on learning about one to improve my skills and to make the site more manageable for any coders who inherit the project after me.
My questions:
Do you recommend I build the new store using a MVC framework? If so, which one for this type of project? I have never used one before. I have read that CodeIgniter is good for first timers but I've also read Kohana is great so I'm torn between the two and would prefer something that won't have too steep a learning curve.
Do you recommend purchasing an existing shopping cart/web store system and then modifying it? Or just building the whole thing myself. I have a 3.5 months until launch. Personally I prefer building it from the ground up because I will know all the ins and outs of the site and I really dislike getting stuck not understanding someone else's code and how to control it. However, maybe this is ignorant of me and I should force myself to use something already existing because it's probably coded better. Thoughts?
I have done a lot of reading and research and I felt it only made sense to ask the vastly more experienced community on Stackoverflow instead of just trying to make the decision myself.

I would recommend you to go for CakePHP framework. I did my first e-commerce project with the same and it was pretty easy to learn and gave me a fully customized site as per my needs. It has built in localization, user authentication and also an openID component readily available for it.
In my opinion if you use ecommerce solutions like OSCommerce or Magento, it gives you a lot of unnecessary features and less of required customized options.

You could give a try customizing the OSCommerece which is built in PHP.It has got a wide variety of plugins available with a great user community support.Lot of online web portals are running on that.

Related

Shopping Cart Framework

I am tasked to build a shopping cart that sells book. I would like to seek help in putting me in the right direction as to where to go from here.
As of what I see, I can do the cart in two ways:
Use CI framework and build the site from scratch.
Use an existing shopping cart system and build from there.
The problem with doing the CI is its very tedious. You are basically building from scratch. So this will take time and add to the fact that this is my first time building a shopping cart. The second option seems to be ok. Why would I re-invent the wheel so to say. The only problem is finding the right open source cart that is well documented for me to start on.
So based on the two options I have. If you think it is the second option, can you suggest (if you had created a cart before) a shopping cart application that is easy and the code base is similar to CI. I found OpenCart to be ok but I would like to seek other suggestions before I start.
There are many things to take into consideration here.
What is your programming experience?
Have you worked with big scale web applications before? (I would say that almost all online store could be considered big scale web applications)
Have you worked with payment integrations?
Have you worked in setting up hosting environments?
What is the budget for your project?
Are you the only one working on the project?
What is your client expecting from the finished product?
When the store is online, who manages hosting, support, maintenance, etc?
Building a online store is no simple and small task. A small store with a flow like this add product to cart -> go to checkout -> pay using a third part payment provider could be accomplished quite easily and fast. But here are some more considerations:
Shipping methods, should there be multiple ones?
Must the site handle multiple countries, in that case you have to consider VAT, shipping again, etc.
Payment options: Credit card, SMS, invoice, PayPal, and the list goes on.. What should be available? And this will require a good hosting environment if you wish to do direct implementations (SSL certificates, etc).
Handling orders, returns and products in the backend
Discount features, such as discount codes
Being able to sell multiple products bundled as one.
I could go on for a while and make the list more and more specified, but I don't really have the time for that :) And this was just to show you that there are a lot of factors that comes in to play when building an online store.
Magento
This is an excellent choice if you are an experience developer and familiar with the Zend framework (which it's built upon). Take a look at the features for Magento, pretty much anything is possible with Magento if you know how to customize it correctly. This is not an easy task if you're not familiar with it and the learning curve is very steep.
This is a bad choice if you're not experience or the store doesn't need all of the advanced features. It's a resource hog and if you don't know your caching you will have a bad time.
Shopify
If you need to setup a online store in a hurry with a stable environment and you can settle with having the features they offer, I would say this is your best choice. Well actually I would say that at least 90% of the times, this would be the best choice.
You won't have to worry about payment implementations, backend development, support, hosting, and all the other things that comes into play.
Conclusion
I've only listed 2 options here, one advanced and one more simple on. I think you should really investigaste the different options. Take a look at their features, how much they cost, etc. Then you have to take that into consideration vs the time it will take for you to complete the store.
At least I hope I gave you some perspective on this, just let me know if you have any questions on what I wrote.
I recommend Zend Framework to building shopping cart site. If you want to build from existing tool use Magento. Check Front End and admin end here
You can create your custom module or download free modules and can purchase developed module from magento.
You have couple of options
Magento
Opencart
Both of them are built for e-commerce.
Magento is slow without any doubt, opencart is fast but not the best as Magento.
If your's application scope is limited, you can build the application in CI and i knows that it will be faster than both of these two.
But as programming perspective, its always better which is already build instead starting from scratch.

An existing eCommerce solution VS Custom built

I'm about to launch a few online stores and I would like to share my thoughts so everyone can benefit and also was wondering about your opinion related to the question: open-source eCommerce vs custom built.
I've been exploring some the existing solutions (Magento, OpenCart, OSCommerce, Xcart).
Advantages and cons:
Existing solutions:
Advantages:
You don't maintenance the code.
Plug and Play extensions.
Support.
Less code hours (not so sure about that anymore).
Cons:
Hard to custmoize: custom templates, plugins, special needs has to be implented over an heavy code already (not a MVC fan).
Too many features (could reduce performance).
Custom built:
Advantages:
Easy theme customization (no limits).
Lightweight.
More secure (questionable: Minimal is more secure, though existing solutions has more pen-testers == Users/Coders).
Easy work-around.
Cons:
Hours, a lot of them.
Lack of plugins, you need to craft everything yourself.
More things to consider:
If I'm going for the custom built - which PHP framework would help me the must?
Do you know any existing solution which is lightweight, has good plugins database, and is easy to customize?
at the moment I have to 'like' custom built more, since i'm going to built a network of stores and would like to get a customized solution, though wondering if I might be wrong.
Please, share from your experience and your thoughts related,
Thanks in advance, your help is appreciated.
Sagi.
a few things to consider, in addition to what you stated.
Developing a new eCommerce solution requires not only manpower, but also knowledge. Many topics require dedicated knowledge. Some examples:
Integration of payment systems requires knowledge about federal laws, about the regulations for VISA and Mastercard
Integration of customer systems requires knowledge of encryption systems, of federal regulations for personified data, of opt-in and opt-out customer relation systems
Integration of interfaces to other solutions (ERP, CRM) requires knowledge of secure transactions and channels, secure authentication, transport layer security
Many of the solutions available on the market already have most of this down. If not, they usually don't gain a competitive market share. Some swipe these requirements under someone elses carpet, Magento is known for redistributing it to writers of plugins.
If you are confused between open source or Custom eCommerce solution then I would advice you to choose Custom eCommerce solution. The reason behind this is that if you choose Custom eCommerce solution then the end product that you will see is fully according to you that will satisfy your requirements.
Its true that you have to pay a bit more than a normal eCommerce solution but you will get a powerful and engaging Online Store that will also help you to generate good revenues and sales.
If you are looking for a Smart eCommerce Solution but still confused about choosing then Go for a FATshoppe eCommerce System and check the demo website of your Online Store.

CMS or Framework?

I'm looking to build a online store. However, the first question, past the idea of the store, is the platform. I've previously worked with Java and PHP and am quite comfortable with PHP. So my first considerations were Drupal or maybe CodeIgniter (which I have heard lots of good things about)
On discussions with friends, they suggested Django. But I have no experience with Python or Django.
So my question is, is CI better or Drupal? And further, if not either of them, is Django better in terms of ease of development and extensibility?
Request you to not make this a php vs python battle as I'm looking for advice here. Thanks
Edit: More information about the project:
The Project is intended to create a web-store for certain products which aren't currently sold online. The store will have high-resolution images of the products and other associated details. A few other special features related to the products will be added on in time so they aren't that important.
Another clarification: I understand that Drupal is a CMS and not a framework per so. The only reason I compared it to CI was due to the base platform - php. Perhaps the better comparison would have been Joomla vs Django (but I'm not sure as I do not know enough about either, yet)
Choosing a framework for a project you already know what will be the purpose will only slow your development down. If your project's main goal is to be an online store, then pick your choice among the many projects already implemented for you with payment gateways, shipping options, product management, etc. A framework may offer all that too, but will not be ready-to-use out of the box and you will have to bind everything together yourself. My personal opinion is that frameworks are good candidate when you need an highly customized web application that you will write from scratch, that will not only do e-Commerce but handle other specific business models too.
General purpose CMS such as Drupal, WordPress, etc. are good if you plan to extend your online store to also offer other options (i.g. forums, blogs, multimedia/interactive contents, etc.) If you choose to pick this avenue, I would suggest you download the source code of each CMS you retain and play with it for a while and pick the one you feel the most comfortable with, and which has a good user community. Because there's nothing worst than being stuck with someone else's broken code with no one to help you out.
For e-Commerce solutions, you can find many good projects here. If I may choose one to suggest, a solution that you may consider as it looks simple, it is written in PHP and has good reviews is OpenCart
A good one I have worked with is the Instinct e-Commerce plugin for WordPress. I don't necessarily like WordPress, but that plugin is fairly good and will have you get your online store up and running in no time. The plugin also enable you to code new custom payment gateways fairly easily (just one file to code...)
CI and Django are frameworks that help you build a web application from scratch, if you are willing to do this - go ahead and try it. There should be plenty of modules available that allow you to easily extend the framework.
Drupal however is a CMS, so it comes with multiple plugins already installed and is able to manage your content. You'd still need to develop the "store" functionality - payment, listings, etc. - yourself.
If the CMS fits you perfectly now and in the future then CMS, otherwise framework. The framework will allow you total liberty for the price of time spent on development
Have you read and heard about JOOMLA i think its very poweful CMS in php and has a lot of community support as well, In java LifeRay is a good option.
I'd only use a framework if the requirements can not be engineered into an existing cart CMS.
I'd use a CMS over a shopping cart if the commerce aspect was relatively trivial
I'm surprised you're not considering an off the shelf cart. Open Cart is pretty extensible, and Trading Eye has a nice CMS component.
I would generally advise to stick with a language you know for important projects, although I like Python as a language much more than PHP, and Django is a nice framework.
Drupal is not only a framwork, but also a CMS. You can build an online store with some modules (Ubercart), so I would recommend to try that and see if the stock solution fits to your needs.
I suggest you have a look at Drupal's repository of modules -- in particular those in the e-commerce group here: http://drupal.org/project/modules?filters=tid:104&solrsort=sis_project_release_usage%20desc
There's a ton of them that could really help to speed you along on this project.
If you know PHP and have a good grasp of HTML/CSS/JS, you should do OK in Drupal too.
Choose Django if you want to learn Python/Django and use them in your future projects. Django is cool and you'll have fun learning Python. And you'll be able to make an informed decision for your next project.
However, if you have a budget/timeframe or just want to make this project out of the door without needing to learn a new framework I'd suggest choosing a tool/language you're familiar with.
The Bricksett CMS will build the website for you but you can also modify it using PHP for additional functionality. Modify its CSS for a better look and feel. The layout is also simple yet it has a design distinct from other CMS.
A new addition to open-source CMS
Yahoo has something like a specialized CMS for online stores, called Yahoo Stores. They make it very easy to set up an online store, and provide other logistical services. You may want to take a look at that. Of course, they take a small percentage from your sales.

Need to setup a comprehensive e-commerce page for the first time--Magento?

I'm a designer (starting to learn PHP/MySQL) and am need in an eCommerce platform (it does not have to be free) that will allow me to create a comprehensive eCommerce site--countdown promotions, related products, user reviews, payment/shipping processing, etc. Basically just populating it with products, and styling the pages.
I'd appreciate some suggestions for what platforms to explore, that will have either fairly straight forward implementation (for someone with basic PHP knowledge) or documentation with tutorials.
I've heard some buzz around Magento, but I only have experience setting up an Amazon WebStore... which brings me to my next point; seeing as I will be maintaining the page myself, I'm not interested in a clumsy drag-'n'-drop widget front-end design control panel. Ideally I'd be able to style everything with CSS, and insert/rearrange snippets of PHP code to create each page's design.
Thanks!
If you are just learning php/mysql then you'd better stay away from magento for now. It is fairly complex and complicated to maintaing even for experienced developers. The skinning mechanism is also quite complex with a lot of xml layout definitions.
If you are just starting with ecommerce you should look at a simpler shopping cart system. The ones I heard good stuff about are zencart and cubecart. Have a look at wikipedia's list of ecommerce software solutions to find the shopping cart which is suited to your needs.

Which PHP open source shopping cart solutions have features that benefit me as the web developer?

There are hundreds of shopping cart solutions available for every platform, and all hosting plans come with several already installed. As a developer I understand that most of these are fairly similar from a user perspective.
But which ones are built with the developer in mind? For example, which ones have a decent API so that my custom code doesn't get mingled with the core code or which ones have a well thought through template system so that I can easily customize it for each new client?
osCommerce is one of those products that was badly designed from the beginning, and becomes basically unmaintainable as time moves forward. Addons are patches, and custom code modifies core. (Unless things have drastically changed since I last looked at it - judging by the version numbers, they have not).
While probably at a bit higher level than you seem to be asking, Drupal is a very attractive platform. It is a CMS at its base, and using ecommerce or Ubercart you can turn it into a store. With modules like CCK and Views you can build very sophisticated ecommerce sites (specialized product types, attributes) with very little coding, plus you get all the CMS tools (editing, access control, etc) for free. If you write your own modules, you can hook into almost anything in Drupal without touching the core code, and you get a ton of flexibility.
Though a lot of developers may not consider it simply because they're stuck in this view that they should write something from scratch, Drupal is a really great development platform for this sort of thing. There is definitely a learning curve to it, especially when you need to write modules for it, but the time it takes to learn and implement a site is still probably less than writing a very customized ecommerce site from scratch.
Magento would be a good choice. It is based on the Zend Framework and is massively open and customizable. Something a real programmer (as opposed to a designer/developer) could really work with.
Magento is pretty good, and really powerful, but getting to grips with how to go about extending/replacing things is pretty tricky. The codebase is massively flexible, and just about anything can be replaced or extended, but there's very little documentation on how to go about doing it.
There are plenty of 3rd-party addons, for different payment-providers and other things, and the built-in download-manager handles the installation of these, as well as upgrades to the core code, really well.
Compared to something like OSCommerce though, it wins hands down.
I've just discovered opencart which so far I am impressed with.
How about ZenCart? It's open source so you can read and modify the source directly.
There's also a decent template system.
What about prestashop ? It's based on Smarty and there's a detail explanation on how to write a module.
I think Megento is the best but it has very long list of fratures and matains many more tables which is some times creating problem. If you have to create very large shop must use megento unless use zen-cart. I have used almost all shopping cart but my first prefreance is megento for large site and zen-cart for alltype of shops.
osCommerce seems to be pretty popular, and advertises ease of integration as one of it's main features.
I would second the Magento suggestion. It has a modern code base and is designed with extensibility in mind. It also has multi-site, multi-language capabilities engineered in from the start. It's open source and seems to have a disciplined development team (with a MySQL AB -like business model) behind it .
Here is a good review of carts:
http://php.opensourcecms.com/scripts/show.php?catid=3&cat=eCommerce
Although the voting doesn't seem to reflect a lot of the feedback from the users, so I would suggest reading the comments to find out pros cons of each
Moltin is built with developers in mind and is purely an API. You can choose the parts of the API you want to integrate with whatever frontend you have. You also get a dashboard to manage your store if you want to use it.

Categories