[2009] Notes on Using the Drupal CMS to build websites.
Sites built so far: FreeNAC.net, funbugs.ie, boranmopack.com, boran.ie
Work in progress: boran.com, pleple.boran.ch
I like dropdown menus and am not a fan of the way the core Drupal themes do it.
Just came across the acquia_marina theme having just migrated two sites to Druapl 6.5 where the garland dropdown with nice_menus / submenutree modules were used for dropdowns (See http://boran.ie and http://funbugs.ie)
With Drupal 6 not as many non core modules are needed, current favourites are node_privacy_byrole, admin_menu, imce, tinymce. The devel module is causing problems, sometimes freezing a site, seems to do massive mysql queries.
To do
Edipresse have jumped into drupal big time: http://digital.edipresse.com/tag/drupal/
Example: http://new.lematin.ch/
It will be interesting to follow their blog and see what modules they contribute back to the community.
Update Jan'2010: Edipresse were present at the Aarau camp, and a recent Drupal meet in geneva.
Just came across this drupalmodules.com which allows easier searching and classification of Drupal modules.
As an example, I looked up editors and looked at the reviews. While the comments on TinyMCE were a bit too positive in my opinions, I agree with the FCKeditor ones. A site that I'll come back to for my next drupal project.
drupalcodesearch.com also looks interesting..
This should grow to a useful list of reading /listening material...
Books
"Access denied" when user/register is accessed by a user that is already logged in:
http://drupal.org/node/118498#comment-2024826
(Update: use the Already In module http://drupal.org/project/already_in)
See also the forum project page
This page should be a collection of issues, not covered in the "fixes" page.
The profile module does not allow field defaults to be set
http://drupal.org/node/116513
http://www.drupalcenter.de/node/22451
I've many issues that I follow at this stage. Its easiert to track them on d.o (Drupal.org) in "MyIssues". I also find the rss feed useful (rss feed icon on the bottom left of MyIssues), its the only way to being alerted if a new comments have appeared in a thread that interests me.
As Drupal moves more from a website tool to an application framework, its generic data interfaces and handling tools become more important.
Backup and Migrate: is one of the first tools to look at, allowing manual and automated backup/ restore. A good way to transfer a site from one provider.
As regards data importing, the basic steps are:
Lets look at the modules found in this domain so far…
The Table Wizard can views-enable any table, even those not in the drupal db and not known to drupal. It performs analysis of the tables it manages, reporting on empty fields, data ranges, ranges of string lengths, etc.. It provides an API for other modules to views-enable their tables. Can work with the Migrate module.
The Schema API allows modules to declare their database tables and provides functions for creating, dropping, and changing tables, columns, keys, and indexes. It examines (and can compare) the live database and creates Schema API data structures for all tables that match the live database. Used by tw.
The Data module helps model, manage tables and an API for accessing their contents.
The Migrate and Migrate_extras modules (which depend on tw and schema) provide a flexible framework for migrating content into Drupal from other sources.
The print module allows "printer friendly" pages of nodes or views to be shown.
The views_export_xls module allows a view to be exported in an XML format that Microsoft Excel understands.
Uses cases not yet examined: data export to csv (views_bonus module?). Import/export from/to postgres
& xmlrpc (e.g. openerp). Creating a UI for editing data in non node tables.
Further reading:
A quick way to copy new site and hit the ground running is to install the Backup and Migrate module.
Change key parts of the site that must be different
And some specific modules may need changes, like:
Update 28th March 2010:
The above method is only used for very simple sites, at there often more to it that above (e.g. changing patches to images in content), it would seem more promoiseing to start with a really blank install and use drush to automate standard module enabling, export/impport content types and look at using features to copy over more sttings.
Drupal core requires users to login with a username, but they also need an email. Usernames are easy to forget, and their structure is difficult to enforce (but hook_user() can be used for this). This page lists some tips to improve the experience.
Profile core module:
create "personal information" fields such as Forename and Family name.
Email Registration module:
Allow email instead of username.
The Register with Picture 'reg_with_pic' module adds the user picture to the registration, making it more likely that users will add pictures.
After installation, visit admin/settings/reg_with_pic.
LoginToboggan module: generic user login improvements
admin/user/logintoboggan
Allow email login
Use two e-mail fields on registration form
Delete unvalidated users after: 6 months
Display login successful message
Min. password length: e.g. 6
RealName module
Settings in admin/user/realname/general
Show realname in nodes
Overwrite user fields in view to show realnames
Disable: Show "Not verified" for anonymous users
Fields: User Forenam + Familyname to create the 'real name'
User registration notification admin/settings/register_notify
Change the subject to: !site: account requested by !user_name
Body:
The following person has requested an account:
!profile
The members website username is !user_name.Next steps:
- Verify the user's details (see also !user_view).
- Decide on whether the account is to be allowed...
- If not, just leave the account blocked (for reference), or delete the request (see !user_delete)- If some correction to the User's details are needed, visit !user_edit.
- If yes, visit http://example.com/admin/user/user, highlight the user, and select "Unblock".
Login destination
admin/user/login_destination
add a "remember me" below the login box, allow logins to be cached in the browser.
The Already In module
redirects authenticated users who attempt to visit the login, user registration, or password reset URLs to the /user page instead. This prevents authenticated users from getting an Access Denied error message. Optionally, the module can display a "You are already logged in" message when redirecting users.
Mass_Contacts
is a module to send an email to all users belonging to a specifc role. Its seems a bit dated and am not so sure it works correctly yet. There's not much doc on how to use it: see admin/build/mass_contact, visit the permissions page and the (disabled) Navigation menu item. See also 746114.
Further reading:
http://www.lullabot.com/articles/user-management-real-world-groups
Below are references to modules that can help to simplify the user interface, making it easier for non techies to edit or add content.
Vertical Tabs rearranges the (many) sections of the content add form into tabs, making it more compact.
Simplify Node add: allows sections of the Node Edit/Add form to be hidden. For example perhaps your normal content editors don't change the url, revision, comment and publishing options. So these hide these sections making it simpler and easier to understand.
String Overrides: allows standard text to be changes, e.g. if "My Settings" would be easier to understand than "My Account"
Bookmarks: can allow the user to mark what is interesting on the site (specific pages, comments, forums..).
The following are some notes from a project to build a multi-lang forum in Autumn 2009.
Key features: 4 languages, bookmarks, lots of views (member lits, posts sorted in different ways), improved navigation, solr search, notify users when thread change, mark comments as solutions.
Difficulties: multi-lang. Mark comments as solutions. Getting a pretty layout.
Hacks:
One should not hack core, but I was not always able to find alternatives..
New Modules:
Modules enabled:
Name Enabled Description
ACL (acl) Enabled Access control list API. Has no features on
Administration menu Enabled Provides a dropdown menu to most
Advanced Forum Enabled Enables the look and feel of other popular
Advanced Forum More Enabled Additional Advanced Forum Styles
Advanced help Enabled Allow advanced help and documentation.
Aggregator Enabled Aggregates syndicated content (RSS, RDF, and
Apache Solr framework Enabled Framework for searching with Solr
Apache Solr search Enabled Search with Solr
Author Pane Enabled Gathers information from user related contrib
Backup and Migrate Enabled Backup or migrate the Drupal Database quickly
Block (block) Enabled Controls the boxes that are displayed around
Color (color) Enabled Allows the user to change the color scheme of
Comment (comment) Enabled Allows users to comment on and discuss
Comment upload Enabled Enables file attachments on comments
Content (content) Enabled Allows administrators to define new content
Content Copy Enabled Enables ability to import/export field
Content Permissions Enabled Set field-level permissions for CCK fields.
Custom Search Box Enabled This module allows a user with admin page
Database logging Enabled Logs and records system events to the
Devel (devel) Enabled Various blocks, pages, and functions for
Devel node access Enabled Developer block and page illustrating relevant
Diff (diff) Enabled Show difference between node revisions.
Drupal for Firebug Enabled A helper extension for the Drupal for Firebug
FCKeditor (fckeditor) Enabled Enables the usage of FCKeditor (WYSIWYG)
Filter (filter) Enabled Handles the filtering of content in
Flag (flag) Enabled Create customized flags that users can set on
Flag actions Enabled Execute actions on Flag events.
Forum (forum) Enabled Enables threaded discussions about general
Forum Access Enabled Allows forums to be set private and allows
Help (help) Enabled Manages the display of online help.
Internationalization Enabled Extends Drupal support for multilingual
Block translation Enabled Enables multilingual blocks and block
Content type Enabled Translates content type related strings: name,
Menu translation Enabled Supports translatable custom menu items.
Profile translation Enabled Enables multilingual profile fields.
String translation Enabled Provides support for translation of user
Synchronize Enabled Synchronizes taxonomy and fields accross
Taxonomy translation Enabled Enables multilingual taxonomy.
Views translation Enabled Translation of views strings and content
Image (image) Enabled Allows uploading, resizing and viewing of
ImageAPI (imageapi) Enabled ImageAPI supporting multiple toolkits.
ImageAPI GD2 Enabled Uses PHP's built-in GD2 image processing
ImageCache Enabled Dynamic image manipulator and cache.
ImageCache UI Enabled ImageCache User Interface.
Locale (locale) Enabled Adds language handling functionality and
Menu (menu) Enabled Allows administrators to customize the site
Messaging (messaging) Enabled Messaging system. This is the base module for
Simple Mail Enabled Mail Sending Method: Integration with Drupal
Messaging Privatemsg Enabled Sending Method: Integration with Privatemsg
Node (node) Enabled Allows content to be submitted to the site and
Notifications Enabled The basic notifications framework
Notifications Enabled Provides automatic notifications.
Content Notifications Enabled Allows users to subscribe to content related
Taxonomy Enabled Allows users to subscribe to taxonomy terms.
Notifications UI Enabled Provides an UI to notifications
Path (path) Enabled Allows users to rename URLs.
Pathauto (pathauto) Enabled Provides a mechanism for modules to
Persistent Login Enabled Provides a 'Remember Me' checkbox in the login
Block user messages Enabled Allows users to block other users from sending
Privatemsg Email Enabled Notifies users about new Private Messages via
Private messages Enabled Allow private messages between users.
Privatemsg filter Enabled Allow users to filter messages using tags or
Profile (profile) Enabled Supports configurable user profiles.
Search (search) Enabled Enables site-wide keyword searching.
Solve Thread Enabled Allows marking specific comments to a topic /
Statistics Enabled Logs access statistics for your site.
String Overrides Enabled Provides a quick and easy way of replacing
Syslog (syslog) Enabled Logs and records system events to syslog.
System (system) Enabled Handles general site configuration for
Taxonomy (taxonomy) Enabled Enables the categorization of content.
Text (text) Enabled Defines simple text field types.
Token (token) Enabled Provides a shared API for replacement of
Content translation Enabled Allows content to be translated into different
Translation helpers Enabled Provides methods for other modules to use with
Translation overview Enabled Provides an overview of the translation status
Translation table Enabled UI for quick translation of taxonomy, menu and
Update status Enabled Checks the status of available updates for
Upload (upload) Enabled Allows users to upload and attach files to
User (user) Enabled Manages the user registration and login
User badges Enabled Enables assignment of graphical badges to
User registration Enabled Notifies administrator of new user
UR-Blocks Enabled Blocks that can be used with User
UR-Defaults Enabled Allows admins to specify relationships that
UR-Elaborations Enabled Allow users to elaborate on their
UR-Implications Enabled Lets admins create implied relationships. For
UR-Mailer Enabled Gives the option to mail users when about
UR Migrate Buddylist2 Enabled Allows admins to migrate buddylist2
UR-Node Access Enabled Provides per node access control based on
UR-Views Enabled Integrates User Relationships with Views
UR-API Enabled API for User Relationships. This will only
UR-UI Enabled User Relationships UI. This enables basic UI
Views (views) Enabled Create customized lists and queries from your
Views exporter Enabled Allows exporting multiple views at once.
Views UI (views_ui) Enabled Administrative interface to views. Without
Voting API Enabled Provides a shared voting API for other
[Oct.2008] I've been working with Drupal for over two years now and one area that sometimes frustrated me was providing a workable WYSIWYG editor for end-users to update content.
Until now I use TinyMCE and kept coming across problems its a bit of an art to get it to work correctly.
After another bout of TinyMCE problems with Drupal 6.5 and the Aquia theme, I though my Friday afternoon was going to finish on a sad note, when I came across FCKeditor, it was installed and up running in about 10 minutes. Magic!
http://drupal.org/project/fckeditor
In fact I'm writing this post now using the new editor, in FF3. It just seems to work, without any fuss.
Simple things like have it off by default and enabling wysiwyg when needed works... Mind you it seems a bit slower though.
The follow on to the fckeditor in Drupal, is the ckeditor.
Its has similar options to fck but it prettier (colours can be customised).
With marinelli based themes there is a bit of tuning to do though.
There is a quick reference for end-users.
After some initial tests:
Another related tip is to use the better formats module for handling what input format is used per role and content type.
[2010.03.16]: So it seems the wysiswyg module is the unified way to go for long term compatibility, will try that on the next few sites. Seems to work fine, but is less configurable. What is nice is that the configuration is linked to input formats, not roles.]
Started using the wysiwyg module which in turn uses (for example) ckeditor (the follow-on for fckeditor), via a common api.
Some tuning is needed:
*edit-user-registration-help*
*edit-code*
test*
Input formats: Filtered HTML
<p><br><table><tbody><tr><td><span><div>
<a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd><img> <div> <pre> <address> <h1> <h2> <h3> <h4> <h5>
Issues
Which editor to best preserve source?
http://drupal.org/node/789172
The site lepandevevey.org is a relatively simple one containing several "static" pages, a forum, news items and so.
However all members of the association are managed via the website: new users join via the website, the membership card is printed from the site (a special view with some custom php), profile fields are used to track membership payments.
Membership lists can be exported via to Csv (excel). One use for this is to send a paper letter to all members at the end of each year: a Word template is used to mailmerge with the CSV .
Before this site members were managed in Filemaker: a difficult enough challenge was importing the data of the 150 members from that tool. No way way found to import users pictures form Filemaker though, that had to be done manually.
The site is in French, which allowed me to realise how translation into French is incomplete, in core and contrib.
The site operates on shared hosting, with the boost module to improve performance (most access are anonymous).
Theme: stock theme (Zeropoint)
Programming: None custom modules needed. A few theme .tpl files and a script to update profile payment fields were the only programming needed. No core or standard modules were hacked.
Standard Modules used (key ones in bold):
ACL (acl) Module Enabled 6.x-1.2
Administration menu (admin_menu) Module Enabled 6.x-1.6
Admin Role (adminrole) Module Enabled 6.x-1.3
Advanced help (advanced_help) Module Enabled 6.x-1.2
Already in (already_in) Module Enabled 6.x-1.0
Backup and Migrate (backup_migrate) Module Enabled 6.x-2.2
Better Formats (better_formats) Module Enabled 6.x-1.2
Block (block) Module Enabled 6.19
Boost (boost) Module Enabled 6.x-1.18
CAPTCHA (captcha) Module Enabled 6.x-2.2
Color (color) Module Enabled 6.19
Comment (comment) Module Enabled 6.19
Contact (contact) Module Enabled 6.19
Content (content) Module Enabled 6.x-2.8
Content Access (content_access) Module Enabled 6.x-1.2
Content Copy (content_copy) Module Enabled 6.x-2.8
Content Permissions (content_permissions) Module Enabled 6.x-2.8
Content Profile (content_profile) Module Enabled 6.x-1.0
Content Profile User Registration (content_profile_registration) Module Enabled 6.x-1.0
Chaos tools (ctools) Module Enabled 6.x-1.7
Date (date) Module Enabled 6.x-2.4
Date API (date_api) Module Enabled 6.x-2.4
Date Locale (date_locale) Module Enabled 6.x-2.4
Date Timezone (date_timezone) Module Enabled 6.x-2.4
Database logging (dblog) Module Enabled 6.19
Diff (diff) Module Enabled 6.x-2.1
Email Registration (email_registration) Module Enabled 6.x-1.3
Fieldgroup (fieldgroup) Module Enabled 6.x-2.8
FileField (filefield) Module Enabled 6.x-3.7
Filter (filter) Module Enabled 6.19
Forum (forum) Module Enabled 6.19
Gallery Assist (gallery_assist) Module Enabled 6.x-1.15
Help (help) Module Enabled 6.19
Image CAPTCHA (image_captcha) Module Enabled 6.x-2.2
ImageAPI (imageapi) Module Enabled 6.x-1.8
ImageAPI GD2 (imageapi_gd) Module Enabled 6.x-1.8
ImageCache (imagecache) Module Enabled 6.x-2.0-beta10
ImageCache UI (imagecache_ui) Module Enabled 6.x-2.0-beta10
ImageField (imagefield) Module Enabled 6.x-3.7
IMCE (imce) Module Enabled 6.x-1.4
IMCE Wysiwyg API bridge (imce_wysiwyg) Module Enabled 6.x-1.1
Insert (insert) Module Enabled 6.x-1.0-beta6
Lightbox2 (lightbox2) Module Enabled 6.x-1.11
Link (link) Module Enabled 6.x-2.9
Locale (locale) Module Enabled 6.19
Login destination (login_destination) Module Enabled 6.x-2.10
LoginToboggan (logintoboggan) Module Enabled 6.x-1.7
Mass Contact (mass_contact) Module Enabled 6.x-1.0
Menu (menu) Module Enabled 6.19
Menu Block (menu_block) Module Enabled 6.x-2.3
Messaging (messaging) Module Enabled 6.x-2.2
Simple Mail (messaging_mail) Module Enabled 6.x-2.2
Simple messaging (messaging_simple) Module Enabled 6.x-2.2
Migrate (migrate) Module Enabled 6.x-1.0
Migrate Extras (migrate_extras) Module Enabled 6.x-1.0-beta1
Node (node) Module Enabled 6.19
Node Reference (nodereference) Module Enabled 6.x-2.8
Notifications (notifications) Module Enabled 6.x-2.2
Notifications Autosubscribe (notifications_autosubscribe) Module Enabled 6.x-2.2
Content Notifications (notifications_content) Module Enabled 6.x-2.2
Taxonomy Notifications (notifications_tags) Module Enabled 6.x-2.2
Notifications UI (notifications_ui) Module Enabled 6.x-2.2
Notifications Views (notifications_views) Module Enabled 6.x-2.2
Number (number) Module Enabled 6.x-2.8
Option Widgets (optionwidgets) Module Enabled 6.x-2.8
Path (path) Module Enabled 6.19
Pathauto (pathauto) Module Enabled 6.x-1.5
Persistent Login (persistent_login) Module Enabled 6.x-1.4
Poormanscron (poormanscron) Module Enabled 6.x-2.2
Printer-friendly pages (print) Module Enabled 6.x-1.12
Profile (profile) Module Enabled 6.19
RealName (realname) Module Enabled 6.x-1.3
Reg With Pic (reg_with_pic) Module Enabled 6.x-1.7
Schema (schema) Module Enabled 6.x-1.7
Search (search) Module Enabled 6.19
Simplenews (simplenews) Module Enabled 6.x-1.3
Simplenews action (simplenews_action) Module Enabled 6.x-1.3
Simplify node add (simplify_node_add) Module Enabled 6.x-1.4
Skinr (skinr) Module Enabled 6.x-1.5
System (system) Module Enabled 6.19
Taxonomy (taxonomy) Module Enabled 6.19
Text (text) Module Enabled 6.x-2.8
Token (token) Module Enabled 6.x-1.15
Tracker (tracker) Module Enabled 6.19
Content translation (translation) Module Enabled 6.19
Trigger (trigger) Module Enabled 6.19
Table Wizard (tw) Module Enabled 6.x-1.3
Table Wizard Import Delimited Files (tw_import_delimited) Module Enabled 6.x-1.3
Update status (update) Module Enabled 6.19
User (user) Module Enabled 6.19
User registration notification (user_register_notify) Module Enabled 6.x-1.11
User Reference (userreference) Module Enabled 6.x-2.8
Vertical Tabs (vertical_tabs) Module Enabled 6.x-1.0-rc1
Views (views) Module Enabled 6.x-2.11
Views exporter (views_export) Module Enabled 6.x-2.11
Views Export xls (views_export_xls) Module Enabled 6.x-1.1-beta1
Views UI (views_ui) Module Enabled 6.x-2.11
Wysiwyg (wysiwyg) Module Enabled 6.x-2.1
Zenophile (zenophile) Module Enabled 6.x-2.0
Project time: Apr-May 2010, with more tuning in Nov'10. Probably at least 2 man weeks.
To do
I'm not such a fan of the admin module, but admin menu is great.
The devel module is essential for deep digging.
Admin Role is a module to maintain an administrator role which has all available permissions. Configured in the user settings screen. Included in D7 core.
The masquerade module allows a user with the right permissions to switch users.
Historically in Drupal 5 & 6, the cron.php was called from a unix cronjob somewhere.
The Poormanscron module allow the cron task to be kicked off automatically without configuring cron. This module is being integrated into Drupal7 core.
So it make sense to useit as standard in Drupal 6 sites too.
After installation & activation of the module, visit admin/settings/site-information and change the interval to get it activated.