I have been planning a little side project of mine for a while now. Since the beginning I had planed on writing a CRUD application from scratch myself. Now after having a little more experience with web programming I think I would save myself a ton of time by using a CMS but being unfamiliar with these systems I do not know if I can do what I need to.
Users will create a profile.
Users will upload images.
Some users will be selling their products, others will be buying them. I will take a percentage. Think ebay without bidding.
Many javascript and php features such as image rotators and an app so users can crop their photos.
Will be integrating Facebook API.
Main reason I am considering a CMS is not to save time, but to make a safer website. I am not experienced with eCommerce and do not want to put my users at risk. Everything else mentioned I can and have done.
Use CMS like Drupal or just start from scratch?
Most of the CMS have the basic functionality you've mentioned in 1,2 and 5.
You'll have to write your own extensions for 3 and 4, or search for existing one that fits you.
Writing an extension for CMS will take less time than writing entire CMS from scratch.
If you want safe and stable code, then it's better to use existing CMS.
I agree with w3b4 that an open source CMS will save you time and give you major security and support advantages.
My experience of open source CMSs only extends to WordPress. I am sure you could make it do all the things you want with a bit of work, but my gut feel is that it might not be the best platform to start out with if you main requirement is buying and selling.
However before you strike it off your list, check out the wp-ecommerce plugin and its various add-ons. This product has developed a lot in recent years and might offer what you need out of the box.
Related
I’m looking for some advice when it comes to custom CMS development.
Wordpress has been perfect for me before a became a developer. I used to use page builders like Elementor & WPBakery.
When developing within WP, would I need to develop a page-builder for people (without coding knowledge) to edit their pages? I’m aware of Gutenberg, is that able to edit coded pages or would it not be able to read anything as it wasn’t built using Gutenberg?
If so, would it not be better to develop a Custom CMS similar to Wordpress? That way you are able to offer a blank canvas CMS that you can brand as your own?
Thanks in advance.
Interesting question! It will require some prior research on your part, as there is no obvious answer. Below are my thoughts on the matter, but it the decision is yours to make, as the project requirements are unique and also the time you can invest in it.
When developing within WP, would I need to develop a page-builder for people (without coding knowledge) to edit their pages?
A: No. Gutenberg is perfect for this.
I’m aware of Gutenberg, is that able to edit coded pages or would it not be able to read anything as it wasn’t built using Gutenberg?
A: It won't read anything that wasn't made with it, but you can try recreating those pages with it. Depends on the design, but it shouldn't be hard. If it is a site for a client, you can ask them to recreate one or two pages and see how they feel. They will answer this question for you :)
That way you are able to offer a blank canvas CMS that you can brand as your own?
A: You can "rebrand" the WordPress admin with such a plugin
If so, would it not be better to develop a Custom CMS similar to Wordpress?
A: It all depends on how comfortable you feel with WordPress and Gutenberg, code-wise. You can do pretty much anything, if you understand the PHP, React (Gutenberg is written in React) and logic behind WP, so you won't need a custom CMS. Again, it all depends on your skills with the technologies. If you rate yourself a 10/10, no need to think about it, but I guess you wouldn't be asking this question, if you were.
Pros of going with WordPress and Gutenberg:
You already have all the necessary tools.
A ton of supporting plugins, already developed by other people.
WordPress has one of the most well-maintained codebases out there, so you will have a great start, compared to building a CMS on your own. Even if you decide to create your own plugin, you have a set of rules and practices that you need to adhere to, which is great for starters. You also have all the necessary components - DB, back-end and front-end ready.
Gutenberg is pretty stable right now and you can install the plugin, because the code that is implemented in WP core is not the latest. It is great for building pages, when you don't know code. Look into all the different blocks it offers by default and think if they cover your requirements. There are also a lot of extra blocks you can add.
The popularity of Gutenberg is growing and the community is slowly, but surely moving in that direction, so making this project with Gutenberg would benefit your future career as a WP developer, if you are interested in building one.
On the point of growing community, you will find answers to a lot of the common issues.
Pros of building your own CMS:
You will see the whole process - DB design, connection and expanding. Back-end and front-end development, user authentication and administration. For me this is a con, because there are many unexpected problems, which WP has solved. It is also very time-consuming, so if you have limited time for this project, I would advise against this.
You can make a slim CMS, which covers only your requirements and you will know the ins and outs of the code, so any future changes and expansions will be easier for you to make.
As you said, it will be easier to brand as your own and you can build the Admin side of it however you want, even though there are defined UX standards, which won't allow you to go very wild. It will probably resemble the WP admin in one way or another. Check out these admin page designs, for reference.
Conclusion
Personally, I would go for WordPress and Gutenberg, because I have had mostly bad experiences with building everything on my own. I am not a good enough coder and that is OK, because I can use all of these tools, built by awesome developers before me. So please keep in mind that building your own CMS will take a lot of time, if you want to make it stable and secure. There are also alternatives to WordPress.
Should I avoid using a CMS if I want to be able to quickly make good sites with more features/options to customize than Wordpress?
I want to become a better webdeveloper and able to quickly make good, fast, secure websites with lots of functionality without being limited so as I'd be with Wordpress. I don't see writing lots of plug-ins to reach the same functionality as a nice solution for doing my own programming.
I have written a few games, quizzes and other scripts I'd like to be able to recycle or easily adapt to work with the CMS.
I currently have a multi-lingual website that works with a /nl/ and /en/ part, that has a few self-written games I wrote in PHP.
CakePHP has a very good CMS called Croogo. It's still quite a young project (still in beta and being actively developed), but the great thing about it is that its a Cake app so it's coded to the well-documented Cake standards.
Whereas customizing/extending Wordpress, Joomla, Drupal et al would mean you'd have to invest a huge amount of time learning about their respective frameworks, all for the sake of one part of any given website (the CMS), if you learn CakePHP, you're learning a much more advanced and flexible framework that can pretty much be used to do anything well beyond the confines of CMSes.
If you learn Cake (or if you already know Cake) you'll find that you already understand Croogo without having to invest much additional time at all. Code you write in Cake can easily be packaged to be a Croogo plugin and even if Croogo doesn't stay around for the long term (I hope it will!), it wouldn't be difficult to re-factor all the plugins you've written to work in any other Cake-based CMS that comes along in the future, or even your own Cake apps.
Croogo is pretty basic, but quite powerful. It has a Wordpress-like feel to it, it supports nice URLs via an amazing reverse-routing system, the /en/ /nl/ language thing you mentioned works out of the box and it's very easy to get any of the huge array of Cake components and plugins working in harmony with the CMS through the use of hooks.
I'm currently working on a project using joomla and there are a ton of custom features that I need to implement. I usually have to create a plugin or module in that case. It's a pain. I'd much prefer doing most of this from scratch instead of hacking at the code. If I had a choice, I would not use a CMS. I hate them.
I think ultimately it's about long term support. When you build a custom CMS in cake or another framework it is much easier and faster for you to customize and build the way you wan too. This works great if this is a project you are planning on supporting (by this I mean bug/user support for when you unleash this CMS on non devs). This can become a headache pretty fast when things need updates and clients are looking for fixes and changes. It's completely manageable, just more of a headache then something with community support.
That being said, if you are comfortable in wordpress the amount of support that exists in that community is huge. So often times you can leave the project knowing updates for the CMS and plugins will come in at a regular speed.
TLDR So if it's a project you know you will be supporting long term (or people with the same comfort and skill level as you) then I would say build it your self for ease of build and customization. If this is a one off or something you plan on handing off to a client with little to no support, building inside of a community supported platform is best.
I really comes down to priorities, if you what to build a site really fast a CSM is hard to beat, but you do not have the same control over the core as you do when you wright it from scratch.
But you can do most any thing with plugins/modules so the control is there if you are willing to work for it. If you wright it your self you will be the only set of eyes most of the time so it will in most cases be slower to implement new standers and security fix's (because you will need to find them first) but with a CMS you will have many people working to make it better and safe at the same time.
If you want to be well rounded I think youe need to be able to do both, you can't control what the customer wants to use some times.
You can make site very quickly with a CMS like Joomla but the problem is even having over 7000 extensions sometimes for your particular purpose you don't find an extension and developing an extension can be real tough. it requires a comprehensive knowledge of Framework. If all you need to do is manage content CMS is the best choice. If it is like a web app and require more interactions go for some framework which provide the basic skeleton of your app. e.g. for CRUD operation many frameworks provide scaffolding feature and make this thing a piece of cake. CakePHP, CodeIgniter, Kohana are some of the best PHP frameworks you can use.
Using Chinese Cms DedeCms or phpcms And developer it more easily !
I like PHPCMS, it works with nginx, fasctcgi, mysql on linux or windows.
I use it to make portal site or enterprise sites group. The multi-site architecture and PHPSSO works well. Template engine is also strong enough.
take a look at big mysite: xinm123.com
Most important thing: it's open source.
I have worked on websites before and always hand coded in each. But as the size of the website grew, it really became difficult to manage them. Our is a college fest website which has a number of online games (like online trading, woodstock , forex and several online quizzes ) . This year we are thinking of migrating to Drupal for this website. Would it be a good choice ?
Drupal will do a fine job of managing users and associated information about users. It will create a framework that you can leverage to integrate your games into the system.
However, the games themselves will likely need to be translated into using the Drupal API, which isn't trivial. Drupal's learning curve can be steep, particularly if you have your own style of doing things.
Having said that, Drupal is extremely flexible and is more aptly called a Web Framework than a Content Management System.
I suggest you create a test version of your site on a local install and see how it feels to try and integrate one of your existing games into the Drupal framework. You'll know quickly if you like it or not.
Drupal is flexible enough to be used for any kind of website, but it's primary focus is around content-centric social networking or community sites. It works great for content pages, blog posts, products, etc. If you are building more of an "application" (ie, a web email client, web-based games, etc),you will have more work to do, to work to customize it.
I would like to ask those who are experienced with building a website with Drupal. I got a job like this, but I'm more interested in programming. I got also another job offer and cannot decide!!
How often do I get to programming/changing code in Drupal, when building a site in it? Isn't it just about clicking around and downloading modules?
the other job is different but i didn't want to write long descriptions here. This job with drupal got all the positives, but im afraid that its less programming, more clicking and im trying to learn more programming. the other job is classic php programming with company internal framework.
thanks guys
I work in a company where I mostly do Drupal development. Now it's hard to say anything concrete about your job offer, since we don't really know the company etc. There's not really a reason why doing development with Drupal should be any less coding than doing development with some other PHP framework.
You get a lot for free with Drupal, the whole CMS part, all the modules on drupal.org, and yes there will be some AI configuration, but it's usually not that much. All the configuration part of a Drupal and modules is pretty easy if you know what you're doing. For me I spend around 5% of my time for a project doing configuration, making views (a drupal module you can use to create displays) etc, the rest of my time, I use hacking away in my code editor.
As a drupal developer, you mainly do two things.
Write code to add functionality
Write code to alter existing functionality.
Drupal is run is procedural, so there's not much classic OO, instead you write code that gets executed when something happens. Fx a user logs in, then you get a chance to modify the user, do some things like counting how many times the user has logged in.
An important part of Drupal is also presentation. In Drupal we call this theming. Theming is also very code heavy. Drupal is very flexible, so you can overwrite functions used to generate the markup in your theme. These are classic PHP functions. Then there is the whole css, html js part as well.
If you have the chance to do Drupal development, I think you should take it. There is a massive demand for good Drupal developers, that know how Drupal work, and how to use the APIs. It will be something you can use to find your next good job. Knowing some random in house PHP framework, will probably not help you as much in terms of finding your next job.
It's going to depend on how much you want to customize Drupal. You'll typically get to spend some time altering code to change the layout or whatever other UI-related requirements your employer/client would like.
As far as altering the core of Drupal, you wouldn't want to do that anyway or you could run into trouble when a new version becomes available and you want to upgrade. Any custom coding would instead be done in the form of writing Drupal modules or plug-ins.
Comparing your two brief job descriptions, the "classic php programming" option sounds more like what you want to do. There simply wouldn't be a comparison between doing development in Drupal vs. doing development on some company's internal framework, but either way you would get some experience.
Don't let this answer guide your decision on the offers. Pick the one that feels right and works best with your lifestyle. You can always do your own research and development outside of work if you wish to gain experience or knowledge.
It heavily depends on the project. I work as a professional Drupal developer for 2 years.
Normally making a Drupal site consits the following steps:
the site builder gets the spec
the site builder makes a research what modules to use
the themer makes a wireframe
client accepts the wireframe
the designer makes the actual design
the themer starts implementing the design
the site builder starts installing and configuring the modules
if there are problems which can't be solved with the available modules, then the developer gets a specification
the site builder finishes site functionality and applies the theme
testing
deploying
As you can see, your job will be depend on which role do you work. If you apply for a site builder, then you don't have to code much. If you get hired as a developer, you will most likely end up writing bigger or smaller modules for different projects (this is what I do most of the time). At smaller companies, the site builder and the developer (sometimes even the themer) are often the same person.
However if you want to make sure that you will write code all day (and you don't know what roles will you fulfill at the Drupal company), I rather recommend the second job.
Or maybe other OS cms?
I want to form a members website, with registration, member profile and member personal photo galleries
What would you suggest? I'm pretty advanced with PHP just don't have the time to develop from scratch
I don't know much about Drupal but if you're using Joomla you may need to install something like Community Builder and/or Simple ACL. Joomla's default user management isn't great.
Drupal does what you are asking from a basic install with quite a degree of fine grained control over members, profiles, permissions etc. I have set several up with little or no extra modules, plugins or programming.
I actually run one site with several hundred members with not problems. I am not saying you cannot do this with Joomla, just have not had the experience. I think Drupal may well be more "community" oriented in this respect.
I vote for Drupal. Even Obama has voted for Drupal.
Joomla and Community Builder / JomSocial should be a nice pair.
In my experience, Drupal is far more flexible than Joomla. If you're comfortable with PHP, I'd recommend picking it.
Definitely Drupal, especially if you already know advanced PHP.
Nobody has great user features out of the box, but Drupal has more and better quality user-related modules.
Look at drupalmodules.com for 'user' modules in the 6.x versions, and you'll see tons of related modules for each one you check out.
There are modules for advanced profiles, for a percentage (of the profile) completed, user badges to make them feel special, imagecache for excellent image support, image upload with cropping, ckk and views can setup many different kinds of photo galleries from scratch so they are completely customized for your site, ubercart if you want to sell premium memberships, etc.
I think both Drupal and Joomla would be able to handle creating a basic version of what you describe. The turning point is going to be, what more you want to do.
One of Drupal's strengths is first truely uncovered when you develop. You can very easily customize the look and feel of your Drupal site. You'll have more fine grained control of both what it does and what how it outputs it's markup etc. It's a powerful tool, only downside is that it can be a bit hard to understand for normal people. But knowing PHP that shouldn't be a hindrance to you.
I already created 2 Drupal Sites and 1 Joomla Site with this Feature.
Since I've worked with Joomla some years too, I think I can give you some Hints on it:
Drupal is WAY more flexible and professional than Joomla. But you have to put some effort into it. But if you know how to use it, it will do what you want. And since Drupal itself is so flexible the core does handle almost every feature you need. So it is possible to mix a lot of features together and do things nobody has thinked of before.
If you use Joomla, you have to pick a module for this task (like CommunityBuilder http://www.joomlapolis.com/) and while this module is very powerful, it may work together with other modules, but likely it will not.