Actually, downloading, installing, and configuring the FAQ module was already done, since it was already in use on the first site to get this new feature.
We were already set for most of this.
- We couldn't use FAQ's heading since it was already in use with a more global description. But there is an easy answer, which is detailed later.
- Clicking on question takes user to answer further down the page.
- Categorize questions - this is critical to this solution, but we were already using it.
- Show FAQ count - this was new since we last visited the FAQ settings; we turned it on.
Pretty much everything else was, we believe, "out of the box" in terms of settings defaults.
Unlike so many taxonomy-based modules, FAQ actually shows the term description. This is the basis for solving the customized header problem. This method is easily extensible to multiple experts, should we choose to do so.
Taxonomy term descriptions may contain HTML (I hope they never take this away). So when we added the term to the FAQ categories (more confusing use of this word in Drupal), we chose something like this:
<a href="http://example.com" target="_blank"><img src="/files/kb/pictures/expert1.jpg" width="45" height="75" border="0" alt="Expert 1" hspace="3" align="left" />Expert 1</a> is a Charlotte-based ... expert. She has graciously done presentations at our meetings and welcomes your questions about .... <br/> Click here to <a href="/node/add/faq">ask her a question</a>. She will answer as soon as possible. <div class="clear-block"></div>
Note: The "clear-block" was needed because the picture was taller than the text and caused the next category to be indented.
Since FAQ uses taxonomy terms, the Subscriptions module works quite nicely to notify the expert (and anyone else who wishes to know when a question is entered.
We partially handled this issue by creating a small hack to the node form. We supply a default value so that the "required" attribute is met.
// answer $form['body_filter']['body'] = array( '#type' => 'textarea', '#title' => t('Answer'), '#default_value' => $node->body ? $node->body : t('Waiting to be answered.'), '#rows' => 20, '#required' => TRUE, '#description' => t('This is that answer to the question. It will be filtered according to the input format.'), );
This is not optimal, but at least temporarily adequate to test the concept of this feature on our web site.
How responsive is the FAQ owner? Before this article was even published, we received this response!
- The expert had to be notified when a question was posted. (Supplied by Subscriptions module.)
- The answered questions needed to be available in a Q&A format.
- There should be no administrator overhead in the process.
- The process had be governed by appropriate permissions.
- We wanted a customizable header for the question page. (Supplied by Taxonomy module.)
- We preferred a ready-made solution to creating our own module.
- It had to allow unanswered questions.
- It had to be extensible to more than one expert. (Supplied by Taxonomy module.)
The FAQ module would appear to be the clear winner for our first implementation, but the unanswered question problem is worth a few negative points. While it might not take a great deal of effort to address this, we understand that the FAQ module's owner might be (rightfully) reluctant to address this. That leaves us with the need to carry forward a less than optimal patch to deal with the issue.
Perhaps a more "ideal" solution would be a rewrite of the Question module specifically to front-end the FAQ module.
The future of this module is much more certain. It probably has many more adopters than Question. The documentation is good. The FAQ module owner is quite quick to respond to issues. And she not only adheres to Drupal coding standards but has submitted issues against the Coder module when she found gaps.
- Better solution for unanswered question.
- Preselected category.
- Set FAQ to non-published.
Perhaps jQuery could be used to add a checkbox that would turn off the "required" attribute for, or completely hide, the answer field. Or to do it by examining the selected category (how to say which categories allow it is another problem).
We think this could be done by adding the term id (tid) onto the end of the "node/add/faq" link. How this gets turned into a preselected value still needs to be worked out.
This may help to give the expert time to answer before other users see an unanswered question. We still need to determine if Subscriptions will notify someone (the expert) if the node is unpublished. On the first site to use this, most user-submitted content is set to unpublished to give an administrator time to preview it.
We also have the Taxonomy Super Select module and used it for the FAQ category.
Bonus points go to the FAQ module for having a Drupal 6 version before its general availability.