Why can't i understand Drupal?

Hi,
I guess i am just thinking outloud but why can’t i understand Drupal? I am reasonably intelligent and built my own CMS that is running our site (HTML5 / PHP / MySQL) scores 9/10 on nibbler, gets very good SEO, but my boss is wanting one of our sub sites built in Drupal and i just can’t get my head around it.

I’ve used Opencart for our shopping site and i’ve managed to make a theme and adjust some stuff but Drupal just seems so hard, i don’t get the logic.

I downloaded a fresh copy of Drupal and installed only for it to say i needed to update 2 things before i even started. Both of which i have no idea how to do, have to make some .htaccess changes and install some other plugin?? i haven’t even done anything yet, why didn’t it come with it if it needed it. Tried to create a new theme by copying an exisiting theme and modifying the info files but have some broken include files now.

I have no idea where i am meant to put queries or if i can just do what i want in the template pages.

My boss wants me to have the site up in a couple of months but i don’t see that happening.

:frowning:

Don’t feel bad, I have the same problem when I try to learn any framework or pre-made CMS. It just takes a little bit to get used to the naming conventions and way they go about doing things. For me it would be easier if I didn’t know PHP at all, but it is what it is. You’ll get there, just fight the urge in trying to figure why they are doing it that way and go with the flow by reading books, following tutorials, or what have you.

Yes, it can be tough getting your head around a new system. I’m not familiar with Drupal, but I have heard it has a steep learning curve. Nevertheless, I’m sure there are lots of guides / books / courses out there to help you with this, and I’m sure once you’ve got the hang of it you’ll be fine. Just be careful not to jump in too deep too quickly.

With errors, updates etc. I recommend you always google the issue. I’ll guarantee you others have had the same problem and the answers will be there for you already online. If you get any kind of popup or other messages telling you that something needs to be done, someone else will already have asked about those messages in forums somewhere, or perhaps blogged about them.

thanks both, i guess i just got to that blind panic stage for a bit. What frustrates me most is that i know i can do it my way and be 99% confident that what i have done is secure and valid, and if something does go wrong i know where to look. Using someone else’s system that i don’t know makes me panic a bit as i can’t afford to have 40k visitors on the launch day get a messed up site.

Iike switching a formula 1(indy 500) mechanic with a rally mechanic, both in theory can learn the intricacies of each others methods as they are both working on cars, 4 wheels and an engine, but you wouldn’t want to do that just before race day.

maybe a lot of reading ahead…

thanks

Yeh Drupal isn’t know for being easy to get into!

I evaluated it once and found nothing but tag soup and needing a ton of 3rd party modules to do basic/simple things. I ended up specialising in ExpressionEngine (and more recently Craft) and haven’t looked back.

Are you using 7 or 8?

None the less Drupal is a very advanced and rich ecosystem once you start to get the hang of it. Drupal 8 could be considered one the most balanced open source CMSs in terms of architecture, flexibility, and community. The concept driving the most recent versions of Drupal 7 – 8 are on offering enough tools to build a fairly advanced site without any programming knowledge. For that reason the ecosystem has a very step learning curve because there is a lot of unconventional magic to achieve those goals while also providing enough flexibility for programmers to modify behavior without hacking the core system.

If you have every used Wordpress a “Node” is similar to a blog post. However, unlike a blog post in Wordpress nodes belong to a “Content Type”. Each separate content type can than have a separate set of fields associated with it. The fields can be anything from text to complex types as references to other entities in the system. The site builder can essentially build out the architecture of a complete content structure (database) directly through the admin UI via these “Fields”. More so unlike Wordpress the meta relational database created by using Fields is properly normalized and not just some big gigantic serialized array stored in a single column. Architecturally this makes the meta-relational database more robust and flexible from a programming perspective but conesequently increases complexity dramatically.

Taking things a step further there is also taxonomy which is essentially a way to organize content. Taxonomy includes two separate concepts “Vocabularies” and “Terms”. A vocabulary merely groups together terms and provides the the blueprint for a shared set of “Fields” which completely modifiable via the admin UI through the Fields UI. If you want to add for instance a picture to a term all you need to do is ad an image field through the admin UI and that is it. All the uploading and whatnot is completely, internally hidden unless a developer decides to modify and change the process, which they can through the hook system – Drupal’s “event” system which allows “Modules” to change the behavior of the platform without hacking other peoples code and creating a system that is impossible to update.

