Upgrade Your Drupal Skills

We trained 1,000+ Drupal Developers over the last decade.

See Advanced Courses NAH, I know Enough
Jun 25 2018
Jun 25
Drupal Europe

Drupal Europe is both a technology conference and a family reunion for the Drupal community. Bringing together 1600+ attendees, it is the largest community driven Drupal event taking place on the European continent this year. For anyone connected with Drupal this is a unique opportunity to share your experience, learn, discuss, connect and contribute back to the community.

Being a community driven conference, we wanted to focus on real life case studies and not the usual technology driven structure. So we’ve introduced industry tracks which focus on specific industry sectors.

Photo with CCO licence via Pexels.com from StartupStockPhotos

The Higher Education track is for anyone using Drupal or thinking of migrating to Drupal at a college or university who is looking to connect with other Higher-Ed Drupal users.

If you have experience of delivering Drupal solutions in the higher education sector or are looking for inspiration on how you continue to develop your CMS further, this is the right track for you.

Drupal is a popular choice in higher education, and many of us are using it in creative and inventive ways. With Drupal 8, the opportunities for exploration and experimentation expand even further — from headless Drupal to top-tier configuration management. Let’s showcase our successes and best-practices with Drupal 8!

We know many universities are still on Drupal 7 and are keen to migrate to Drupal 8, so come to share what works for you and see wins from your peers.

Photo with CCO licence via Pexels.com from StatusStockphoto

Have you launched a Drupal 8 project recently that you are proud of? Started a campus Drupal users group and have tips for others looking to create their own? Developed a great user support model for your content editors? Conquered decoupled Drupal with your frontend stack? Share your awesome projects and lessons learned with your peers.

  • Education sector
Photo with CCO licence via Pexels.com from Pixbay
  • Drupal in a Day (how Global Training Days got to be a localized event)
  • From CMS to LMS
  • Web accessibility in higher education
  • GDPR and childrens information
  • Javascript for higher education
  • Migration from Drupal 7 to 8
  • How Drupal 8 API-first helps to
    integrate with existing IT-Infrastructure
  • Build your own Drupal Community

Session submission is open and we ask you to submit interesting session proposals to create an awesome conference. Session proposals are not limited to Drupal and all topics in relationship with Higher Education are welcome.

Please also help us to spread the word about this awesome conference. Our hashtag is #drupaleurope.

If you want to participate in the organisation or want to recommend speakers or topics please get in touch at [email protected].

Drupal is one of the leading open source technologies empowering digital solutions around the world.

Drupal Europe 2018 brings over 2,000 creators, innovators, and users of digital technologies from all over Europe and the rest of the world together for three days of intense and inspiring interaction.

Drupal Europe will be held in Darmstadtium in Darmstadt, Germany — with a direct connection to Frankfurt International Airport. Drupal Europe will take place 10–14 September 2018 with Drupal contribution opportunities every day. Keynotes, sessions, workshops and BoFs will be from Tuesday to Thursday.

Jun 03 2012
Jun 03

On Saturday, June 2, the team at FunnyMonkey participated in Hack for Portland Schools. The event was designed to brainstorm and, if possible, build, tools that help foster connections between schools and their surrounding communities. Research within Portland shows that nearly 85% of people living in Portland do not have a child in the school system. Despite this, however, many of these people have a strong interest in contributing to their schools.

However, despite the desire of people to help schools, and despite some areas where schools say that they would like community support, there are still ummet needs. These unmet needs are exacerbated now more than ever, as public education has seen several successive years of funding cuts.

Hack for Portland Schools

Our app aims to facilitate connections between schools, the professionals within schools, the students learning alongside these professionals, and people outside schools who are in a position to help.

It's also worth noting that the toolkit we are building can be used equally well by a school, a school district, or a non-profit organization bringing goods and services to schools and communities.

Our app lowers multiple barriers in connecting schools/organizations and volunteers:

  • It allows schools/organizations to define and publicize the areas where they want help;
  • It helps volunteers identify the areas where their expertise or resources will do the most good;
  • It eliminates the need for a third party to hold onto information for a school, and for a school or district to be dependent on a third party system;
  • It creates a mobile-friendly signups that work on any modern mobile device.

Using our app, a school/district/organization can create a mobile version of all signup opportunities. So, when people are doing outreach, they can sign up volunteers on the spot, and immediately get them into their database. This eliminates the gap between a person's desire to contribute, and the inertia that must be overcome to actually follow through and contribute. This also allows the organization seeking volunteers to do more focused outreach, as they can communicate with people who have already expressed an interest to contribute to a specific project.

Ideas for future expansion include:

  • integration with other donor apps via their apis (Kickstarter, Donors Choose, etc);
  • for organizations serving a broader geographical area, the addition of geographic data to allow for mapping of opportunities;
  • iCal integration;
  • in larger install, including more metadata about events to allow for more precise categorization of events
  • [your idea here] - please share any additional ideas in the comments
Mar 16 2012
Mar 16

It's that time of year again where we are gearing up for another great DrupalCon. Next week, 3000 Drupalists, including more than 70 Acquians, will be migrating out west to the Rocky Mountains for an action packed week filled with sessions, stickers, beer, and lots of face time with the best open source community on the planet.

There is one remarkable event that caught my attention and that speaks volumes about an important trend we're seeing: the Higher Ed Drupal Users meeting on Wednesday.

