Pages

Saturday, February 22, 2014

Sending HTML Emails from Drupal Webform

The Webform module is one of the most popular modules in Drupal.
Webform is relied upon for everything, from contact forms, to donations to event registrations.
By default, Webform sends emails in plain text. In this tutorial, we're going to show you how to send Webform emails in plain text, which allows you choose different layouts or designs.
media_1386859816684.png
  • Go to Configuration > Mime Mail.
  • You can choose Full HTML under the "E-mail format" setting.
media_1386859771575.png
Now it's time to setup your webform.
  • Find your webform.
  • Click the Webform tab and then click E-mails.
  • Click Add.
  • Enter the email addresses you want to send webform results to.
media_1386859674331.png
  • Scroll down to the E-mail template area.
  • Check the "Send e-mail as HTML" box.
  • Click Save e-mail settings and the template box should now show HTML:
media_1386860400793.png
  • Check the results of your new HTML email:
media_1386860307093.png

Decimal, Float or Integer in Drupal Fields?

Drupal comes with 13 fields and several of them deal with numbers.
Newcomers to Drupal can become confused about the difference because there are 5 different number fields available:
  1. Decimal
  2. Float
  3. Integer
  4. List (float)
  5. List (integer)
In this tutorial, we're going to explain the difference between those 5 number fields and explain when you would use each one.

Integer

Integer is the easiest table of number field to understand. Integer is another word for whole numbers.
Integers are whole numbers such as 1, 2, 3, 10 or 500. This is ideal for numbers such as ages or years.
There are no settings at all for Integer fields:
media_1387475209862.png
You can't enter any spaces, letters or any punctuation into Integer fields.
Things such as spaces, commas or decimal points are added from the Manage Display tab:
media_1387475385532.png

Decimal

The Decimal field allows numbers with fractions.
You can decide on three settings for the field, including:
  • Precision: the total number of digits, both before and after the decimal point.
  • Scale: the number of digits after the decimal point.
So in the example below, a Scale of 2 would be ideal for storing prices. This is because there can only be two numbers to the right of the decimal point in prices such as $32.89
media_1387475296029.png
As with all of the number fields, you can't enter any spaces, letters or any punctuation into Integer fields.
Things such as spaces, commas or decimal points are added from the Manage Display tab:
media_1387475358659.png

Float

Float is definitely the most confusing of the umber fields.
Here's our simple rule: if you don't know what a floating point number is, you don't need to use the Float field.
However, for those of you that don't know but are curious, here's a quick explanation:
"Floating point" is a term used in computer programming. Basically, floating point numbers are numbers that contain floating decimal points.
Here's the best, simple explanation I've read about why floating points are used: http://floating-point-gui.de/formats/fp/
"Since computer memory is limited, you cannot store numbers with infinite precision, no matter whether you use binary fractions or decimal ones: at some point you have to cut off. But how much accuracy is needed? And where is it needed? How many integer digits and how many fraction digits?
    • To an engineer building a highway, it does not matter whether it’s 10 meters or 10.0001 meters wide - his measurements are probably not that accurate in the first place.
    • To someone designing a microchip, 0.0001 meters (a tenth of a millimeter) is a huge difference - But he’ll never have to deal with a distance larger than 0.1 meters.
    • A physicist needs to use the speed of light (about 300000000) and Newton’s gravitational constant (about 0.0000000000667) together in the same calculation.
To satisfy the engineer and the chip designer, a number format has to provide accuracy for numbers at very different magnitudes. However, only relative accuracy is needed. To satisfy the physicist, it must be possible to do calculations that involve numbers with different magnitudes.
Basically, having a fixed number of integer and fractional digits is not useful - and the solution is a format with a floating point."
Here are the field settings for a Float in Drupal. The only thing you can choose is whether to use a decimal point or a comma.
media_1387475251888.png
The Manage Display settings are the same as for Decimal.
media_1387475326005.png

List (float) and List (integer)

Both of these fields allow you to create a list of pre-defined choices. Unlike the other 3 fields, people will not be allowed to enter their own numbers.
media_1387477816235.png
If you choose "Check boxes/radio buttons", then this is how the options will show. If you want to remove the N/A option, set the field to be required.
media_1387477879075.png
If you choose "Select list", then this is how the options will show:
media_1387477972391.png

Entity Views Attach: Use Views Almost Anywhere

Entity Views Attach (EVA) is a wonderfully useful Drupal module which makes Views more powerful.
EVA allows you to automatically attach any view to content, comments or terms.
We're going to show you 2 examples of EVA in use. Both of them solve problems that were asked by our members this week.
First, we'll see how to sort terms however we want and then we'll see how to add an image for a file download link.

