Drupal Internationalization (i18n) and hreflang for Multilingual SEO

Often multilingual sites will use URLs contructed with non-compliant country region codes. When using Drupal and i18n / Internationalization, this can be a problem since i18n_hreflang relies on the language codes as set (manually) within Drupal by the webmaster. In such situations it could be preferable to resolve this with code rather than changing the URL pattern. I just stumbled across this handy tool for generating IANA-compliant hreflang attribute tags; hreflang Tags Generator Tool This is useful on multilingual sites that maintain hreflang tags for associating translations with each other. For example, a page might have the following translations: <link

DrupalCon Amsterdam

We’re headed to DrupalCon Amsterdam! Excited to see what everyone’s working on.

Drupal Editing: Keeping Links Functional

When editing a web page and adding a link, what happens when the target URL changes? Your links breaks. To some extent you can use the Internal Links and Link Checker modules (see our earlier post, “Drupal link tools for improved editorial workflow and SEO”). Those are handy for external links especially. But what about linking to Drupal nodes? The ideal setup would be to use only internal links, e.g. “node/123” and never link to aliases, such as “about-us” or “/about-us”. The reason being that if you linked to your About page using “about-us” or “/about-us” and later on you decide

Drupal link tools for improved editorial workflow and SEO

Internal Links Here’s a handy module that takes care of those pesky node/123 style links scattered throughout your site, as well as links to unpublished nodes. To quote from the project page at; The Internal Links module, Intlinks, is a simple set (currently two) of input filters which modify the output of internal, root-relative links in any text input format for which they are enabled. The title filter allows you to have the node titles of linked content automatically inserted into the link as the HTML “title” attribute, with “node/123” -type href paths converted to URL aliases, too.

DrupalCon Prague

We attended DrupalCon Prague in September, and it was great to see familiar faces from the Munich conference. The big focus for many attendees and certainly for us was the push to Drupal 8, especially the new theming layer, which uses Twig as its template engine. From what I saw, it looked like a significant leap forward for theming, especially for keeping logic and theming separate – as much as is possible or reasonable. I suspect the logic/presentation debate will rage on for a long time to come, because there will always be edge cases where the lines are a bit blurred. Switching

At DrupalCon Keynote in Munich!

We write to you today from DrupalCon Munich 2012. Dries Buytaert, Drupal’s founder, talked about the plans for the future. Drupal 8 is scheduled for release mid 2013 (August-ish) with a feature freeze this December and a code freeze in February 2013. He also talked a bit about how he views Acquia vs Drupal. Acquia is his company, which obviously benefits from Drupal, but it also benefits Drupal. He sees a fear of competition in the Drupal community, which he finds unfounded since there is a lack of Drupal developers when it comes to the growing market for Drupal sites.

Geo-targeted blocks based on visitor IP with Drupal 7

Ever needed to show one set of ads to visitors in one region and another set to those in another region? Here’s how, using Drupal 7 and the ip2country module. Install Create or edit a block that you wish to restrict. Here is some sample code that goes in the block’s “Show block on specific pages” area. The country codes are two-letter, all-caps codes. Capitalization IS important. Middle East / North Africa <?php $detectedcountry = module_invoke(‘ip2country’,’get_country’,$_SERVER[‘REMOTE_ADDR’]); $mideast = array(‘AM’, ‘AZ’, ‘BH’, ‘GE’, ‘IR’, ‘IQ’, ‘IL’, ‘JO’, ‘KW’, ‘LB’, ‘NT’, ‘OM’, ‘QA’, ‘SA’, ‘SY’, ‘TR’, ‘TM’, ‘AE’, ‘YE’, ‘SO’, ‘DZ’, ‘MA’, ‘TN’,

Drupal 8 Roadmap

Drupal 8 has been in the works for some time now, and looks pretty exciting. We’re particularly excited about web services becoming part of Drupal core, rather than being something you can add on. We have built custom web services applications for Joomla & SouthWare e-commerce sites, but would love to be able to do that more easily in Drupal too. Check out the Drupal 8 initiatives currently underway. Drupal 8 is still under pretty heavy (but steady) development and may be released some time during 2012. You can read up on the various Drupal versions here. Drupal 6 is the most

Drupal 7.10 Released

Drupal 7.10, a maintenance release with numerous bug fixes (no security fixes) is now available for download. Several major bugs, including one causing errors with the 5.x branch of Drush, have been fixed this release. See the Drupal 7.10 release notes for a full listing. Read more:

Multilingual Moodle

We’re working on two Joomla-Moodle multilingual e-learning sites for a non-profit customer of ours, in English and Persian. Moodle used to have no built-in translation capability as best I can remember (back in 2003 …) but the text filter plugins in Moodle have changed that. Now you can enter <span> tags with lang attributes and a “multilang” class to enter content as follows: <span lang=”en” class=”multilang”>Some English text here</span> <span lang=”fa” class=”multilang”>Some Persian text here</span> I purposely didn’t type in Persian above, since it may not display properly for everyone. The idea with the above is that Moodle will then

Plethora Design Concrete5 Article in Web Designer Mag, UK

We wrote an article about the Concrete5 CMS for issue 182 of Web Designer Magazine (defunct), currently on sale in the UK. If and when it is published online, we’ll provide a link here. We have written a number of blog posts on the Concrete5 content management system.

Concrete5 Theme Installation Issues

Our original review of Concrete5 has gotten quite a response from the Concrete5 community, and I felt it was time for a closer look. Some quick observations: There are some really nice themes in the Concrete5 Marketplace Installing themes could be made clearer. Here are some problems I had while trying to install a theme downloaded from the marketplace: Currently, you supposedly (according to many posts on the Concrete5 forums) have to unzip a theme’s zip file and FTP the resulting folder to the /themes directory. Trouble is, if you download a theme from the marketplace using Add to Cart, many