Why is this so interesting you ask? Well ... it all started with one of Acquia's team members reaching out to a couple of universities from Canada to organize a meeting at DrupalCon where they could connect and share insider tips for what works for them at their respective university. However, it turned out they were already talking on a regular basis and what they really wanted was to talk to others from universities outside of their immediate circle. Word spread, and now what began as a lunch meeting has turned into a meet-up with approximately 50 Higher Education Drupal users coming together to talk about how they can grow Drupal on their campus and overcome the common challenges they are facing. This is what DrupalCon and the Drupal community are all about!

As Drupal adoption has grown, so has adoption in Higher Education. We recently found that out of 3260 universities that we tracked, over 35% of them are using Drupal including 71 of the top 100 universities like Harvard, Duke, MIT, UPenn, Princeton, UC Berkeley, Stanford, McGill, and many more. That is pretty amazing!

But it makes sense because Drupal provides significant advantages to universities, including support for large scale mulit-site deployments, fit with centralized IT organizations, low end-user training requirements, lower costs, appeal among digital natives and young developers, support for integration with campus authentication and authorization systems, and strong content relation capabilities - particularly taxonomy support for libraries.

I look forward to meeting with this unique group of Drupal users as they learn from each other, and undoubtedly teach us more about the specific needs in higher education. DrupalCon here we come!

Feb 29 2012
Feb 29

As part of our preparations for the upcoming Education Unconference taking place on March 19th in Denver we are happy to give an update on the panel discussion.

Register for Drupal in Education Unconference in Denver, CO on Eventbrite

The participants will include:

  • Jason Hoekstra - Jason is the Technology Solutions Advisor at the US Department of Education. As part of his work in the Department, Jason is working on the Learning Registry, a system to support improved sharing and collaboration among people creating and using online content for learning.
  • Bud Hunt - Bud is an Instructional Technology Coordinator for the St. Vrain Valley School District in northern Colorado. Prior to becoming an Instructional Technologist, Bud taught English. He has been blogging about technology, writing, learning, and learning online since before there was an internet.
  • Bryan Ollendyke - Bryan works in the e-Learning Institute at Penn State as an Instructional Web Technologist. Bryan has been a leading advocate for Drupal within higher education, and is the main developer of ELMS, a Drupal-based learning and instructional design platform.
  • Glenn Moses - Glenn is the Director of Blended Learning at Denver Public Schools. Glenn has spent over a decade designing and working in blended learning environments, and helped build the largest blended learning program in the state of Nevada.
  • Michael Wacker - Michael is the Online Professional Development Coordinator at Denver Public Schools. Michael designs and facilitates online learning spaces for educators to inquire, share, reflect, and connect.

The panel will be moderated by Bill Fitzgerald; Bill worked in K12 education for 16 years prior to starting FunnyMonkey, an open source development shop that works primarily with education and non-profit organizations.

The panel discussion will start by focusing on the professional needs of people working at different levels within different types of educational systems, and what tools have helped them meet those needs.

The Unconference is free, and takes place on March 19th, in Denver, Colorado. See you there!

Feb 19 2012
Feb 19

On Monday, March 19th, we are organizing a Drupal in Education unconference in Denver; the event will be held at Del Pueblo School. This meetup will follow an unconference format, so if there is something you want to talk about, propose a topic, find some like-minded individuals, and let the conversation start.

The event is free, and attendance at the event is capped at 150 people. To attend the unconference, please sign up here. If we get more than 150 attendees, we will start a waiting list. Please sign up only if you are certain you will be attending.

Register for Drupal in Education Unconference in Denver, CO  on Eventbrite

I'd like to thank and recognize Michael Wacker and the Denver Public School System for allowing us to hold the conference in their space. Also, Melissa Anderson has provided invaluable organizational work to help get this unconference moving.


  • 9:30 to 10: Arrive, brainstorm sessions
  • 10 to 11:30: Session 1
  • 11:30 to 1: Lunch/Ongoing Conversations There are several good food options near Del Pueblo. We are also seeing if we can arrange to have a food cart come to the school to provide another option for people to buy lunch.
  • 1 to 2: Session 2: Panel Discussion (see details below)
  • 2 to 3: Session 3

We have set up a wiki page on groups.drupal.org for session ideas; if there is a subject you want to discuss, put it on the wiki.

Additionally, if there is interest, we can reconvene at a restaurant/bar later in the day. Location TBD.

Panel Info

The panel brings together people working at different levels within educational systems. The panel includes practioners working in K12, Higher Ed, and the US Department of Education. Within the panel discussion, the focus will range from what the needs are (described in a technology-agnostic way) and what technological developments have proven most useful at meeting these needs.

We are still finalizing the participants of the panel; look for a follow-up announcement to be coming within the next couple days!

Getting There

For those people driving, on-site parking is limited.

Once you get to the venue, please enter through the West side Galapago doors. Other doors to the building are generally locked.

Oct 26 2011
Oct 26

Ixis was commissioned to create a website, TES Growing Ambitions, for the leading digital education business TSL Education, to support teachers helping young people discover the right career path.

At a time when the delivery of careers advice in schools is changing, TES Growing Ambitions will be a dedicated portal for the teaching profession to access a relevant and diverse collection of multimedia teaching resources for free, as well as being able to share information and best practice with peers and the wider professional careers community. 

Ixis was briefed to create a websites which would support the teaching profession and embed careers across the curriculum to ensure that young people have access to quality IAG as part of their learning. As part of this brief, Ixis was asked to provide for a range of features including an A-Z jobs search, multimedia resource platform, news and Q&A. The website can be found at growingambitions.tes.co.uk/

Stephanie Hosny said:

“We wanted to create a website which was as fresh and ambitious as the ethos behind the project. We have developed a Drupal based Content Management System to support the integration of media content and support teachers to search for the right information for their students. We hope the site will inspire and motivate young minds.”

Jul 31 2011
Jul 31

A community specifically for Drupal developers and users at universities is in the formative stages, see: Forming a Drupal in Higher Edu Consortium; (groups.drupal.org).

It's long been my belief that educational institutions should make more use of Free/Libre and Open Source Software (FLOSS). Besides the obvious benefit of cost savings that should not be lost on any educational institution or department therein, FLOSS operating systems like GNU/Linux, applications like LibreOffice and Firefox, programming tools like MySQL and PHP, and web site frameworks like Drupal offer the source code to users. This has several immediate benefits, including:

  • Most free software that is included in the major distributions (such as Red Hat, Debian and Ubuntu) has been vetted by top-tier programmers in addition to the hundreds, if not thousands, of people using and contributing to them. This scrutiny not only increases the quality and security of the code - usually beyond what can be found in retail software - but also results in exemplary coding practices that can be beneficial to young programmers reading the code at universities.
  • Drupal in particular has one of the largest and most active communities supporting and contributing to the project. The opportunity to get one's feet wet - and perhaps to dive into - the technical, social and multi-cultural process of enhancing a well-known and widely used platform will benefit developers, users and students of every discipline.
  • Drupal is a top-tier content management system (CMS) that "out-of-the-box" provides for news and information editing and publication, blogging, discussion forums and much more that can be immediately useful for department web sites, knowledge management systems, intranet portals and many other applications.  And unlike proprietary systems like SharePoint and Convio, Drupal is free, which should be increasingly attractive to universities reeling from state budget cuts.

The proposed "Higher Ed" sub-community could have a far-reaching impact on our increasingly online (and decreasingly flush) educational institutions, perhaps resulting in a collection of feature sets that department heads would find useful. Check it out!

Mar 04 2011
Mar 04

March 4th, 2011

Gone are the days when universities, colleges, school boards, and other academic institutions would slap up a static website and update it once or twice a year. Today’s education and e-learning sites are dynamic, community-oriented hubs that engage visitors — students, parents, and administrators — on all aspects of the school’s life.

When it comes to rising to these challenges, Drupal is the perfect content management solution.

There are great reasons why millions of websites – including well-known companies, governments, non-profits and schools – use Drupal to power their content management systems. Drupal is:

  • Powerful yet flexible
  • Able to manage hundreds of thousands of user accounts
  • Usable by multiple editors simultaneously
  • Richly extensible, with 7,000+ free modules available
  • Ideal for empowering developers to create new online learning environments on the fly

This past year, we had the opportunity to work with Portland State University on a complete revamp of their multi-site infrastructure using Drupal 7. We’ll be launching their new site this spring, but we wanted to share some of the highlights so you’ll know what’s coming down the pipe:

  • A template system that allows hundreds of different site owners to customize their site while maintaining the school’s branding guidelines. This system allows site owners to pick and choose from different page layouts, select their sites colors from pre-defined color sets (or make their own), and upload their department’s specific branding images. The end result is a high-quality, consistent brand across hundreds of sites, while allowing a high degree of flexibility to site owners.
  • An install profile that allows web managers to deploy sites with a click of a button. In a matter of seconds, roles, permissions, and features are all enabled and customized to meet the needs of site owners.
  • A syndication server that allows content publishers to create content in one central site and have the content syndicated to hundreds of other sites. Site owners can select the terms they want to subscribe to and create customized blocks of news, events, profiles, and FAQs, which they can position on their site.
  • All of the benefits of Drupal 7. We’ve been working on this project since Drupal 7 was in its early alpha phase. Along with PSU, we are proud to be launching one of the first Drupal 7 university implementations of this scale.

This has been an exciting project for us. We’re looking forward to continuing our partnership with PSU to work with other universities, colleges and school districts to help build on the basis of what we’ve started. PSU’s goal – and ours – is to make their system a shining example of Drupal done right: an example other educational institutions will be sure to follow.

Beyond our work with PSU, here are some of other projects where we’ve helped school districts, colleges, and universities exploit the full power of Drupal:

Working with the VSB team was a rewarding experience. We completely resigned their site, revamped their infrastructure, and trained their internal team on how to take it from there.

We’ve been working with ASU since 2008 and have completed multiple projects for them, including on-site consulting & training. ASU is one of the largest universities in the US and is a leading player in the Drupal space.

Our work with DSD involved a complete revamp of their site including a Google mapping system & many other community improving features. Our redesign enabled us to win first place at the American Design Awards.

Our partnership with NPC began with a total overhaul of their website. This led to additional phases, onsite training and ongoing consulting. NPC was also another award-winning site, earning Silver at the Paragon Awards.

Last year we worked with PPS, the largest school district in Maine, to redesign and revamp their site and facilitate easy web publishing improve communications between administrators, teachers, parents and students.

Over the past couple of years we’ve had the privilege to work with three different departments at UCSF. We look forward to partnering further in improving their web enviroment and departmental communities.

We’ve gathered a lot of experience in the education arena, and we want to make ourselves available to share appropriate information, strategies and tools that we’ve been developing to help higher education and K-12 schools looking to move their online presence into the cutting edge of open source technologies. Feel free to contact us should you wish to check on our availability or to explore an engagement.

Jun 01 2010
Jun 01

New release of Eduglu