Example #1: Sort taxonomy terms

You can download EVA from https://drupal.org/project/eva.
Here's the first problem we face. We don't have any way to contol the order of our taxonomy terms. Our training member wanted to take control of the ordering and sort these terms alphabetically.
media_1389133598566.png
Let's go and create a view that will sort our terms.
  • Go to Structure > Views > Add New View
  • Choose to show "Taxonomy terms" and then select the terms you want to show. In this example, we'll show "Tags".
  • Choose the Display format you want, but you must choose to show fields.
  • Click Continue and edit.
media_1389132814072.png
  • At the top of the Views screen, click Add and then choose EVA Field.
media_1389133131369.png
  • You will now see a new area of Views called "Entity Content Settings":
media_1389133169834.png
  • Click Entity Type and choose where you want to attach this View to. In our example, we chose "Node".
It's worthing noting that you can also use EVA to attach Views to Comments, Terms or users. For example, you might want create a View showing the content that a user has created and show it on their profile. In that instance, you would choose "User".
media_1389133193568.png
  • Click Bundles and choose which content type you want to attach this View to. In our example, we choose "Article".
media_1389133441656.png
Finally, we need to make sure that EVA will only pull in the terms that have been added to the content we're looking at. Otherwise, we'd end up with a very long list.
  • Under Advanced, click Add next to Relationships.
  • Check the box "Taxonomy term: Content with term" and then on the next screen, check "Require this relationship".
media_1389194589478.png
You are now free to create the view as you wish. Here's one change we need for our example:
  • Under Sort Criteria, choose to sort the view how you wish. In this example, we choose "Taxonomy term" and "Sort ascending".
media_1389133543745.png
  • Save the view.
  • Visit any article on your site with terms and you'll see that your new view has been attached:
media_1389133576686.png
If you want to remove the original Tags field, go to Structure > Content types > Manage Display and move the "Tags" field to the "Hidden" area:
media_1389134060194.png

Example #2: Changing a download link into an image

Here's an alternate example of EVA in action. In this example, our member wanted to change a file name into a "Download image".
We've shown how to do this before with Display Suite. Now we'll show how do it with EVA. The image below shows the problem - the file name is showing instead of a download button that we can style.
media_1389134017895.png
  • Go to Structure > Views > Add New View
  • Choose to show an "Unformatted list" of "fields"
media_1389135263579.png
  • Click Add > EVA Field
  • Click to add a new field and choose "File: Path"
media_1389136150279.png
  • Check "Display download path instead of file storage URL"
media_1389136227861.png
  • Check the box for the "REWRITE RESULTS" area.
  • In the Text area, use HTML to show an image and a link. We can use the Replacement patterns to automatically insert the URL with [field_file]. To do this, you will need to know the URL to the image, which in this example is http://bit.ly/19ZE2db.
media_1389134438655.png
  • Look under "Entity Content Settings", Click Entity Type and choose where you want to attach this View to.
  • Click Bundles and choose which content type you want to attach this View to.
media_1389134476360.png
We now need to add both a Contextual Filter and a Relationship.
  • Contextual Filter: select "Content: NID"
  • Relationship: select "Content: File". Make sure to check the "Require this relationship" box.
media_1389136344829.png
That should complete the process and the image will show. Click on it and you'll download the file.
media_1389136415994.png

Remove Duplicate Views Results

When you are building a Drupal site and creating views, it's not uncommon to find that your view is showing the same result multiple times.


Here are two common ways to remove duplicate views results.

Option 1: Distinct

This is how Views describes the Distinct option:
"If there are multiple identical items, each will be displayed only once. You can use this to try and remove duplicates from a view, though it does not always work."
  • Open the Advanced area.
  • Next to "Query settings", click "Settings".
media_1389388765421.png
  • Check the boxes, "Distinct" and "Pure Distinct".
media_1389388828163.png

Option 2: Aggregation

Aggregration is often used to perform calculations on field data. For example, you can use Aggregation to count the number of content items in a particular content type. Or you could use it count the average number of comments on your content.
However, if the Distinct option doesn't work, we can use also try to use aggregation to remove duplicate items.
  • Open the Advanced area.
  • Next to "Use aggregation", click "No".
media_1389534990668.png
  • Check the "Aggregate" box.
media_1389535015509.png
  • On the left-hand side of the view, notice that "Aggregation settings" is now an option in several areas.
  • Click "Aggregation settings" for your Filter Criteria.
media_1389536296139.png
  • Choose "Count DISTINCT".
media_1389536331505.png
  • Click on the name of your Filter Criteria.
  • Choose "is equal to" and set "Value" to "1".
media_1389536414529.png