- Elements of a Page
- Sitewide Page Variables
- Navigation and Menus
- Grid Work
- Search
- Changing Templates
- Alias: Page
- Taxonomy Templates
- Delivering Plain Content
- Summary
Delivering Plain Content
Sometimes a stripped-down version of your site is more appropriate than one cluttered with bells and whistles. For example, “simpler is better” when you are aiming to provide a print-friendly version of a page or a mobile-friendly version of your Web site.
Print-Friendly Pages
There are two ways to prepare pages for printing. The first is to prepare a unique style sheet for printers. The browser will automatically detect style sheets that have been marked with a media type of “print” and format the page according to the print rules that have been specified. The second method uses a contributed module, Print, to enable links that direct the site visitor to new pages that use a print-friendly template.
CSS Print-Friendly Pages
Cascading Style Sheets (CSS) specify the media type they are targeting. When a page is displayed in a Web browser, you are viewing the styles that have been assigned to the page by the media types “all” and “screen.” Eight other media types are available, including “print,” “braille,” “handheld,” and “tv.” A full list of media types is available from http://www.w3.org/TR/CSS2/media.html#media-types.
The “print” media type specifies how a page should be formatted when it is printed. Figure 4.11 shows a Web page formatted by a “screen” style sheet; Figure 4.12 shows the “print preview” for the same page. Parts of the page that are not relevant to the content being displayed have been eliminated. The elements that have been removed include the header, navigation elements, and quotes in the footer.
Figure 4.11 HICK Tech Web site as it is displayed in a Web browser.
Figure 4.12 HICK Tech Web site seen in “print preview” mode using the print style sheet.
Most of the work in creating a print-friendly style sheet focuses on finding regions that can be “hidden” from view. To remove these variables from the print-friendly version of the page, the CSS property and attribute display: none; are used. The site name (HICK Tech) is also pulled into the display by using the property and attribute display: block;. To add a print-friendly style sheet to your site, you must register the new file in your theme’s .info file and clear the theme registry by navigating to Administer, Site configuration, Performance; scrolling to the bottom of the Web page; and clicking “clear cached data.” A print-specific CSS file is typically named print.css; however, there is no absolute requirement to use this file name. Set the print style sheet with the following snippet in your theme’s .info file:
stylesheets[print][] = printstylesheet.css
The print style sheet for the HICK Tech Web site contains only the following styles:
/* Hide all information that is not unique content for this page */ #header-wrapper, #primary-links, #banner-image, .sidebar-right .sidebar-right, .breadcrumb, ul.primary, div.links, #bottomboxes, #footer { display: none; } /* The site name is set to "display: none" in the main style sheet, display it now*/ #print-sitename { display: block; } /* Use print-friendly fonts */ body { font-family: Serif; color: #000; font-size: 1em; text-align: left; } /* Make sure the page is white, with no border, and properly aligned */ #wrapper { background: #fff; border: none; margin: 0; width: 100%; }
To add your logo to the site name, you could place a background image on the site with the following CSS snippet:
#print-sitename { display: block; background-image: url(/path/to/the/image.gif); }
If you are concerned about exact color matching (saving your visitor’s valuable color ink cartridges), consider using a black-and-white logo here instead of your colored logo.
Several Drupal themes provide print-friendly CSS, including the default theme, Garland. Review the following themes for additional examples on how to create a print-friendly style sheet for your theme:
- AD Redoable (http://drupal.org/project/ad_redoable)
- NoProb (http://drupal.org/project/noprob)
- Pluralism (http://drupal.org/project/pluralism)
- Zen (http://drupal.org/project/zen)
The A List Apart article titled “Going to Print” by Eric Meyer provides excellent information and strategies for creating print-friendly pages using only CSS. This article can be found at http://alistapart.com/articles/goingtoprint/.
Print-Friendly Templates
Sometimes your Web site visitors will simply not believe that a print-friendly page is waiting to greet them in the printer. They may have had too many bad experiences with Web sites that do not provide a print-friendly CSS, and they may not understand the mechanics of Web site construction well enough to know such a thing is even possible. The CrochetMe Web site shown in Figure 4.13 shows a link to a print-friendly page (displayed in Figure 4.14) with all cruft removed. To create custom templates for your content, you must generate new links to the end of each node, create new templates with stripped-down markup, and notify the theme about these new (nonstandard) template files. Sounds like a lot of work, eh?
Figure 4.13 The CrochetMe Web site uses the Print module for its content. The links appears to the right of the content, below the author information.
Figure 4.14 Output of the Print module—a “print-friendly” page.
Print module to the rescue! With this nifty little module, you can easily enable print-friendly, email-this-page, and PDF links to all of your pages. For more information about this module, and to download and install it, visit the module’s project page at http://drupal.org/project/print.
Although this module does have the ability to create PDFs of pages, it requires a helper module. The recommended helper module, which is named dompdf, provides full CSS support and allows for excellent reproduction of the Web page. It does not, however, support Unicode character encoding or PDF headers. To install the dompdf module, you must install font support on your Web server. If you are not comfortable with system administration, or if you are using a shared hosting service, this functionality will be a little tricky to implement. For more information, visit the dompdf Web site at http://www.digitaljunkies.ca/dompdf.
Mobile Devices
Handheld devices are becoming more common, to the point that having a site that can be navigated while “on the go” is a must for service-oriented businesses such as restaurants, shops, and social networking sites. If you do not have the resources to develop a mobile application, that does not mean you cannot provide a mobile-friendly version of your Web site. To provide this trimmed-down version of your site template, you may use the Mobile theme. This theme is intended to return only clean HTML with no styling (although images embedded in your content are maintained). The links and sidebars are placed so that mobile or handheld devices can display the content first. For more information about this module, and to download and install it, visit the module’s project page at http://drupal.org/project/mobile.
Once the Mobile theme is installed, you will still need to provide a URL for the mobile version of your Web site. To do so, complete the following steps:
- Create a subdomain for the mobile version of your Web site. It is common practice to replace the “www” in your site’s domain name with the letter “m.”
Using the domain name you created in step 1, create a duplicate folder of your current site in Drupal’s folder sites. For example, if you were adding a mobile version to the site example.com, the folder sites would include the following folders:
These two folders contain identical information at this stage.
- In the new mobile site folder, add the mobile theme to the folder themes. You may also delete any graphical themes that are not required by the mobile version of your site.
- In the mobile site folder, edit the file settings.php and look for the section labeled “Variable overrides.” Update the default theme to “mobile” and uncomment the relevant lines. Before editing, the code will appear as follows:
# $conf = array( # 'site_name' => 'My Drupal site', # 'theme_default' => 'minnelli', # 'anonymous' => 'Visitor', ... approximately 50 lines # );
After editing, it will appear as follows (note the bold lines have changed):
$conf = array( # 'site_name' => 'My Drupal site', 'theme_default' => 'mobile', # 'anonymous' => 'Visitor', ... approximately 50 lines );
Your new mobile site is now ready for use! It uses the same database as the main site and, therefore, will always be exactly in sync with the main site. No extra work is required on your part!