I'm pleased to announce the second release of Eduglu! Eduglu is a Drupal distribution designed to support social learning at institutions of higher learning. It's available for download now at http://eduglu.com/download-eduglu. Since the first release, We've squashed dozens of major and minor bugs and made the significant jump to the Spaces 3 and Context 3.

Eduglu helps learners connect with one another and form learning communities. Eduglu provides online spaces for groups to learn together.

Our social learning platform ships with a number of powerful social learning applications including discussion boards with full email integration (like Google Groups), polls, and wikis.

I recorded a quick screencast demoing an initial setup of Eduglu. Check it out to get a flavor for what Eduglu can do.

Hosted Eduglu coming

I'm also rather excited to announce that a fully supported hosted version of Eduglu is coming. Schools and other organizations will soon be able to easily sign-up for hosted Eduglu to meet the social learning needs of their organization. Head over to eduglu.com and leave your email address to hear when we open up for business and to provide early feedback.

This will be our initial stab at creating a sustainable business model for our Drupal educational distribution. There's been a lot of discussion lately in the Drupal community about finding business models that can help create sustainable Drupal Distributions. I'm not sure hosted Eduglu is the right business model for that task but since a startup is "an organization formed to search for a repeatable and scalable business model", we'll give this business model a try for awhile as we look for ways to freshen the stagnant world of educational technology.

What's coming next for Eduglu?

Eduglu works well with 500-1000 members. But we want it to work for much much larger organizations. Organizations the size of my alma mater Brigham Young University that has 30,000 students and 250,000+ alumni. To make Eduglu work on that scale, we'll be adding features such as group suggesting, robust search and filtering, activity streams, and twitter-style following.

Also we're working on a number of social learning applications. Right now Eduglu ships with four social learning applications. A discussion/mailing list, wiki, and polling.

The next two major applications we'd like to ship are a blogging application that let's learners blog on various things they are learning and comment on other's blogs. If the learner has an existing blog, they'll be able to connect it to their Eduglu blog so new posts there are automatically imported.

The second application is a Group RSS Reader that lets a group of learners subscribe to content via RSS and provides various means for rating, sorting, sharing, and discussing content brought into the group.

Both are powerful learning tools that help students more easily share what they are learning and track and discuss the best ideas that are being written about on the Internet and we're excited to get them out into the wild.

May 31 2010
May 31

After being alerted to Google Fonts, the Google Font API, and the Google Fonts Module in a recent Drupal Planet post (http://acquia.com/blog/robert/google-fonts-api-time-drupal-market-one-day), I dropped my lunch and said, "Rad!" Then I rolled up the sleeves and dropped a few fonts into my blog as easy as the dog drops logs on the lawn. What follow is usage notes and examples on getting this all going for yourself:

References right up front:

and then a walkthrough:

  1. Download the Google Fonts Module from http://drupal.org/project/Google_fonts
  2. Enable your new modules (admin/build/modules/list). Make sure you enable both Google Fonts and Google Fonts Ui.

  3. Enable your desired fonts on the Google Fonts admin page (admin/settings/Google_fonts). Here you will find a list of all the available Google Fonts with a checkbox to select desired font. For my example I am enabling Droid Sans Mono and Lobster. When you have made your choices click 'Save configuration'.

  4. Add the font to an element via CSS in two different ways:
    • • use the font directly in your stylesheet (.node h2{ font-family: "Droid Sans Mono"; }) I have not tried this because, this next way is easier
    • • or add a rule via the 'Add rules' tab (admin/settings/Google_fonts/rules). Here you will find textareas for each font that you previously selected. Enter your CSS selectors here to get going. In my example I am selecting for the dateline and the custom made tag marquee view at the bottom of my page.

Now check out my handy work in the dateline on all posts, and at the bottom of the page using the funky Lobster font on my Tag Marquee.

May 07 2010
May 07

I frequently use a 3rd party designer to help with the tedious task of going from PSD to final theme. If you haven't realized it yet, but alot of designers have problems setting up a local MAMP install w/ drupal in which to fuck with css. To deal with this without giving the designer any command-line access, my shop uses what we call CZI on all drupal installs. This stands for CSS Injector, Zen theme, IMCE, and allows a designer to upload images and apply css rules to a development site they have been given permissions for on the theme, Zen, that provides all the classes and ids anyone would need.

After my shop, the designer, and the client are satisfied, CSS Injector and it's external files become a weight and need to be removed. Below I detail the process of using Zenophile (http://drupal.org/project/zenophile) to create a zen subtheme in which to wrap up all your CSS Injector files:

Create a subtheme using Zenophile

  1. Enable module Zenophile
  2. create a new zen subtheme (site building > themes > create zen subtheme)
    • name appropriately according to site url
    • set site directory to installs folder unless you want it available to other installs
    • create a fresh css file
    • Submit (you may need to chown the target directory to have appropriate permissions)
  3. disable module zenophile
  4. manage blocks for new theme (site building > blocks > list > newtheme)
    • save each block individually to have titles set appropriately
  5. Duplicate theme settings (site building > themes > configure > zen & newtheme)
    • make sure your newtheme has the exact same settings as zen
    • pay special attention to logo and favicon paths
    • save theme settings

pack up and move css injector files

  1. merge all css injector files ( site configuration > css injector )
    • copy all css injector files into single file
    • delete originals, leaving you with one merged file
  2. copy content of merged file into newtheme-fresh.css
    • search and replace any filepaths in css code

switch themes

  1. set newtheme as primary (site building > themes)
  2. remove last css_injector file (site configuration > css injector)
  3. test site


  1. disable module css_injector
  2. uninstall modules zenophile and css_injector

Peace out and remember to get a good lunch.

Apr 23 2010
Apr 23

After a very long week full of Webvisions goodness we settled into our cozy little studio with an old friend of the show, Nate Angell. As always he was bursting with excitement for the projects he’s working on. We managed to tackle three of them in the Tech Edition: hideNtweet, a reevaluation of the standardized testing system in our schools and DayOn.

Then we moved on to afterhours where the chatroom was invaded by trolls. Most of the trolls were kind of lame or just plain crass but a few of them had inventive insults that Dr Normal and I were able to laugh about even later. Dr Normal had to shut the chat down on too many occasions to count but he always turned it back on. Which leads to the title for our Afterhours episode: Afterhours With Xolotl and Chatroom FAIL.

Feb 05 2010
Feb 05

I've been working on a social learning site based on Drupal for the past two years as a student at Brigham Young University and am now working towards readying it for its maiden release into the world as a full-fledged Drupal install profile.

My goal with Eduglu is to:

a) Provide a superb out-of-the-box social learning engine to help departments, clubs, classrooms, and other campus groups communicate, collaborate, and learn with one another.

