James Wilson

Web developer. Drupal enthusiast. Surfer and musician. I craft bespoke websites at Bluespark.

Custom Date Formats for Drupal 7 Multi-language sites

One of the neat features of Drupal 7 is the integration between the date and time handling, and the multi-language configurations.

If you enable the locale module, then you will be able to localize date strings into the various languages enabled on your Drupal installation.

Custom date formats like the ones listed below may be added directly into the Administrative interface in Drupal, but this requires in-depth knowledge of how the PHP date formatting codes work. Therefore, developers can save their clients’ time and head scratching by providing the most common date formats used around the world in code, and non-technical client administrators may then simply select the date format for a given language through the UI.

Out of the box Drupal provides three date formats “Long”, “Medium”, and “Short”, all of which include the date and time. So here, we’ll provide a new custom date format called “Post date” that we can use to exclude the time, and show only the date.

Drupal responsive theme frameworks

What is the best starter theme for responsive web design in Drupal? 

Responsive Theming: How to Apply Responsive Design Techniques to a Drupal Theme 

Example implementations

http://mediaqueri.es

General responsive framework

http://getskeleton.com/

Drupal Themes

HTML5_Boilerplate by Jeff Burnz (Drupal 7 only)

Terrain: 960 Fluid grid. Based on Hexagon. Drupal 6 currently.

Square Grid: lightweight resizable grid framework (Drupal 7 only).

Duone: Based on the Skeleton framework, HTML5 Fluid grid. (Drupal 7 only).

Installing Apache Solr for local multi-project Drupal development on a Mac

Solr is an open source enterprise search platform from the Apache Lucene project.

Its major features include powerful full-text search, hit highlighting, faceted search, dynamic clustering, database integration, and rich document (e.g., Word, PDF) handling. Providing distributed search and index replication, Solr is highly scalable.

Pre-requisites

Install homebrew - read Homebrew installation instructions first.

Step 1: Get non-default version of solr

Tap into homebrew versions, to get an earlier version of Solr 3.6.1

Homebrew currently comes with solr 4.0 configured. The Drupal apachesolr module has only unstable bleeding edge integration, plus, we want to simulate the version in our production environment, so we need to setup Homebrew to "tap" into their versions functionality:

$ brew tap homebrew/versions

This functionality lets us list all the historic versions of any "Formula" (e.g. solr). We can find the available versions of Solr, and select the one we need by executing the git command provided.

$ brew versions solr
3.6.1    git checkout baee5b9 /usr/local/Library/Formula/solr.rb
3.6.0    git checkout 50ad7ca /usr/local/Library/Formula/solr.rb
3.5.0    git checkout 6259d05 /usr/local/Library/Formula/solr.rb
3.4.0    git checkout da53d68 /usr/local/Library/Formula/solr.rb
3.3.0    git checkout 14e4db3 /usr/local/Library/Formula/solr.rb
3.1.0    git checkout 1fb85ef /usr/local/Library/Formula/solr.rb
1.4.1    git checkout 0476235 /usr/local/Library/Formula/solr.rb
1.4.0    git checkout eb32026 /usr/local/Library/Formula/solr.rb
1.3.0    git checkout 8db9aaa /usr/local/Library/Formula/solr.rb

The official installation and help documentation for Drupal apachesolr module recommends 3.5.0 however I continually got 404 errors:

==> Downloading http://www.apache.org/dyn/closer.cgi?path=lucene/solr/3.5.0/apache-solr-3.5.0.tgz
==> Best Mirror http://apache.mirrors.lucidnetworks.net/lucene/solr/3.5.0/apache-solr-3.5.0.tgz

curl: (22) The requested URL returned error: 404

So I instead decided to use 3.6.1:

$ git checkout baee5b9 /usr/local/Library/Formula/solr.rb
$ brew install solr

This will install Solr to /usr/local/Cellar/solr/ containing one subdirectory of the Solr [version], in my case 3.6.1.

Step 2: Download the apachesolr drupal module.

The Solr configuration files are stored at /usr/local/Cellar/solr/[version]/libexec/example as I wanted to set up a multicore instance I did the following:

$ cp -R $(brew --prefix solr)/libexec/example $(brew --prefix solr)/libexec/drupal
$ vim /usr/local/Cellar/solr/[version]/libexec/drupal/multicore/solr.xml

Define a bucket (core) for each project in solr.xml:

<cores adminPath="/admin/cores">
    <core name="someproject.local" instanceDir="someproject.local" />
    <core name="anotherproject.local" instanceDir="anotherproject.local" />
</cores>

Copy the required files from the Drupal apachesolr module into the core directories, assume that the apachesolr module is stored at the following path ~/Sites/drupalsite/sites/all/modules/contrib/apachesolr/ and that our terminal instance is still in the multicore directory:

$ cd someproject.local
$ cp ~/Sites/someproject.local/sites/all/modules/contrib/apachesolr/solr-conf/solr-3.x/*.xml ./
$ cd ../anotherproject.local
$ cp ~/Sites/anotherproject.local/sites/all/modules/contrib/apachesolr/solr-conf/solr-3.x/*.xml ./

Step 3: Start Solr in multicore mode.

$ java -Dsolr.solr.home=multicore -jar $(brew --prefix solr)/libexec/drupal/start.jar

Access the Solr administration interface at http://localhost:8983/solr/

Assuming you don’t get any Exceptions…

Step 4: Configure Drupal site with solr settings

Solr host name: 127.0.0.1
Solr port: 8983
Solr path: /solr/[core name value]  (eg. /solr/someproject.local)
Note: multiple cores on a single Drupal site is possible via Domain Access module.

Step 5: Run solr in a thread with launchd

$ vim ~/Library/LaunchAgents/com.apache.solr.plist

Paste the following, replacing [your-username] with your actual username:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC
"-//Apple Computer//DTD PLIST 1.0//EN" "
http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>org.apache.solr</string>
    <key>ProgramArguments</key>
    <array>
            <string>/usr/bin/java</string>
            <string>-Djetty.home=$(brew --prefix solr)/libexec/drupal</string>
            <string>-Djetty.logs=/var/logs/solr</string>
            <string>-Dsolr.solr.home=$(brew --prefix solr)/libexec/drupal/multicore</string>
            <string>-jar</string>
            <string>$(brew --prefix solr)/libexec/drupal/start.jar</string>
    </array>
    <key>ServiceDescription</key>
    <string>Solr</string>
    <key>WorkingDirectory</key>
    <string>/opt/local/share/solr</string>
    <key>UserName</key>
    <string>[your-username]</string>
    <key>GroupName</key>
    <string>staff</string>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>

Now you can launch or quit Solr:

$ launchctl load -w ~/Library/LaunchAgents/com.apache.solr.plist
$ launchctl unload -w ~/Library/LaunchAgents/com.apache.solr.plist

References:

http://ramlev.dk/blog/2012/06/02/install-apache-solr-on-your-mac/

Solr - https://lucene.apache.org/solr/ - http://en.wikipedia.org/wiki/Apache_Solr

Homebrew - http://brew.sh/ - https://en.wikipedia.org/wiki/Homebrew(packagemanagement_software)

These steps are a condensed version of an article from RealityLoop.com