The primary advantage of Drupal is the admin UI is completely built for you. Unless you need to do something outside the ordinary the admin UI can typically be relied on to build most of a website touching minimal amount of code. Expand that with modules such as views (in core for 8) and panels Drupal becomes one of the most powerful CMSs on market to build complete sites without touching a lick of code. However, yes it is complex and if you need to debug it and aren’t familiar all that magic that happens behind the scenes looks no where worth it when compared to just writing your own system. If you stick with it though you will learn a lot especially with Drupal 8 which unlike many older CMSs (cough Wordpress) is COMPLETELY re-achitected to use the most MODERN philosophies including Symfony Components, DI, YAML, etc. Drupal 8 really is probably on of the most clever and powerful systems out there and you can learn a lot from it if you just start diving in and exploring. The same can’t be said for Drupal 7 but if you understand Drupal 7 making the leap to D8 will be much easier because the front-end philosophies have remained similar despite the complete change in architecture to OOP, DI, etc. Drupal 8 is very tricky to understand but that is only because it has so much pure power from the admin UI that it is almost unbelievable and is a sumation of Drupals evolution including contributed concepts into core, etc to make them widely available and standardized.

Drupal is something to be afraid of though. It isn’t for the faint of heart. If you are going to take ownership over something in Drupal than you need to know what you’re doing. If not than it might be best to stay in the corner with your own custom solutions. I think that is a complete cope out though. Systems like Drupal are advancing more than ever and not to use them for projects which they are appropriate because you’re afraid or stuck in old ways is unprofessional, and amateur. There is far more resources out there for open source than there is for some custom framework you built. Thinking like the next guy inline they will think your framework is as difficult to use as you do “Drupal”. That is the nature of new code. Better to be using a platform that enforces a level continuity not all contained within a SINGLE developers mind. Maybe that isn’t Drupal that’s fine but I’m tired of listening to people rage about how their code is better than open source stuff which why they don’t use that. It isn’t that it is purely fear to step out of a comfort zone and try something new.

1 Like

Evaluating Drupal on the semantic qualities of the HTML is short-cited. If you don’t like it you can always take the time to fix it if it really is that important. However, if you were to use the system you would learn to understand that those endless divs, etc are there to provide the most styling flexibility possible without needing to touch any PHP. I’m not by any means saying it is the greatest example of semantic quality, far from it but what is lacks in semantic quality it more than makes up for in plenty areas which many other systems can’t even compare.

I was also going to ask who will be managing the site when it is complete. Will it be you, small group of developers, none-developers? Drupal’s complexity caters to medium to large groups of people managing the CMS who are not programmers. If you’re building a site that really doesn’t need that and will mostly be managed via developers anyway than Drupal probably is a overkill. The complexity is offset by flexibility in admin for achieving business goals with little to no programming. Therefore, if developers will be the main ones responsible for the site, updating it, etc and those tasks will not be delegated to others who may not be developers than I would say you have some fire for your argument of using a different platform. The complexity and inherit problems with the system are only worth it when there are individuals who need to manage it who are not engineers.

Thanks for the comprehensive reply. I can see many of your points and i guess i am not looking for someone to say ‘yeah drupal sucks’ as such, i just am confused as to why i find it so hard. As said even setting it up from scratch i am faced with having to fix something.

I would be less grumpy about using/learning Drupal 8 but i have to use/learn Drupal 7 as 8 is still in Beta and i can’t go for a production website using a beta cms. So i am having to learn what i would consider an outdated system to start with.

I am the only website person in our charity, other people work on the website via the admin interfaces but no one else codes etc so it falls on my shoulders if something goes wrong.

It may be partly frustration with the 3rd party company that we occasionally use for sub-sites that use drupal. We lost loads of search engine hits when we changed to Drupal from my code as they didn’t have basics like meta tags (Something i consider a failing on their part). From what i understand you have to install a module to run the meta tags (description etc).

I am not opposed to off the shelf packages but for some reason i just don’t get the logic Drupal uses (i may find wordpress the same to be honest). Opencart shopping software and SMF forum software i haven’t found as much of an issue.

Also wasn’t impressed at the recent Drupal security incident with millions of sites hacked and Drupals response of ‘you are probably screwed’,

steep learning curve here i come :slight_smile:

I have tried to argue my case that we don’t need something as complicated as Drupal as the site i am building is basically a frontpage, results/search page and a details page (about 1200 outputs).

Just have to do my best i guess, if my boss wants me to do it and i’ve made him aware i am struggling to change to a new system then what more can i do.