b) Support a social learning platform which individual universities and Drupal shops can integrate with existing tools and services and use to build custom tools supporting specific learning practices.

Or in simpler terms, Eduglu = robust social learning engine + pluggable educational tools.

For Drupalers, Eduglu is built on the same stack of modules as Open Atrium; Organic Groups, Spaces, Context, and Features.

I'm also working to start a company to provide commercial support and hosting for Eduglu.

But we're not there yet. My plan is to make the first beta release by Drupalcon where I'll be presenting more about Eduglu. But to be ready by then, I need alpha testers. If you're interested in becoming an alpha tester, please contact me. I'll be preparing an initial release over the next couple of weeks.

Also, if you do Drupal consulting in higher education, I'd love to work with you. Please contact me and let's discuss how we can work together.

Lastly, if you're an educator working in higher ed, I'd love to talk to you as well. Especially people working at online or virtual colleges and community colleges. If there's an educational tool you've dreamed of having -- or tried building and failed -- contact me and tell me about it and I might just build it for you.

And if you're not in one of the above three groups but know someone who is -- please connect me with those people.

I'll be doing a bit of travel in a couple of weeks. I'll be in Boston February 17th-20th, New York February 22-23 and Washington DC on the 24th-25th. If you're in one of those cities and want to meet and talk Drupal/higher education, let's get in touch!

Thanks all! It's going to be an exciting ride and I'm looking forward to it.

Dec 18 2009
Dec 18

Image Assist is a great choice for adding images to content in Drupal. This module allows users to upload and insert inline images into posts. It automatically generates an Add image link under the textarea fields of your choice. In this post I will go throught the initial setup of this module, saving usage for a later post.

For a good discussion on multiple ways of importing images into your drupal site and each approaches pros and cons, please see: http://crownedup.com .

  1. Check your Status Report

    You should have a clear status report (Administer > Reports > Status report) before continuing with these installation instructions. Specifically, you must be confirmed on both File system and Image toolkit.

  2. Download Modules

    Image assist depends on Image and Views modules to work. Make sure that you get the latest versions of these three modules:

    Image - http://drupal.org/project/image
    Image Assist - http://drupal.org/project/img_assist
    Views - http://drupal.org/project/views

    Once you have downloaded the modules, move them to the appropriate modules folder for your install and extract them in place.

  3. Enable Modules

    From the Modules page (Administer > Site building > Modules), enable Image, Image Assist, and Views. As a site administrator, run update.php. You will be told that directories have been created for images.

  4. Configure Permissions

    The following permissions can be assigned to certain roles on your site:

    image module: create images; edit images; edit own images; view original images
    img_assist module: access advanced options; access all images; access img_assist; use original size

    I would suggest only allowing trusted people to upload images, until you are very confident in the security & stability of your setup.

  5. Configure Image Module

    Configure the Image module (Administer > Site configuration > Images) to set some of the default bit and aspect sizes. From this page you can set the maximum upload size and the default directory for uploads. Additionally, image sizes can be set for the three default image sizes (Original, Preview, Thumbnail) and the resizing operation can be chosen from scale or scale and crop. The Scale image operation resizes images so that they fit with in the given dimensions. If only one dimension is specified the other dimension will be computed based on the image's aspect ratio. The Scale and crop image operation resizes images to be exactly the given dimensions. If only one dimension is specified the image will not be cropped, making this is equivalent to Scale image. Additional image sizes can be defined on this page.

  6. Configure Image Content Type

    I would suggest making a few changes to the default settings given the automatically created Image content type (Administer > Content management > Image) based on your sites needs. Under Submission Form Settings, empty the text from the Body field label to remove the body field entirely, or optionally relable the body field to something such as Image Description. If you do not wish to have each image be viewed as an individual node, turn off the Published and Promoted to front page options.

  7. Configure Image Assist Module

    There are alot of configuration settings for Image Assist (Administer > Site configuration > Image Assist). I would suggest carefully reading the helpful descriptions below each setting and to try to tighten the settings up as much as possible to restrict access to the image assist dialogue. I will go through these setting as group at a time.

    Access settings

    We want to limit the pages Image Assist will be available on by setting 'Display Image assist on paths' to 'on specific paths', then defining the paths in the text-area below. The default paths will restrict Image Assist to the node and comment pages.

    We also want to limit which text-areas the link to Image Assist will appear on by setting 'Display Image assist on text areas' to 'Show on only the listed textareas.', then defining the ids in the text-area below. The default ids will restrict Image Assist to the node and comment text-areas.

    Image generation settings

    Make sure that the maximum image size is set high enough for your needs, but no higher. Under 'Creation of image derivatives', turn off Allow all users to create custom size inline images.

    Image property dialog settings

    These settings are all about filling in the defaults on the Image Assist window. I would suggest the following setup. Set the 'default insert mode' to 'Filter Tag' and I would suggest also setting the default caption title and text to 'disabled'.

    Image display settings

    You will most certainly want to style your images to match your site and will have the best luck at this by setting this option to 'No' and following the instructions below this to copy the proper style elements into your main css file. Basically you sre going to open the file css file included in the image attach module folder and copy the last few declerations into your themes stylesheet.

  8. Create New Input Filter

    To use the Filter Tag (my suggestion), you will need to modify your Input Filters so that the inserted tag will be parsed. Add a new Input Filter (Administer > Content configuration > Input formats). Give your new filter a descriptive name such as 'Filtered w/ Image' and then choose which roles can use this new filter. Finally, turn on 'Inline images' and all is set.

