Sometimes you need some ugly behavior in a web-site for making customer happy, like changing some piece of the template when changing web-site section.
With the standard tools, you can create different content-types, and after theming each content-type with a custom template file (creating a new copy of node.tpl.php to node-foo.tpl.php, where foo is the name of the content-type). The problem with this approch is that is not easy to change the content-type of an already saved node: you can use a module for doing that, but you will lose every custom cck, and is not what i want.
So i will do the work client-side, with JavaScript. I’ve created a script.js inside my template dir (it will be autoloaded):
window.onload = function setSidebarImage() {
// Check that I can find the cck where the background color is stored
if ($(".field-field-sidebar").size()>0) {
// Get him
var my_div = $(".field-field-sidebar").get()[0];
// Digg down to get the color
color = jQuery.trim($(".field-item",my_div).get()[0].innerHTML);
if (color=="") color="blue";
// Get the sidebar
var barra = $("#sidebar-left");
// Change the background image with a custom one
barra.get()[0].style.backgroundImage = "url('"+Drupal.settings.basePath+"sites/all/themes/foo/images/sidebar/bg_"+color+".jpg')";
}
}
.field-field-sidebar is the class assigned to the div that contain a cck field (with display: none, for not showing it to browser): you can configure it thru cck with a drop-down list with all the custom background available.
As homework, you can implement a check of existance of #sidebar-left, or it will return an error when there isn’t =P
🇬🇧 🇺🇸 If you found value in my content, consider supporting me by treating me to a coffee, beer, or pizza. Your contributions help fuel more quality content creation.
🇮🇹 Se hai apprezzato i miei contenuti, considera di supportarmi offrendomi un caffè, una birra o una pizza. I tuoi contributi aiutano a creare contenuti di qualità.
- Paypal
- BTC
- ETH
🇬🇧 🇺🇸 If you have found inaccuracies or wish to improve this article, please use the comments section below (after clicking on Load Comments).
🇮🇹 Se hai trovato imprecisioni o vuoi migliorare questo articolo, utilizza la sezione commenti qui sotto (dopo aver cliccato Load Comments)
Comments