I am a big car, and I'm a strip bar, Call it fake, I call it good as it gets.
The easiest way to get started with Drupal is to do some stuff with Drupal, without writing any code. Yes, there is a module for everything in Drupal. But what makes Drupal even more powerful is how you could get these modules work together, again without any coding!
So, What is a Drupal Site Building Recipe?
Well it could be a bunch of modules that you could put together to build a site that accomplishes a set goal. A set of instructions on how you configured the modules to work together would make the recipe even more interesting.
Recipes are so popular with Drupal, that Drupal Documentation has a dedicated page that lists popular recipes contributed by the community - https://www.drupal.org/documentation/site-recipes
The same is the reason why you find so many “cookbooks” for Drupal that try to teach Drupal using recipes!
A recipe could show how to achieve something using a Drupal Site. A few examples from the existing list from the documentation:
Well, it does not stop there! If you wish to make your recipe easily accessible and configurable, you could also go a step further and consider building a distro that makes setting up your recipe even more easier!
“Distributions (distros) provide site features and functions for a specific type of site as a single download containing Drupal core, contributed modules, themes, and pre-defined configuration. They make it possible to quickly set up a complex, use-specific site in fewer steps than if installing and configuring elements individually.“
You can find the popular distros listed here. Commerce Kickstart is a great example which allows any Drupal Site Builder to setup a fully functional ecommerce site in minutes. Conference Organizing Distribution is another great distribution that has been enabling Event Organizers around the world in setting up an event site in minutes!
With Drupal 8 around the corner, the need for such recipes and distros is even greater than it was ever before.
How can you set up faceted search on a Drupal 8 site?
How can you setup a video player on Drupal 8 site?
How could I build a site like Stack Exchange using Drupal?
What are the options available for setting up a Multilingual Site in Drupal?
What are the module options available? Which one should I choose? How is one different or better than the other?
- These are all questions that have been discussed, answered, and documented for D7. With D8 around, all of these questions become relevant again and need some mind blowing recipes to help users understand the options available, to choose the ones that fit them best and to learn about how to use them.
Have you accomplished something significant with Drupal recently that you would like to showcase? Do you have a new D8 recipe, or a new distro that you are working on, that you would like to present at the next Drupalcon happening in India? Here is your chance!
Only a few days left before Drupalcon Asia closes its door to session proposals on November 2nd. Submit your session proposal for the Site Building Track @ https://events.drupal.org/asia2016/submit-session
Also, besides recipes, there is a bunch of other stuff that you could present in the Site Building track. Check out the track description for more details and suggested topics. You can also check out the current proposed sessions here.
See you at the con with your recipe. Meanwhile, Keep cooking!
We are looking for volunteers to help us promote Drupal 8 at OSCON next week. Now that Drupal 8 finally has a release candidate, this is one of the most important moments to be promoting our project, and you can help.
“So can the world’s most flexible CMS not do that?”, the client asked.
“We just want to have a newline in our block title and italize the first part, in a smaller font.”
From the makers of Jaws
False Teeth II
It seemed a reasonable request. But for reasons of consistency and security, Drupal core’s default behaviour is to indiscriminately filter/neutralise all markup in all titles.
"Oh and we may want to embed a link in that title too”, the client added.
“Let us check if there’s a module for that and get back to you”, we said, somewhat worried there might not be one.
Turns out, there is a module for that. It’s clever and small and secure and works a treat (4000+ installs can’t be wrong): HTML Title.
But it doesn’t do blocks.
Plus the author has stated he draws the line at non-semantic HTML elements, i.e. at some of the tags we needed. Which is fair enough. Allowing too many tags may open a can of worms ...
So how to keep this client (and no doubt many others) happy?
You could hack core. No I didn’t write that.
You could abuse, or shall we say, re-purpose through CSS, one of the tags allowed by HTML Title. In very much the same way as those scaleable font icon libraries like FontAwesome do, you could redefine the <i> tag for instance, to effectively mean a line break. Similar for <mark>, <q> etc.
Not sure how one would or want to do <a>?
Also to a content editor this is not an intuitive approach. And it still wouldn’t helps us with our block titles.
So we went back to the client and said: “There wasn’t a module for it…. but there is now: HTML Title Trash”.
Like its parent, this newborn is totally XSS-safe. To keep the admin title listings on the admin/content and admin/structure/block pages presentable, the module strips out any tags there, while letting those same tags through to do their thing when content is presented to the visitor.
Now you too can satisfy those demanding customers. Without coding or hacking core.
For beginner Drupal developers amongst you, both modules are worth checking out, as they use some well-targeted, less common hooks.
File under: Planet Drupal
Have you ever needed to perform an action after a node has been inserted or updated? In this article we are going to see how we can trigger functionality after nodes have been inserted or updated. And no, it's probably not what you think.
By default, there is no hook that provides this in Drupal core. Sure, you have hook_node_insert(), hook_node_update() and hook_node_presave() but all of these are called within the scope of node_save(). This is important because, at this point, we cannot rely on the database for any data that may have been affected by the node save process. As the documentation for hook_node_insert() says:
when this hook is invoked, the changes have not yet been written to the database, because a database transaction is still in progress.
When you have to deal with something totally external to the node in question, this may not be a problem. Heck, you might not even need the database. But there are those one or two cases in which you do need data that has been affected by the process.
For example, when inserting a new node, various actions take place. One of them can be Pathauto doing some magic with the node title and saving a path alias for this node. So if you need to alter this final alias in the scope of hook_node_insert(), you cannot rely on something like path_load() to get the node alias data because it might have not yet been written. I've actually seen it return different things in different cases.
What you can do then is register a function with Drupal that will get called just about when Drupal is finished with the request. It's actually very simple. You just call drupal_register_shutdown_function() with the name of the function you want to be called. Additionally, you can pass as further arguments whatever it is in your context you want passed to it. It's kinda like subscribing a function to an event.
So now when the request is finishing, we know the node_save() database transaction has completed and we can rely on the data from the database. Using path_load() now will guarantee that the latest path for that node is being loaded.
Hope this helps.