Thanks for reading and I hope this gets you started on the right foot with Image Assist.

Dec 10 2009
Dec 10

If you want to make any sort of terms and conditions applicable to becoming a member of your Drupal site, I would suggest using the Legal module. It provides for a text agreement that a user must agree to to get an account on the site. The agreement is signified via a single checkbox or multiple custom checkboxes. Additionally, the terms can be updated which requires users to agree to the agreement during their next site visit, a text box also provides for notes on changes. Here is a quick rundown of setup of the Legal Module:

  1. Download Modules

    Legal depends on the Checkbox Validate module to work. Make sure that you get the latest versions of these modules:

    Legal - http://drupal.org/project/legal
    Checkbox Validate - http://drupal.org/project/checkbox_validate

    Once you have downloaded the modules, move them to the appropriate modules folder for your install and extract them in place.

  2. Enable Modules

    From the Modules page (Administer > Site building > Modules), enable Legal, and Checkbox Validate.

  3. Configure Legal Module

    Configure the Legal module (Administer > Site configuration > Legal) to fill in the terms of the site, site a display style, and create any additional checkboxes to be agreed to. The default checkbox reads: 'Accept Terms & Conditions of Use'. The display style has the following choices of: Scroll Box, Scroll Box (CSS), HTML Text, Page Link. Other settings can be ignored for now.

  4. Configure Permissions

    The following permissions can be assigned to certain roles on your site:

    administer Terms and Conditions
    view Terms and Conditions

    Due to the legal complications that a damaged Terms and Conditions could leave you in, it would be wise to leave the administration of terms and conditions to high level admins.

  5. Review the Terms and Conditions

    The next time a users visits the site or a new user joins they will have to agree to the terms and conditions.

    Additionally a page will be auto-generated at path ./legal with entitled Terms and Conditions that simplies displays the current terms of the site.

  6. Administer the Legal Module

    Administer the Legal module (Administer > Site configuration > Legal) on the same page where you originally filled out the terms and conditions. This page also shows the current reiteration number of your terms and conditions. When the terms are updated, there is a place to give a brief description of changes made to terms and conditions, which the user will be shown and asked to agree to next time they visit the site.

The module works great. My only critiscim that I have is that I doubt it still needs the Checkbox Vidate module to function properly.

Good job everyone. Now who is interested in lunch?

Dec 03 2009
Dec 03

The Node Reference module defines a field type for use by the Content Creation Kit (CCK) to reference one node from another. It works very good and allows you to add a greater amount of complexity to your site. The only problem with the Node Reference module is that the default display options for the referenced node field are very limited. But thanks to the Node Reference Views module, you can use all the formatting power of the Views module to display your referenced node field.

An often used example of when to use this module is for creating a music library listing using CCK: Content types are created for the albums and the songs, then Node Reference is used to relate the songs to their respective albums. For this example we will have a content type called Album with text fields for title, year, artist and a content type called Song with a simple text title and a node refernce field to relate the song to the Album called field_album_reference. From here, I will give quick setup instructions to get you going with the Node Reference Views module:

  1. Prerequisites

    Before you begin, you should have the following modules installed:

    Content - http://drupal.org/project/cck
    Node Reference - included with the Content module
    Option Widget - included with the Content module
    Text - included with the Content module
    Views - http://drupal.org/project/views
    Views UI - included with the Views module

    Additionally, you should setup the above described songs and albums content types or have a set of content types connected by a node reference field.

  2. Download and Install Node Reference Views Module

    Node Reference Views - http://drupal.org/project/nodereference_views

    Once you have downloaded the module, move it to the appropriate modules folder for your install and extract it in place. From the Modules page (Administer > Site building > Modules), enable the Node Reference Views module.

  3. Clone and Re-Name Preinstalled View

    From the views administration page (Administer > Site building > Views) enable the view entitled field_noderef_example after reading the brief description/instructions. Now on this newly enabled view choose clone. The most important thing to rember with this setup is to rename this cloned view to have the exact same name as your node reference field, in our eample this is field_album_reference. Fill in the view description and the view tag with something that will help you remember what this view is, and then choose next.

    Modify the view by choosing additional fields from the referenced node to be displayed as well as modifying most of the rest of the view settings to suit your needs. Do not change the arguments field. Finally, Save the view.

  4. Disable Preinstalled View

    From the views administration page (Administer > Site building > Views) disable the previously enabled the view entitled field_noderef_example.

  5. Edit the Display of your Node Reference Field

    Edit your content type (Administer > Content management > Content types) that contains your node reference field. From the tabs choose Display Fields. Choose view from pulldown on your node reference field, in our example it would be the Album field.

    Now when you view your song nodes, the Album field will appear as the view you previously described. Nice. It can be styled like any other view can be.