Ah this is what i don’t understand. I’ve just spent 30mins reading up to solve an error that drupal said i had to fix by putting a .htaccess file in the /tmp folder. I found the drupal doc the error linked to and followed the instructions and sent an email to our web hosts asking for this to be done, only to be told it is pointless to do that, as the /tmp directory is auto cleared, and he linked to another thread that said just ignore the error message?!

I don’t mind learning stuff but i hate when i try and it fails and its not my fault. wasted 30mins on an error that doesn’t exist.

Drupal is a good platform for that kind of thing so I don’t blame him. Like anything it is going to take time and time is probably well worth it from a business perspective considering if you leave or get hit by a bus they aren’t stuck with some custom platform that no one knows. At least using something like Drupal guarantees longevity of the underlaying system and a pool of resources who are available if something happens to you. When working for an employer it is in their best interest to use tools with inherit longevity. Working with tried and true open source solutions nearly 100% guarantees the next person inline will have a place to start and community to fallback on with docs at the very least. In a business atmosphere where people come and go all the time it isn’t in the best interest of the employer to have employees building things that only they themselves know and can maintain. Cause chances are are when the next person roles in they will want to replace it all for the same reasons you don’t want to use other peoples code. It is a never ending cycle that can be halted to a degree by using well backed, community driven solutions over an individuals own proprietary code.

you are right i know, but the last people who built our drupal sub site i think were learning so it isn’t very well put together so it needs to be completely re-done anyway.

I agree it does enable others to replace me perhaps more easily but my custom site just seems to work better/faster as it was built for the job in hand not a cover-all.

sorry just venting frustrations.

I work with a secondary site that is Drupal based which was built by individuals who didn’t really know Drupal as well. So I can understand your frustration – especially for someone brand new to the system.

Every time I look at the generated Drupal-stew, I feel your pain.

I watched a team of developers attempt to make parts of a Drupal site accessible by adding a crap-ton of aria-roles to a mega-menu. Of course, because it was a complicated, nested-to-hell menu, they screwed it up (and with aria-roles, a little screwup will totally break your thingie). Luckily, Drupal has a pretty good a11y team, with the likes of Mike Gifford and Everett Zufelt, so lots of things are correctly accessible out of the box. That might be an incidental gain coming from your custom system (unless you had carefully dealt with accessibility in your custom system).

Hundreds of nesting divs are the pain and suffering you pay so your secretary can point and click something to add some content. It really is a CMS, Content Management System. It’s meant for content creators, and not meant for developers. This means developers are the ones who have to hump to get things rolling… as opposed to many other systems, where it’s the writers and content creators who have to hump.

You need to tell your boss that if he really wants Drupal that bad, he MUST accept that it will take you a buttload of time. Lots and lots of time. This is not WordPress. The half-assed stuff you saw in your sub-sites were likely that bad from people who’d only been working on it a month or two. Expect your confidence to go up after a few months, not before.

Definitely read all the books and blog posts and whatever, because you’ll read something and like a week later come against a problem that you only would have had the vaguest idea of what to do because you read something about it earlier. Reading about stuff that makes no sense eventually helps you when you are actively dealing with something that makes no sense, simply because the Drupal system is huge-- I think it might be the largest, most complicated CMS out there. So the more you encounter stuff, the more it will start sticking.

There are also Drupal groups where you could post questions/experiences exactly like the one you posted here about the /tmp folder-- and they’ll be able to explain what’s going on which will definitely make you feel better if it really does end up that you’re supposed to ignore the warning. I get the jeebies when I’m told to ignore a warning, but if I know why then I can understand why I can ignore it, and that makes all the difference.

That is a spot on analysis.

The only point I would argue is that once you become familiar with the system and ecosystem in general it becomes much easier. However, that can be said for anything.

Things like fields, views and panels are amazing but having to step through and understand how that is all actually built is a painful experience to start. You will want to aid the process by setting up xdebug. These days I don’t know how I EVER made my way around source for CMSs and Frameworks without using xdebug. With xdebug you can logically step line by line through code as it executes in real-time, set breakpoints, and conditional matches. Highly encouraged as it increases productivity and aids in solving problems yourself regardless of familiarity of the source.

Let me first say I don’t have an education in programming and I love the Drupal product concept. I started investigating Drupal at version 6 (everything was Views module and CCK), but to date all the projects I’ve completed have been in WordPress. I’ve yet to understand Drupal sufficiently to produce a complete site to my level of satisfaction. Which is not to say I haven’t created sites with Drupal. You can have a content site up in a weekend. What I’m talking about is implementing the customizations and visuals to a professional level. And, I’m only working as a freelancer/part-timer. So, take my advice for what it costs you.

