CMS or Framework? - php

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.

Related

which framework, CMS etc. for a webpage

I'm about to start a new project. It's about selling one completely customizable product.
therefore its core elements will be
Static pages
an extensive configurator with heavy jQuery+AJAX UI
registration, basket, checkout
Payment gateway integration (paypal etc)
backend: billing, order management
Email notifications
Social Media integration - Twitter feed etc
User sign up / subscription
i'm torn between using OXID/Magento or starting from scratch with a php framework as yii.
but i am open to any other better solutions.
The advantages of OXID/Magento is that it already covers the whole "shop" part, but would need changes how to integrate a complete customized product with an configurator, it seems also a bit too much for just one product and heavy loaded to use a full blown shopping cms.
With a framework like yii i would have to write lots of its functionality (checkout,billing,backend etc) from scratch but would have a cleaner solution and maybe less headaches and problems programming modules or customizing OXID/Magento at its core.
My background is PHP!
Any advice would be great,
thanks a lot,
Christoph
It depends on your project requirements, how much time/money you have if:
Your time to market is short (less than one month), and you need to a have a fast presence in the market. Your business requirements have simple 1-1 mapping with CMS features, then go with a CMS such as Magento/Joomla/Drupal, etc.. depending of how much features each one achieve for you. Here a discussion about simpler Magento alternatives " https://stackoverflow.com/questions/2693169/a-good-ecommerce-alternative-to-magento " OR you can check wordpress e-commerce plugin.
If you care about performance, scalability,high customization,moderate business requirements, you have time (3-6 months). Then for sure go and build your own solution using some PHP framework Yii/Zend,etc.
If you are writing a mission-critical system for the long run. That need to handle millions of users, you have time (more than 6 months). Then you will need to write everything from scratch, write your own PHP extensions, leverage cloud storage, etc..
If I recall well, both OXID and Magento are coded using Zend. So I'd say that your initial idea to combine them is a good one because it means you could extend the initial app with your own classes, sticking within Zend.
The drawback is that Zend's native Javascript framework, that apparently also comes with Magento, is Dojo, which I've heard isn't nearly as developer-friendly as JQuery.
So perhaps you should add the Magento jQuery Base extention (http://www.magentocommerce.com/wiki/4_-_themes_and_template_customization/javascript_related/how_to_use_jquery_1.2.6_lastest_with_prototype)
This way you'll be zend all the way (that pun was lame) but you'd rely on JQuery for the heavy Ajax and UI job you're mentioning.
You can do all of that with Magento. Most of it is in core, some of it you can write custom modules for.
As CMS I like Joomla because of it's flexibility (certainly since version 1.7). For a blog: WordPress and as framework you can also use Joomla or two other options I've tried and liked are: CodeIgniter and Yii.
MAgento is also a good option with great possibilities but it's a bit hard to get into it. Also it is a bit slow so you need a decent server to host a magento website..

Custom PHP vs PHP and Joomla

What's the best way to build a new social media site that will be sold B2B? My company is a b2b social media company. We've Been trying to determine if we should build from scratch or leverage Joomla.
We have 3 months before our first customers will deploy.
We have received lots of varying suggestions, it seems to be a "religious" debate.
Our platforms contains both standard as well as unique features. It is critical the themeing can be quickly and easily changed regularly. It is a SaaS.
Users will not be extremely savvy, there for the UI must be intuitive, simple and easy to use.
So, is it JOOMLA and PHP? or PHP from scratch?
3 months? Unless you have a VERY capable team that can crank out bugfree code, you're building on something else. Like syrion mentioned, coding a good CMS is not as easy as it seems. Sure, anyone could put something basic together in couple of days or ever a few hours with the right framework, but doing it right and making it scalable is a whole different story.
Joomla has its issues as does every other open source project out there. However, Joomla also has 2 very important advantages when it comes to SaaS - first, the admin is fairly easy to understand for non-tech people. Not quite as simple as Wordpress, but much more powerful. Much easier to teach than Drupal, your clients will not need to grok nodes or taxonomy. Second, Joomla was written specifically to be extended. templating is a breeze as is extension development. Their MVC is a little different but not hard to grasp. If you have decent programmers they will be able to make Joomla do anything.
Please dear god if you have the choice, don't start from Joomla. You will be much better served by picking a framework like CakePHP, Symfony or CodeIgniter. The MVC model in Joomla is essentially wrong (views pull directly from the database? yuck) and there is so much legacy code and simply bad code that your developers will end up throwing out and rewriting most of what Joomla comes with. I should know, that's what I have been doing for the past few months at work.
Joomla bundled with community builder is a viable option.

Recommended approach to building an online store in 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.

Should I use Drupal or Kohana-type framework for a web "application"

The debate is that I need a PHP Framework/Drupal with the flexibility to add custom features to a potentially large application (web and with an api).
However, with a framework, like Kohana, I see myself tackling and re-inventing the wheel with the simple stuff like account management and cms stuff. Account management and quick data collection, like fast form creation, are tedious in Kohana but appear incredible simple in Drupal. On the other hand, based on my limited Drupal experience, I doubt building rapid custom "features" and allowing users to create "groups" and to manage their own roles within those groups is something Drupal can easily accomplish.
To simplify, is Drupal capable of true Web Applications; where the application is a service and provides custom results to each user? Can it provide a dashboard-like interface for users to change their settings or preferences? Can it aggregate data from particular users to provide better results/info to others?
If so, please point me to some knowledge :-)
I'll admit right away I'm a big fan of Drupal and I have never used Kohana, so this post will be one-sided.
In the company I work for they use Drupal or Zend Framework for pretty much all projects (Drupal being in the majority). Many ZF-oriented people dislike Drupal as it's structure is so far from the object oriented ZF-stuff, and Drupal is "just an CMS". As I see it Drupal is more of a Framework than "just" a CMS, and the best part being that it is incredibly flexible: everything is possible.
And yes there is indeed a module for everything. To be more specific:
On the other hand, based on my limited Drupal experience, I doubt building rapid custom >"features" and allowing users to create "groups" and to manage their own roles within >those groups is something Drupal can easily accomplish.
I can only guess what you mean with rapid custom features, but imo it's easy to expand Drupal with your own modules. Most features are available as (free, community contributed) modules, and many advanced looking features can be easily created for example with the "views" and "cck"-modules.
http://drupal.org/project/cck
http://drupal.org/project/views
Creating groups:
"organic_groups" ( http://drupal.org/project/og)
"og_user_roles" ( http://drupal.org/project/og_user_roles )
These modules together are what you need to create groups that have group spefic roles (and roles having specific rights). There are probably other ways than using "og_user_roles", but I'm advertising it because I've made a few patches for it a few years ago. The problem is usually a bit too many options.
If you want to extend group specific options you could code your own module, but most likely you don't need to because there already is a module for it. For example, there are at least 120 modules that integrate somehow with the "organic_groups"-module:
http://drupal.org/taxonomy/term/90?page=19
To simplify, is Drupal capable of true Web Applications; where the application is a >service and provides custom results to each user? Can it provide a dashboard-like >interface for users to change their settings or preferences? Can it aggregate data from >particular users to provide better results/info to others?
In short, yes. There are so many ways to achieve something you described. But probably they would involve at least the excellent "views"-module. I think of views as some kind of ultimate abstraction SQL layer and UI for anyone. And there are over 300 modules that somehow integrate with Views... ( http://drupal.org/taxonomy/term/89?page=55 )
This sounds that Drupal is all about the modules.. and I know some of my collegues even dislike it for that, because you never get to code fun stuff because it's already been done. At least you can look at the module code and learn from that. Or laugh at it, there's lots of badly programmed modules around too.
When you get to coding modules, you'll probably need lots of time to get used to the Drupal API, Forms API, Module hooks, the Theme override system, and the endless options from contrib modules. But it's worth the trouble.
I find this site very usefull to find a module for some specific need. The site shows the same module info as Drupal.org, but also user feedback/ratings, to find the best option:
http://drupalmodules.com/
If it's unclear, my answer would be go with Drupal :)
PS: D7 should be out very soon. Some might wait for it instead of starting with D6. During D5 people would wait a long time before upgrading to D6 because of missing modules. I believe for D7 the most important modules will be available for D7 very fast. Some research at the moment (04.12.2010):
About 190 modules promise to have a Drupal 7 version the day D7 is released:
http://drupal.org/project/modules?solrsort=sort_title%20asc&text=d7cx&display=table
About 130 modules are already available for D7 (most are included in the previous link):
http://drupal.org/project/modules?filters=drupal_core:103&solrsort=sort_title%20asc&text=d7cx&display=table
EDIT: As a newbie I'm only allowed to post one link, so, I removed http:// from the drupal.org-links
I worked with both Drupal and Kohana.
In my insight it really depends what you want to do. If you are going to make a web application that needs to grow a lot and should be flexible for it's growth then I recommend using Kohana. Kohana is made to keep your codebase clean and supporting in DRY (Don't Repeat Yourself). While it likely doesn't have as many modules as Drupal it does have some Auth and ACL modules.
If you want to be done fast and you don't mind making your application out of others their modules Drupal will get your work done fast. But keep in mind that when you are going to extend you will most likely run into problems that come from modules you don't know. Also it takes a bit flexibility from you.
Ultimately it's your choice. But I recommend using a MVC framework if you are going to write it from scratch.
There is no impossible thing to accomplish. The question is do you want to work with someone else code and try to figure out how to dig inside and extend so it can fit your needs or you want to go with a light framework like Kohana or maybe CodeIgniter(my personal favorite) and drive your own car, although you might need to "invent" some of the wheels.
Go ahead and research what plugins are there to your framework of choice as there are a lot of frameworks providing very good solutions which can provide you with these wheels.
In my personal opinion the time you will spend studying Drupal will be equivalent to the time needed for you to create your basic CMS functionality, but the nerves you will use dealing with stuff out of your control like the core Drupal code will shift the scales in favor of Framework.
The fun stuff about Drupal is what the community calls jokingly rule #35: there is a module for it. Unless you want to do something really tricky, you will often find that the functionality has already been implemented and you just need to configure it.
I am new to both Drupal (7.12) & Kohana (3.2.0)... My experience thus far is that Kohana's documentation SUCKS (or at least, what I've seen of it). And if their website and/or forum is written in Kohana, it sucks as well (slooooow, with overlapping fields, etc.). Whereas with Drupal, it has been clean and so far, very efficient (as best I can tell thus far).
I guess I'm wondering if the comments thus far were focusing on Drupal 6.x and haven't taken into consideration the more recent innovations in Drupal. Any thoughts/comments? Thanks.
As a newbie web developer, I can tell you that you need to analyze the use cases for your web application very strictly. If you are able to cover at least 75% of the use cases you foresee, that's a good start.
With that done, you need to figure if Drupal/Joomla/CMS(x) will give you all of that and with another potential unknown 5-10% feature creep. If so, you maybe better off getting in with Drupal etc.
Else, I think CodeIgniter or Symfony are great PHP frameworks to jump in with. Both offer solid tutorials, video and otherwise, and a helpful community. Kohana, which I am working on, I think you should get into if you really understand PHP and its flaws and realize that speed will be a critical factor. Those are the two big strengths that KO3 brings to the table and you should really need them to use it.
Hope this helps.

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