Nov 11 2009
Nov 11

Having built two fairly robust and strongly interlinked taxonomies to aid in categorization, SEO and navigability of my site, I decided I wanted one of those (old school) tag clouds to display my lexicon. After waiting for the enormous drupal modules page to load, I decided the best route to follow would be to use Tagadelic, though it appears that I may have to use helper modules to get the fully customizable effect I am looking for.

According to the module description found on the module page of your site: Tagadelic makes weighted tag clouds from your taxonomy terms.

For this tutorial I will be running through the installation, setup and general access to the Tagadelic module (version 6.x-1.2). I am assuming that you have the Core - optional module Taxonomy installed and that you have at least one multi-word taxonomy in place and that it has been used to tag a handful of nodes.

Here we go:

  1. Check your Status Report

    You should have a clear status report (Administer > Reports > Status report) before continuing with these installation instructions.

  2. Download the Module

    Make sure that you download the latest version of the Tagadelic module for your distribution: Tagadelic - http://drupal.org/project/tagadelic

    Once you have downloaded the module, move it to the appropriate modules folder for your install and extract it in place.

  3. Read the README

    Tagadelic is a small module, without any databases, or configuration, that generates pages with weighted tags. Tagadelic is both an out of the box, ready to use module, if you want simple weighted tag clouds. With, or without some small CSS moderations this will probably suit most cases. But tagadelic is an API system too. You can pass your queries to the APIs and get weighted clouds of virtually anything: clouds by amout of views, clouds for a certain user, etceteras. The module does not do all this, but you can make it do that, with quite little coding.

  4. Enable the Module

    From the Modules page (Administer > Site building > Modules), enable the tagadelic module. As a site administrator, run update.php.

  5. Configure Tagadelic Module

    Configure the Tagadelic module (Administer > Site configuration > Tagadelic configuration) to set defaults for the tagadelic views. The following values can be set:

    Tagadelic sort order: This will be the sort order used in all Tagadelic displays. The options are as follows: 'by weight, ascending'; 'by weight, descending'; 'by title, ascending'; 'by title, descending'; and 'random'. The default value for this setting is 'by title, ascending'.

    Amount of tags on the pages: The amount of tags that will show up in a cloud on the Tagadelic page. Amount of tags in blocks must be configured in the block settings of the various cloud blocks. The default value for this setting is 60 tags.

    Number of levels: The number of levels between the least popular tags and the most popular ones. Different levels will be assigned a different class to be themed in tagadelic.css. The default value for this setting is 6 levels.

    Choose to 'Save the configuration' or 'Reset to defaults' if mistakes have been made.

  6. Review Pages and Blocks

    After installation and configuration, you can review the results of your labors which is a page and two blocks that approach the idea of a tag cloud.

    Pages: First off is to go to the Tagadelic page found at yoursite/tagadelic (http://baxwrds.com/tagadelic/). This page lists all the tags in all of your vocabularies. Through the use of URL arguments you can also list the tags only in single vocabulary (http://baxwrds.com/tagadelic/chunk/1) or from multiple vocabularies (http://baxwrds.com/tagadelic/chunk/2,1) additionally vocabularies can be listed in groups (http://baxwrds.com/tagadelic/2,1).

    Blocks: Two types of blocks are created by the Tagadelic module. Firstly a block is created for each of your vocabularies and will be named: Tags in vocab name. Inside the block configuration you can choose the amount of tags to show. If not all tags in the vocabulary are visible a more link will also be present to take the user to the main tagadelic page. An example of these blocks can be seen on the right. The second type of block is 'Tags in the current post' and lists the tags of the current post. Due to the horrible formatting of this block I have chosen not to display it.

There you have it, examples and all. It is a descent module and does what it says, but it does lack documentation. Two resources I found useful were: http://www.webschuur.com/modules/tagadelic and http://drupal.org/handbook/modules/Tagadelic. Peace.

Jul 08 2009
Jul 08

Most data dealing with times and dates is stored as a as a standard Unix timestamp in Drupal. Examples of this are the node creation and revision dates, or the user creation, login, and access dates. If you access this data directly from the database you will retrieve this highly illegible timestamp. Good thing that Drupal provides a function for formatting dates: format_date().

format_date($timestamp, $type = 'medium', $format = '', $timezone = NULL, $langcode = NULL)

This function will return a formatted date string of the passed timestamp. The type parameter accepts the following strings: small, medium, large, and custom. The first three type parameters can be defined by the user on the Date and Time settings page. If custom is chosen then the format parameter must also be filled in. The format parameter accepts a PHP date format string, possible values follow:

d - Day of the month, 2 digits with leading zeros
D - A textual representation of a day, three letters
j - Day of the month without leading zeros
l - A full textual representation of the day of the week
N - ISO-8601 numeric representation of the day of the week (added in PHP 5.1.0)
S - English ordinal suffix for the day of the month, 2 characters
w - Numeric representation of the day of the week
z - The day of the year (starting from 0)
W - ISO-8601 week number of year, weeks starting on Monday (added in PHP 4.1.0)
F - A full textual representation of a month, such as January or March
m - Numeric representation of a month, with leading zeros
M - A short textual representation of a month, three letters
n - Numeric representation of a month, without leading zeros
t - Number of days in the given month
L - Whether it's a leap year
Y - A full numeric representation of a year, 4 digits
y - A two digit representation of a year
a - Lowercase Ante meridiem and Post meridiem
A - Uppercase Ante meridiem and Post meridiem
B - Swatch Internet time
g - 12-hour format of an hour without leading zeros
G - 24-hour format of an hour without leading zeros
h - 12-hour format of an hour with leading zeros
H - 24-hour format of an hour with leading zeros
i - Minutes with leading zeros
s - Seconds, with leading zeros
u - Microseconds (added in PHP 5.2.2)
e - Timezone identifier (added in PHP 5.1.0)
I - Whether or not the date is in daylight saving time
O - Difference to Greenwich time (GMT) in hours
P - Difference to Greenwich time (GMT) with colon between hours and minutes (added in PHP 5.1.3)
T - Timezone abbreviation
Z - Timezone offset in seconds. The offset for timezones west of UTC is always negative, and for those east of UTC is always positive.

Examples of custom date strings follow all using current time from the time() function for the timestamp:

F j, Y, g:i a March 14, 2017, 10:50 am m.d.y 03.14.17 j, n, Y 14, 3, 2017 Ymd 20170314 \i\t \i\s \t\h\e jS \d\a\y. it is the 14th day. D M j G:i:s T Y Tue Mar 14 10:50:06 GMT 2017 H:i:s 10:50:06 Additional Resources:
Jun 02 2009
Jun 02

In Drupal you should know that you never want to hardcode a local URL into your nodes or blocks. Firstly as your site expands the node may show from places you do not currently imagine thus breaking your paths. Secondly if you try to bypass this by using a full/direct URL, you are going to be up shit creek without a paddle when you migrate the URL. The link l() function should be used for adding links so that manipulations, like localization and URL determinations, can happen on the output.

Below are some of examples of creating links in drupal using the l() function:

  • internal link
    to make: Pancakes, the Sunday Stack
    use: NOTE: try to use node numbers
    <?php echo l('Pancakes, the Sunday Stacks', 'node/447', array("title"=>"Cooking Pancake")); ?>
  • external link
    to make: norml.org
    <?php echo l('norml.org', 'http://www.norml.org/index.cfm?Group_ID=3374', array("target"=>"_Blank", "rel"=>"nofollow")); ?>

Use your knowledge wisely. Peace out.

Jun 01 2008
Jun 01

Top-10 Countdown

Open Source Success


How to ensure a winning implementation on your campus.

Nate AngellNate Angell co-directs a collaborative team that offers services and technologies across a range of teaching, learning, research, and communication needs at Portland State University, Oregon’s largest, most diverse, and only urban public university. Angell’s current focus is on integrating Portland State’s academic and web communication technologies on an open source platform. He is an active member of open source communities including Sakai, Open Source Portfolio, and the web content management platform Drupal. Angell and members of Portland State’s team regularly help other campuses and institutions implement enterprise open source technologies. Here, Angell offers a number of intelligent ways to help open source implementations succeed.


Engage deeply with the community surrounding open source technology.

  • Take control of your destiny and help shape technology roadmaps.
  • Share early and often: Active participation raises your stature.
  • It’s not only for coders: The community needs a range of skills.

Remember, any IT environment can take advantage of open source.

  • Literally any campus—regardless of its IT resources—can succeed.
  • If you need help, vendors offer various levels of support and hosting.

Understand how change happens at your institution.

  • History repeats: Look at past attempts at change on your campus.
  • Take heed where your plan d'es not match institutional culture.

Build the right implementation team.

  • Who can speak effectively with decision-makers and those who influence them?
  • Who can translate technical issues for non-technical audiences?
  • Bring potential conflict inside: Engage critical voices directly.

Leverage drivers of open source adoption on your campus.

  • Prioritize and amplify factors that engage existing passions.
  • Consider a Trojan horse: a smaller, more innocuous goal to start.

Communicate effectively—it’s crucial to your implementation’s success.

  • Plan how to communicate with everyone affected by your implementation.
  • Speak about the larger vision the implementation will enable.
  • Stay on message: Every activity is an opportunity to communicate your vision.

Think outside the box for training and support.

  • Cell phones are a global phenomenon.
  • Integrate training and support: Support calls are training opportunities.
  • Mix it up: Offer resources in a variety of formats, levels, and schedules.

Plan for assessment in every stage and activity of your implementation.

  • Good assessment is not an afterthought; start early.
  • Measure progress toward your goals; don’t merely evaluate tools.
  • Surveys are two-way communications: Use them to support your message.

Stage your success.

  • Pilot everything—from technologies to communications—with increasingly
    larger groups.
  • Think of pilots as dress rehearsals (implementation practice), not as bake-offs
    (technology selection).
  • Champions are made, not born: Use pilots to transform users.

Keep telling the story.

  • Don’t miss a chance to help people understand your vision.
  • Everyone, from front-line user support to your CIO, should speak about the
    change new tools will enable—the tools are means to other ends.
  • People will buy in to visions of change—not just changing technology.

About Drupal Sun

Drupal Sun is an Evolving Web project. It allows you to:

  • Do full-text search on all the articles in Drupal Planet (thanks to Apache Solr)
  • Facet based on tags, author, or feed
  • Flip through articles quickly (with j/k or arrow keys) to find what you're interested in
  • View the entire article text inline, or in the context of the site where it was created

See the blog post at Evolving Web

Evolving Web