First, I suspect the biggest hurdle to gain traction in Drupal site development is the complexity of the framework as software. I understand logical systems, but how idioms and algorithms are combined in different ways underlying the design of Drupal, sometimes specific to PHP, and frequently subject to the style of the project. These are topics of software programming which are arrived at through a scaffolded software engineering education, and not a piecemeal catch as catch can open web education.

For example, things like Hooks and Callbacks. I understand what these idioms represent, but I can’t get my head around them in terms of all the events occurring in the page build process. On top of that, there are the esoteric parameters for many function calls. Functions work in the way their author created them, and not necessarily following some common idiom. If you don’t understand all the arguments and where in the build process these vars come into scope, it’s frustrating.

Making matters worse, the very notion of a framework built with PHP with documentation for developers, site admins and content creators makes finding answers very difficult. Many of the people writing about Drupal (this was four years ago) were continually reiterating the same damn stuff over and over again. Read one book on Drupal and you read them all. If you could find one new piece of the puzzle in a whole book you were lucky.

Ultimately, I could never predict all the implications of some change I wanted to implement within the framework. It would take me weeks to learn all the problems I created for myself when I wanted content to be designed in this or that fashion. This was not the way for me to progress.

My best attempt to understand how Drupal works was a learning project I created after reading The Definitive Guide to Drupal 7. (Benjamin Melançon; et al. Apress. 2011). This book featured many flow charts which is a language I am very comfortable with. I copied every single flow chart from that book into a giant PDF and attempted to stitch each of these together. After some weeks I created a 2x3 foot PDF plot which I carted off to a local Drupal meetup. I showed this to a few Drupal developers and asked if they could help me connect some of the sections. But, I couldn’t understand what they were saying, let alone how they were thinking. I couldn’t have a conversation about the process. Since my software knowledge was piecemeal gathered from the various Drupal books I read (and an online programming course here or there), I didn’t have recourse to a higher level discussion–a more fundamental discussion–which I could thread through these Drupal discussions.

That was really disappointing. I really hoped I was going to get it that time.


That said. If you need to make this happen, learn Drush and use Git. These products are integral to how the product is developed. Become involved in the Drupal Community. If, unlike me, you know a sufficient amount of how software is designed, you will find very knowledgeable individuals who will answer your questions. Stick to the fundamentals of Drupal Core and limit the number of add-on modules early on in your development until you get the hang of it (even to the point of delaying features for a future version). I don’t know a lot, but these few things will help any beginning Drupal developer.

It may be because of less knowledge of programming language . Drupal is for professionals not for beginners . Try Magento or Prestashop

been coding sites from scratch for 10+ years (CSS, PHP, MySQL) with 1 of my site receiving a 1.2 million+ visits a year and another ~1 million. It’s fully validated and responsive to mobile devices. Loads in 1.5secs according to tools.pingdom.com. Gets 9/10 on nibbler. Has very good SEO and the indexed pages have over the past year increased significantly. Just to be clear i’m not a beginner, i just don’t get drupal. It’s like a black box with an incredibly complicated way of communicating with it. I have to do so many extra things than i normally do to do the simplest thing, switching between doing things on the web admin and the actual coded pages. The caching drives me mad.

Also i’ve only had the fresh install up for 2 weeks and already have 25+ crap user account requests!

Saying it’s for professionals doesn’t really justify it being so hard to learn. I guess it keeps people in jobs.

I think it’s for professionals in the sense that it’s a finely tuned tool that once you learn it you can more easily create other Drupal sites.

Not professional in the sense that you need to be an expert programmer (though that wouldn’t hurt).

And not really for a one-off site where the learning curve outweighs the benefit of learning it.

Working in an ecommerce department I have first hand experience with Magento as it runs our main site. Magento is for ecommerce websites. While it does have CMS possibilities they are very lack luster in comparison to a full fledged CMS like Drupal. With that said both have challenges with using them. It isn’t fait to say either are or aren’t for beginners. I think what is fair to say is custom development on either platform takes an advanced understanding of programming. Though I would agree that Drupal has a higher level of complexity to understand due to all the magic that tends to exist which doesn’t in Magento. Magento is programmed in a very straight-forward manor because it doesn’t really cater to the needs of a site builder only data entry within an ecommerce setting. Comparing Drupal unless you are talking Drupal Commerce to Magento isn’t really a comparision at all since each system has contrasting focuses.