Blogs

Quick Payments and Donations with PayPal and Google Checkout

Payment Processors

The vast majority of 10K Webdesign clients choose to use one or all of the following for payments online:

1) PayPal

2) Google Checkout (Google Wallet)

3) Authorize.net

In our projects, we typically use Ubercart to handle the shopping cart and checkout functionality, along with one or more of these payment processors.

PayPal is free to sign up with an e-mail account and charges a 2.9% transaction fee, with lower rates for more monthly volume.. You must have a bank account to which you'll attach your PayPal account. By setting up a PayPal account, you accept payments from Amex, Discover, Mastercard, and Visa, as well as from someone who already has a PayPal account. Buttons can be created and placed directly on your site, and you receive a simple e-mail notification when you've received a payment.

Google Checkout is also free to sign up with a Google Account and has a 2.9% + .30 per transaction, with lower rates for more monthly volume. You must display your business' Federal Employee Identification Number, or you may offer your own Social Security Number with a credit card to "enable" your account. 

Authorize.net has a registration fee and monthly fees/transaction fees, depending on your package. Check the website for the most up-to-date details. If enabling Authorize.net, you'll also need to have a dedicated IP address on your host as well as a (strongly recommended) SSL certificate (both of those can be purchased through your Nexcess hosting account).

 

Payments through all of these processors work in a similar fashion: the shopper assembles items into their cart, then "checks out" using a payment, then the notification of the payment is sent back to your website and some additional actions may be set up (for example, upon receipt of member dues, the shopper is "promoted" to member status, or upon receipt of payment, the shopper may access a digital download of PDF or JPG file/s.

 

Depending on your requirements and budget, either one, two, or all three options for payment are available to you. There also may be other ways that emerge as being a good "fit" for you, depending on your needs, such as Amazon Payments, WePay, and more.

 


PayPal

http://www.paypal.com
2.9% + $0.30 per transaction
No Setup Fee
No Monthly Fee
No Cancellation Fee


Google Checkout/Google Wallet

Monthly Sales Through Google Checkout Fees Per Transaction
Less than $3,000 2.9% + $0.30
$3,000 - $9,999.99 2.5% + $0.30
$10,000 - $99,999.99 2.2% + $0.30
$100,000 or more 1.9% + $0.30

No Setup Fee
No Monthly Fee
No Cancellation Fee


Authorize.net

Payment Gateway Fees
  Setup Fee $99.00
  Monthly Gateway Fee $20.00
  Per-Transaction Fee $0.10
  Batch Fee $0.25
 
Standard Features
  Payment Methods
All Major Credit Cards
Signature Debit Cards
Electronic Checks (additional fees apply)*
FREE
  Virtual Terminal FREE
  Batch Upload FREE
  Merchant Interface
Transaction Review and Management
Online Reports and Statements
Account Configuration
FREE
  Processor Connections FREE
  Customer Support
Phone, E-mail, and Live Chat
FREE
  Fraud Prevention and Security
Address Verification Service (AVS)
Card Code Verification (CCV)
FREE
  Connection Methods FREE
 
Value-Adding Products (Optional)
  Automated Recurring Billing™ (ARB)
Setup Fee
Monthly Fee

$0.00
$10.00
  Advanced Fraud Detection Suite™ (AFDS)
Setup Fee
Monthly Fee

$0.00
$9.95
  Customer Information Manager (CIM)
Setup Fee
Monthly Fee

$0.00
$20.00
 
  * Please see the fees page in the application for complete information

 

Using Cacheing on your Drupal site

Cacheing

With many of our websites, there is a desire to balance load time against the importance of displaying updated content.

We recommend a simple "cache" mechanism for your most commonly-used views and blocks, so that a version of the content for that section is held in memory and served to specific types of users.

For example, you can offer a cached version of the view for anonymous and authenticated visitors, whereas the administrator coming to the site will always see the most updated item.

Cacheing within Drupal views comes in time-based increments:

  • Never
  • 1 minute
  • 5 minutes
  • 30 minutes
  • 1 hour
  • 6 hours
  • 6 days

Depending on your needs, you can offer a cached version of your site to allow your site visitors to have a speedier download. In our own properties, we've put a cache of up to 6 days on front page information to allow editors the chance to "vet" the content before it goes live.

 

 

 

Displaying a User's Unique Content

Import a View

In terms of usability, it is helpful to a website user to have easy access to all their existing content that they've created on the site.

We've created some code you can use as a "View" in Drupal: this allows access to the user to view their own unique content in a page and in a block format.

When users can access their most recent items, they can then remember what their most recent activity on the site was, at least in terms of new node content added like blogs, events, announcements, profiles, stories, or resources.

A logged-in user may navigate to //path/to/website/myuniquecontent for a review of all available content they've posted to the site.

To import this as a view, log in to your website as the "user #1" and go to Views | Import.

Copy and paste the text into the import window.

 

Securing your Nexcess-based Siteworx Drupal website's Ubercart using SSL

Security, by http://www.flickr.com/photos/saveoursmile/5433411025/sizes/m/in/photostream/

 

Here is a step-by-step process to work through securing your Ubercart site on our specific hosting recommendation, Nexcess.
 
Requirements: 
1) Dedicated IP address
2) Certificate Signing Request (CSR)
3) Purchase Secure Sockets Layer (SSL) certificate
4) Change Drupal's .htaccess rewrite rule to match Base URL
Drupal Site "base URL" is the same as what is listed on CSR
5) OPTIONAL, RECOMMENDED: SecurePages Module and Secure Pages Hijack Prevention
 
 
For Authorize.net enabling:
Authorize.net API Login ID and Transaction Key
Ubercart, Credit Card, and Authorize Modules turned on
FTP to create a new folder outside of document root
 
 
 
 
 
1) You must first purchase a dedicated IP address. You can purchase this directly through the Nexcess.net hosting control panel.
 
2) Now it's time to get the SSL Certificate. First log in to your Siteworx account and go to SSL Certificate
 
Link: http://docs.nexcess.net/ssl-tutorial
 
3) Install the "Private Key" by clicking "Setup Private Key". You may already have a private key from another SSL certificate previously used on another website, but typically, if this is a new site, you will "Generate" a new key.
 
4) Set up your Certificate Signing Request (CSR).
 
If you already have an SSL certificate, you do not need to take this step. If you are ordering SSL directly from Nexcess's provider (RapidSSL), please specify the information regarding your company.
 
NOTE: there is a difference between "www.mywebsite.com" and "mywebsite.com"
Consider what is version of the domain name you choose to use (with the www. or without the www.), and then stick with that.
 
5) Order your SSL certificate ($69.95 for 3 years as of November 2010)
https://orders.nexcess.net/?p=ssl
 
6) It will take 3-5 days for you to receive the confirmation of your order.
 
7) Once you have your certificate (usually sent to you in an e-mail), you may return to your hosting SSL section and paste it into the Certificate box.
 
Include the "BEGIN CERTIFICATE" and "END CERTIFICATE" tags.
 
Click "Install"
 
8) Your website should now have the SSL enabled, test by going to:
 
http://www.mywebsite.com
 
as well as
 
https://www.mywebsite.com
 
 
9) Now we turn our attention to configuring Drupal and Ubercart for these updated settings.
 
http://www.ubercart.org/docs/user/15055/securing_your_site
 
10) Review your .htaccess file (change to htaccess.txt, make changes, re-upload, and rename to .htaccess, check permissions)
 
Find this text:
 # If your site can be accessed both with and without the 'www.' prefix, you
  # can use one of the following settings to redirect users to your preferred
  # URL, either WITH or WITHOUT the 'www.' prefix. Choose ONLY one option:
 
And follow the instructions. Either redirect users to the "mywebsite.com" option, or to the "www.mywebsite.com" option.
 
This step rewrites any new link on your site to that version, e.g. if you choose the www. version, then
 
http://mywebsite.com/this-is-my-page/123
will be rewritten to:
http://www.mywebsite.com/this-is-my-page/123
 
 
 
11) OPTIONAL: If you find you continue to have issues, consider changing your "baseURL", found here:
/sites/default/settings.php 
search for: "Base URL (optional)."
 
Uncomment the $base_url and change it to the correct URL that matches your choice in step #4
 
 
12) The SecurePages module assists you in specifying which pages are secured within the Drupal installation.
http://drupal.org/project/securepages
 
Also consider adding-on the Seucre Pages Hijack Prevention module, which may help with mixed http:// (non-secure) and https:// (secure) page mixing within a site.
http://drupal.org/project/securepages_prevent_hijack
 
 
We typically place modules into the /sites/all/modules/ folder. Unpack the zipped files there.
 
Then, go to the administration page:
http://example.com/admin/build/securepages (example.com being your actual site's URL)
 
and configure. The most common Ubercart paths to protect are:
 
node/add*
node/*/edit
user/*
admin/*
cart*
uc_paypal*
cgi-bin/webscr
taxes/calculate
 
 
Whenever a visitor goes to a page with these prefixes, the SecurePages module will switch it to the SSL-encrypted version. This is important for any page that requires personal information such as contact information or credit card details (such as when you use Authorize.net).
 
 
Suggested "paths to ignore":
 
user/autocomplete/*
logout
 
 
At this point, your Ubercart configuration will be secured and the site is encrypting sensitive information. Test this by going through the checkout process to see if the site goes to the https:// version of the page.
 
 
 
 
13) If you are using Ubercart to accept credit card data directly on the checkout page, these following steps apply.
 
Additional documentation: http://www.ubercart.org/docs/user/7104/accepting_credit_card_payments
 
14) Credit Card keys:
 
You must create and specify a new filepath to a folder outside of the HTML document root version of your website where the system will store the encryption key.
 
Once this is set, you should not change it.
 
http://www.example.com/admin/store/settings/payment/edit/methods
 
For example, you will use FTP to create the folder, (at the same level as the "html" folder for Nexcess hosting) and in the Drupal Ubercart configuration, tell the system what the filepath is, for example:
 
../private
or 
../thekeys
or some other secret folder
 
Make sure that the folder has the correct permissions on it, so Ubercart may write to this folder.
 
 
15) If you are using Authorize.net, you must first set up an Authorize.net account, and then you will receive the an API Login ID and a Transaction Key from Authorize.net Keep this infomration safe.
 
 
16) Ubercart comes bundled with payment options, including 2Checkout, Authorize.net, Cybersource, Google Checkout, and PayPal.
 
PayPal is easiest to configure - you simply need a PayPal account.
 
Authorize.net functionality is as follows:
 
 
17) First make sure that the Authorize.net and Credit Card modules are turned on in:
 
 
 
18) Next, go to the details of the payment gateway directly (within Store administration | Configuration | Payment settings | Edit | Payment gateways
 
You will see the Authorize.net field - expand it and place your API Login ID and Transaction Key inside.
 
We use the following selections:
 
"Authorize and capture immediately"
 
"Enable this payment gateway for use.
 
Live transactions in a live account
 
ARB settings: Transaction mode: Production (if Automated Recurring Billing ARB - is turned on within your Authorize Account) or Disabled (if ARB is turned off)
 
CIM settings: Transaction mode: Production (if turned on) or Disabled (if turned off).
 
http://www.example.com/admin/store/settings/payment/edit/gateways
 
 
19) At this point, Authorize.net is turned on. Through Ubercart on your Drupal site, and you may securely accept credit card information directly on your site and securely pass the information to Authorize.net for payment processing.
 
 
20) Now you may configure new products for sale within your store:
 
http://www.example.com/node/add/product
 
and the new products may be purchased by a customer and placed in their card
 
https://www.example.com/cart
 
(notice that the cart is on the SSL-enabled site)
 
 
 
That's it!

12 Steps for your E-Commerce Website

bigquestions.jpg

Launching an e-commerce website can be a daunting process, but once you attain clarity on your target market, your desired sales, and a viable plan for how to get those sales, it's time to get your website up and running.

 
1) The Basics
You have a clearly defined mission, vision, values, and target market.
 
2) About Page
Your "about us" page has information about the founders or people behind the business.
 
3) Products Chosen and Ready
Your products are physically ready for sale: include packaging, brochures or cards, tissue wrapper, postal mail supplies. If you are doing drop-shipping, you also have that information handy.
 
4) Electronic Assets
You have your electronic assets completed: including a spreadsheet or full list of all product titles, description, SKU or internal code, price, and any measurements such as dimensions and weight.
 
5) Categories Set
You have some default "categories" for your products, or keywords to help people find what they're seeking on your site.
 
6) Product Photography Available
You've chosen some flattering product photos from multiple angles. Model photography includes people holding your products or using them.
 
7) Content Management System Ready to Go
You have a content management system so you can publish your own products.
 
8) Payment System Ready to Go
E-commerce is enabled through a shopping cart software. We use the Ubercart shopping tool on top of a Drupal content management system base. Choose PayPal, Google Checkout, or Authorize.net as the basics. Securitize your site, if needed.
 
9) Affiliate marketing
In place through an internal referral service or through ShareaSale.com or CommissionJunction.com Prepare your coupon codes if you're doing discounts: Who will you offer affiliate marketing or coupons to? How many products are available for these programs? How many times may a coupon be used by a single user?
 
10) Tracking
Google Analytics, AdWords, and other tracking mechanisms in place to review where your leads are coming from, and what kind of conversion rates you have.
 
11) Social Media in place
Get your Facebook Fans Page and Twitter feed ready.
 
12) Ready, Set, Go!
Check all your systems for quality control across browsers, and do a few test purchases. When you're confident, launch the site!
 

One-click installs

whichway.jpg

On many hosting packages, there is a "one-click install" available for the most commonly-used open source packages such as Wordpress and Drupal.

From our experience, it's hit-or-miss with these. You may have to run some additional rules on your hosting prior to the host getting "prepped" to be ready to install one of the packages. You'll also want to familiarize yourself a bit with databases. The Drupal or Wordpress files that will be installed on your host will "talk" to your mySQL database, so when setting up the database, make note of the hosting connection (usually "localhost" or might be a link such as db2.someotherplace.securelink.net) and the database name, the user name, and the password.

One interesting experience we have is having to convert a database after Fantastico installation of Drupal 7. Our error message included "Illegal mix of collations" -- what happens is some of the database tables are in utf-8 format, and others are not. When the system attempts to save data such as in a view, the system gets "confused" and throws a error. This helped us: http://drupal.org/node/251938

We created a 'convert.php' file to change all the tables to the correct format, and it worked moving forward.

 

If you're stuck with your one-click install, consider restarting, from the very beginning, going through each step methodically. Usually this entails you setting up your database, user, and pass. Then use your hosting control panel's recommended one-click install, or if you are able, learn File Transfer Protocol (FTP) and use the Filezilla open source FTP software http://filezilla-project.org/ to download the most recent code and install it on your server. Then unpack and follow the recommended installation instructions.

Overall, Google is your friend. Type in the error message and see if other people are having the same issue and/or if they've solved the issue.

 

The Cone of Uncertainty

It's a Journey

There is an ongoing discussion happening over in the LinkedIn Drupal group regarding how much a particular website might cost. Search for "I am interested in finding out the price range that would be charged for a website redesign brought into Drupal. Approximately 30 page it needs a blog, picture gallery, and video, PR added." in the "groups" section.

Many web developers chimed in with the different ways they estimate a cost of a website, but the most interesting post to me related to the agile method of development without a fixed bid; instead, the company creates projects and bills in 10-hour block increments at a time, with the idea that as the project comes to fruition, the client has more leeway to decide priorities and to flesh out the detailed specifications as needed. With more frequent demonstrations, the client can also visualize and engage with the site better -- and thus lead to a more satisfying end product.

Since our inception, we've offered a fixed-bid contract for a fixed set of deliverables, and we'd consider ourselves in the camp of web design/development companies who often end up "eating" some of the cost dues to "feature creep" and our clients realizing they need additional functionality mid-way through development. While some change orders may take less than 15 minutes to install, other items require heavy customization, but customization within the web development framework is the name of the game. Why build a site that looks like everyone else's? You want your website to stand out from the crowd.

All building professions, including ours, are dictated by the "iron triangle" of quality, time, and cost. I've blogged about this before, but basically, you can only pick two of the three: high quality, fast turnaround, and low price. By removing the fixed-bid aspect of the engagement process, the development relationship then moves towards more of a partnership model with both parties providing feedback on the direction of the site and what should the next priority be within that next "block" of time.

I'm interested in your feedback about fixed-bid with rigidly-defined scope versus incremental charges and a more expanded potential for definition. During our website development process, we spend the first phase modifying, parsing, and understanding the full functionality of the website. I wonder if that time could be better spent doing wireframes, starting up some basic pages, and giving you -- our customers -- more to think about.

Do you prefer a fixed fee for a fixed set of deliverables or do you desire more flexibility? Of course, some budgets are firm, so then it becomes a matter of prioritization: where do we want to allocate the time available? Towards specifications, design, functionality, user workflows, or _______ ?

The "cone of uncertainty" refers to the unknowns that arise at the beginning of a website project. The cone gets smaller and smaller as more features become defined, but the whole process relies on defining, in almost infinite detail, what the website is "supposed to do" when it goes live.

Our projects come to a satisfactory completion -- see our testimonials -- but I'm still interested in what your thoughts are about converting from a fixed-fee process to an incremental fee process.

Step by Step: Setting up a Membership Community Site Using Drupal

This article is geared to the Drupal enthusiast who is past the initial learning curve and is ready to start working with intermediate-level features.

Many times, our company 10K Webdesign is asked to build a membership-type site. This may mean a site with different "levels" of users, or membership levels, who participate on the site in varying degrees, typically for an organization like a  trade association or dues-collecting group. A member site may also mean a place where logged-in members may participate in certain interactive functions like posting content, posting to a discussion forum, uploading photos, etc.

The most common scenario is a membership directory site which allows members to post their information, such as their user profile, or content on the site, if they have made an annual dues payment.

Some examples of membership sites include:

  • Product reviews
  • Discussions about a niche topic, event, or industry
  • Event calendar
  • Forum
  • Limited content access (e.g. a news site, or a gallery site)
  • A media site that's only available to members
  • Coupons or copuon codes.

With knowledege of Drupal's capabilities, as well as some of the modules used to extend the functionality, it is possible to build out a full-featured membership site.

 

With a members-related site, the hardest task is to create a list of functions and provide detailed instructions as to what "level" of user can participate in what aspect of the site. This may mean inventorying items like site content (creating content types, main pages, and menus), displays of information (views)-- including who is allowed to see which view, as well as member permissions.

In a default Drupal installation, the site requests a username and e-mail, with password optional.

The "Profile" module allows you to extend these basic pieces of information, either during the user registration process or after the user has registered. For example, you may choose to ask for additional fields such as First Name, Last Name, Bio, Facebook/Twitter/LinkedIn links, referrer, etc. For the purposes of this demonstration, we do not ask for additional information.

Consider that the "Advanced Profile Kit" offers even more relevant, community-building functions such as Zodiac sign, hobbies, children, and other "personalized" kinds of information. This kit allows users to display their most current topics that they've participated in on the site, a user picture, a private message link and contact form (if available), and other alternatives such as user relationships, user points, user badges, etc.

How to set up a membership site.

1) Set up user roles

Drupal comes with an "authenticated" member role and an anonymous (public visitor) role. The most common third role is "administrator." Note that the very first user of a site always has all-access privileges -- it's very important to take note of the first username and password.

In a membership site, there is typically a "paid members" role if you anticipate members buying a year-long membership: members may sign up and purchase this membership product to get "promoted" to the paid member level. That paid member level may be by # of days, # of weeks, or # of years. Typically it's a 12-month or 365-day period.

You may also consider setting up a "pre-authenticated" role - Login Toboggan is a model that allows a user to sign up to a "pre-authenticated" role with limited permissions prior to being assigned to a more established role, upon confirming their e-mail address is legitimate.

Admin | User management | Roles
http://pathtoyourdrupalinstallation.com/admin/user/roles
User_roles

2) Choosing modules

The Acquia Drupal distribution arrives with the most commonly-used modules for community sites.

Additional items to consider include embedded media, Google mapping and locations, private messaging, ability to upload products to sell in a marketplace, and more.

Admin | Site building | Modules 
http://pathtoyourdrupalinstallation.com/admin/build/modules/list 

User_roles

3) Creating content types

All site content in a Drupal site is a "node" and a node can be one of multiple available "content types." A content type is typically a blog post, page, image, or story, but they can also be things like reviews, products, forum topics, and others.

Content type management and assessment includes identifying if a piece of content will have any or all of the following attached: five-star ratings, comments, image attachment, locations (through Gmap), or customized fields. For example, a "Board Member" content type will probably have the First Name, Last Name, position, bio, image, and possibly a link to a contact form.

Admin | Content management | Content types | List
http://pathtoyourdrupalinstallation.com/admin/content/types/list
contenttypes

 

4) Setting permission levels

Permissions allow you to consider what type of content or functionality is allowed for each "level" of users.

For example:

  • Anonymous Users have the permission to VIEW CONTENT
  • Authenticated Users have the permission to VIEW CONTENT and VOTE on items
  • Paid Members may VIEW CONTENT, VOTE on items, REVIEW POLL RESULTS, UPLOAD IMAGES, and POST REVIEWS
  • Administrator Members may do all of the above and more.

Once all the modules are uploaded and turned on, and your content types are available, you may assign the permissions according to your plan.

Admin | User management | Permissions
http://pathtoyourdrupalinstallation.com/admin/user/permissions
User_roles

5) Filling out content

  • Most informational sites do not need the complexity of Drupal -- if your aim is just to create an informational or blog site, a Wordpress installation should suffice.
  • However, within any site, the following are the most commonly-used pages:
  • Home
  • About Us
  • How it Works
  • FAQs
  • Member Benefits
  • Contact
  • Privacy Policy
  • Terms and Conditions

Admin | Content management | Create content | Page 
http://pathtoyourdrupalinstallation.com/node/add/page 

AddPage

6) Products and Payments using Ubercart

http://www.ubercart.org is a module that hooks into Drupal to allow products, file downloads, role assignments, shipping, taxes, and catalog management. It's an excellent tool.

In a membership site, a typical product is an "Annual Membership" and has a role assignment attached to it: when someone purchases the "Annual Membership" product, they get promoted to the "paid members" role for one year.

Admin | Content management | Create content | Product
http://pathtoyourdrupalinstallation.com/node/add/product

MemberProduct

Here is the "role assignment" attached to the product:

RoleAssign

Here you'll see that the Global Expiration is set at12 months, so upon purchase of this product, the user gets assigned to the "Paid Member" role for 12 months.

(Note that if you want to have this type of functionality, you must first turn on Ubercart - Roles in the "Modules" first).

Here is where you may set the global role assignment settings:

Admin | Store administration | Configuration | Product Settings | Edit | Product Features
http://pathtoyourdrupalinstallation.com/admin/store/settings/products/ed...
SpecifyRoleAssignment

 

 

GlobalExpire

 

If you're using Ubercart, you'll need a payment gateway, such as PayPal or Authorize.net, to accept payments. If you choose to accept payments on your site, you'll also want to purchase SSL security on your site, to keep your user's information private and secure.

 

7) Flagging

http://www.drupal.org/project/flag

This tool allows you to set up "flags" like "save to wishlist" or "bookmark", as well as "flag as inappropriate" or "flag this user" on a membership site. This becomes very important in cases with tens of thousands of users, or hundreds of thousands of posts --- with the member community able to flag items and users, there is a degree of self-policing that can ease the burden of administering the site.

Admin | Site building | Flags | List
http://pathtoyourdrupalinstallation.com/admin/build/flags/list
Flags

Flagged items may be global or per-user. Use the Rules module to assign certain actions upon a flag, such as e-mailing the site owner or the node author if, for example, an item is marked as "inappropriate."

8) Private Messaging

http://drupal.org/project/privatemsg

The Private Message module allows an in-box feature for your members and offers message tagging, sending, and reading. Remember to check permissions to assign the capability of each of these functions to a specific role of user.

Admin | Site configuration | Private Messages
http://pathtoyourdrupalinstallation.com/admin/settings/messages

PrivateMessage

 

In this example, authenticated users may read and delete private messages, but only paid members may read, delete, and write new private messages.

PrivateMessagePermissions

 

In the Block administrator you may specify where new message notifications appear. The user may also be set up to receive an e-mail at their e-mail on file, whever they receive a private message. Review the module documentation for more information.

newmessageindication

9) User Points

http://drupal.org/project/userpoints
User points Nodes and Comments http://drupal.org/project/userpoints_nc

"User Points" allows users to earn "points" for actions within the site like posting comments or creating new content.

Admin | Site configuration | Points settings | Points for posting nodes 
http://pathtoyourdrupalinstallation.com/admin/settings/userpoints 

UserpointsforNodes

Some ways to use userpoints include: upgrading to a new level, purchasing items (physical or download) with points, exchanging points, or using web points for an in-real-life equivalent e.g. a coupon or in-person meeting.

10) Blocks

The Blocks manager allows you to specify where certain blocks should appear. Certain blocks come standard whenever you install a module. Other blocks may be created using the "Views" tool.

Admin | Site building | Blocks | List 
http://pathtoyourdrupalinstallation.com/admin/build/block/list

Blocks

11) Customized Views

This particular view also displays as a page and shows the user picture, their username, the roles they're assigned to, the date they joined, and their number of userpoints.

To create a new view, go to: Admin | Site Building | Views | Add
http://pathtoyourdrupalinstallation.com/admin/build/views/add
allusers

I've created this particular view as a grid of users 3 across.

showuserfaces
Here's the export of that view:

$view = new view;
$view->name = 'All_Users';
$view->description = 'All users';
$view->tag = 'All users';
$view->view_php = '';
$view->base_table = 'users';
$view->is_cacheable = FALSE;
$view->api_version = 2;
$view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
$handler = $view->new_display('default', 'Defaults', 'default');
$handler->override_option('fields', array(
  'picture' => array(
    'label' => '',
    'alter' => array(
      'alter_text' => 0,
      'text' => '',
      'make_link' => 0,
      'path' => '',
      'link_class' => '',
      'alt' => '',
      'prefix' => '',
      'suffix' => '',
      'target' => '',
      'help' => '',
      'trim' => 0,
      'max_length' => '',
      'word_boundary' => 1,
      'ellipsis' => 1,
      'html' => 0,
      'strip_tags' => 0,
    ),
    'empty' => '',
    'hide_empty' => 0,
    'empty_zero' => 0,
    'exclude' => 0,
    'id' => 'picture',
    'table' => 'users',
    'field' => 'picture',
    'relationship' => 'none',
  ),
  'name' => array(
    'label' => '',
    'alter' => array(
      'alter_text' => 0,
      'text' => '',
      'make_link' => 0,
      'path' => '',
      'link_class' => '',
      'alt' => '',
      'prefix' => '',
      'suffix' => '',
      'target' => '',
      'help' => '',
      'trim' => 0,
      'max_length' => '',
      'word_boundary' => 1,
      'ellipsis' => 1,
      'html' => 0,
      'strip_tags' => 0,
    ),
    'empty' => '',
    'hide_empty' => 0,
    'empty_zero' => 0,
    'link_to_user' => 1,
    'overwrite_anonymous' => 0,
    'anonymous_text' => '',
    'exclude' => 0,
    'id' => 'name',
    'table' => 'users',
    'field' => 'name',
    'relationship' => 'none',
  ),
  'rid' => array(
    'label' => '',
    'alter' => array(
      'alter_text' => 0,
      'text' => '',
      'make_link' => 0,
      'path' => '',
      'link_class' => '',
      'alt' => '',
      'prefix' => '',
      'suffix' => '',
      'target' => '',
      'help' => '',
      'trim' => 0,
      'max_length' => '',
      'word_boundary' => 1,
      'ellipsis' => 1,
      'html' => 0,
      'strip_tags' => 0,
    ),
    'empty' => '',
    'hide_empty' => 0,
    'empty_zero' => 0,
    'type' => 'separator',
    'separator' => ', ',
    'exclude' => 0,
    'id' => 'rid',
    'table' => 'users_roles',
    'field' => 'rid',
    'relationship' => 'none',
  ),
  'created' => array(
    'label' => 'Created date',
    'alter' => array(
      'alter_text' => 0,
      'text' => '',
      'make_link' => 0,
      'path' => '',
      'link_class' => '',
      'alt' => '',
      'prefix' => '',
      'suffix' => '',
      'target' => '',
      'help' => '',
      'trim' => 0,
      'max_length' => '',
      'word_boundary' => 1,
      'ellipsis' => 1,
      'html' => 0,
      'strip_tags' => 0,
    ),
    'empty' => '',
    'hide_empty' => 0,
    'empty_zero' => 0,
    'date_format' => 'small',
    'custom_date_format' => '',
    'exclude' => 0,
    'id' => 'created',
    'table' => 'users',
    'field' => 'created',
    'relationship' => 'none',
  ),
  'points' => array(
    'id' => 'points',
    'table' => 'userpoints',
    'field' => 'points',
  ),
));
$handler->override_option('filters', array(
  'status' => array(
    'operator' => '=',
    'value' => '1',
    'group' => '0',
    'exposed' => FALSE,
    'expose' => array(
      'operator' => FALSE,
      'label' => '',
    ),
    'id' => 'status',
    'table' => 'users',
    'field' => 'status',
    'relationship' => 'none',
  ),
));
$handler->override_option('access', array(
  'type' => 'none',
));
$handler->override_option('cache', array(
  'type' => 'none',
));
$handler->override_option('items_per_page', 0);
$handler->override_option('style_plugin', 'grid');
$handler->override_option('style_options', array(
  'grouping' => '',
  'columns' => '3',
  'alignment' => 'horizontal',
  'fill_single_line' => 1,
));
$handler->override_option('row_options', array(
  'inline' => array(),
  'separator' => '',
  'hide_empty' => 0,
));
$handler = $view->new_display('page', 'Page', 'page_1');
$handler->override_option('path', 'allusers');
$handler->override_option('menu', array(
  'type' => 'normal',
  'title' => 'All Users',
  'description' => 'All Users',
  'weight' => '0',
  'name' => 'primary-links',
));
$handler->override_option('tab_options', array(
  'type' => 'none',
  'title' => '',
  'description' => '',
  'weight' => 0,
  'name' => 'navigation',
));

12) The Frontpage "River" of posts

The default way for you to assign posts allows you to specify how many most recent posts appear in the front page.

Admin | Content Management | Post settings | "Number of posts on the main page"
http://pathtoyourdrupalinstallation.com/admin/content/node-settings
homepageposts

As you specify, the "river" of posts will stream through your frontpages, showing the most recent pieces of content available to visitors and users.

View for a Logged-in Admin User

homepage

View for a Public User

homepagevisitor

13) Setting up Ubercart

The configurations you'll be using in your Ubercart module depend on the payment methods and gateway you'll accept. Typically a PayPal account will work for a startup or smaller organization. If you choose to accept credit card numbers on your site, using Authorize.net, for example, you'll need to take additional steps to secure the site through SSL certificate and some additional considerations (search the Ubercart forums for more information on securing your site).

Ubercart Store Administration is here:
http://pathtoyourdrupalinstallation.com/admin/store
There are many overall features within Ubercart that I recommend you take an afternoon, a week or two (or more) to understand. Here is the user guide: Ubercart User's Guide

For the purposes of our membership site, we are focused on the payments and the checkout.

To gain an overview of general payment settings on your membership site, visit the "Payment Settings Overview" section:

Admin | Store Administration | Configuration | Payment Settings | Overview
http://pathtoyourdrupalinstallation.com/admin/store/settings/overview
paymentsettings

To configure your payment, such as the PayPal e-mail to accept payments, configure the "Payment Methods"

Admin | Store Administration | Configuration | Payment Settings | Edit | Payment Methods
http://pathtoyourdrupalinstallation.com/admin/store/settings/payment/edi...
paymentmethods

14) From the User's Perspective: Purchasing a Membership

From the user's perspective, they are either a logged-in authenticated user (and they may also have an additional role on your site) or they are an anonymous visitor, and they see the product you created in step 6 above.

Here's a sample of a visitor purchasing the "Membership" product - this is an annual membership as a paid member of the site.

purchasemembership

Add to Cart

Here, the visitor has added the product to their cart. They are ready to checkout.

UCAddtocart

Checkout

Here is the visitor, Jane Doe, and the information related to purchasing the annual membership. Note that in the permissions we've said that any kind of user of the site (at any role level) can create a new order, like Jane is doing today.

UCCheckout

Checkout Review

There is an additional checkout review page to check the details, prior to making the payment.

UCCheckoutReview

Making the Payment

Jane is certain she wants this membership and is now sent to PayPal (our specified payment gateway) to make her payment. Upon receipt, she'll get a PayPal receipt as well as a receipt from our website.

Paypalscreen

Additional Checkout Configurations

Note that you as the site administrator/builder can choose from many different combinations of options for handling the checkout process. Some variables that are available include: enabling anonymous checkout, hiding shipping information, using collapsing checkout panes, sending new customers a separate e-mail with account details, etc.

You may manage these configurations here:

http://pathtoyourdrupalinstallation.com/admin/store/settings/checkout
CheckoutConfig

15) From the Store Owner's Perspective: Tracking Orders

There are feature-rich reports available through your Ubercart installation. Included is a list of all the orders:

Admin | Store administration | Orders
http://pathtoyourdrupalinstallation.com/admin/store/orders
StoreAdmin_Orders

Notice that you can use this orders feature, in conjunction with your existing users list, to gain good understanding of who is on your website.

Admin | User management | Users | List
http://pathtoyourdrupalinstallation.com/admin/user/user/list
UpdatedUserlist

Note our newest user, Jane Doe, who just recently purchased her annual membership to our community website and was promoted to paid member.

16) Membership by Role Determines Access to Content

Remember our permissions grid? Now that you've specified which user roles have access to which content types, the Drupal system automatically matches to the logged-in user and shows them the content that is available to them. In this case, paid members may add blog posts, forum posts, and stories.

Here is what user janedoe can access when she logs into our community site. Notice that only blogs, forums, and stories are available for her if she chooses to "create content" from her members-only navigation menu.

http://pathtoyourdrupalinstallation.com/node/add
AllContent

17) Members may Add Content

Jane Doe, who is now paid up for the next year, chooses to log in and create her own content, in this case, a new blog entry.

AddBlog

18) Updated Homepage

The new content created by your paid members now shows up in the "river" of posts, if you have specified that that content may be published automatically.

Note that if you choose to add an additional level of moderation, such as "hold for moderation," you can use the "Trigger" module to send an e-mail notification to the administrator when a new item is posted, and then "Rules" to allow that unpublished content to go live upon a certain action or additional moderation steps. User's guide to using Rules: Rule Based Action Execution (Drupal 6/7)

UpdatedHome

19) Flagging by your Users

The flags that you created as an administrator are now available to your logged-in users, pre-determined from the site specifications and organized through permissions and the "Flag" administration.

In this case, there exists a "bookmarks" kind of flag. Youu may specify your own flags, as well as if they are global flags or user-specific flags. "Bookmarks" or "Add to wishlist" are user-specific flags; but "Mark as inoffensive" might be a global flag that you set up to trigger action from an administrator.

Here is where you may administer your flags:

Admin | Site building | Flags
http://pathtoyourdrupalinstallation.com/admin/build/flags/list
bookmarkthis

Here is the item recently bookmarked: notice the status message below: "This post has been added to your bookmarks."

bookmarked

Here is the default view of existing bookmarks - accessible through the user's menu or from their account details page. You may edit this view, if desired: for example, you may want to add the image thumbnail, a link to send a private message to the author, or other information about each bookmarked node.

mybookmarks

20) Tying it all Together with a Theme

Now that you have a lot of the functionality working, you can work with your designer or use a theme (pre-built or uniquely customized) to add some nice graphics to the site.

You'll usually want to store your theme folder in /sites/all/themes/*

On the admin side, you can select from available themes. Note that the Acquia distribution of Drupal comes with some very clean themes such as Acquia Marina and Acquia Slate.

http://pathtoyourdrupalinstallation.com/admin/build/themes/select
theme

The Final Display

You've now pulled together a community membership directory-type site, with User Membership on an annual dues-paying basis, online payment through PayPal, user points, private messaging, bookmarks, and a custom view of all members.

Here is what it looks like switched to the Acquia Marina Theme:

allputtogether

And, because we like the separation of styling and functionality, here is the same site switched to the Acquia Slate Theme: Drupal is great!

allputtogether

With all the available modules and documentation from Drupal, your ability to develop these kinds of complex sites, with high functionality and interactivity, is greatly enhanced. The bonus of Drupal's extensive user community means you can ask questions and find answers in a relatively tight timeframe (check the search engines and Read the Manual First).

We have not even touched on some of the other fine ways that are available to you and your client to extend the site using open source community-contributed modules.

Ideas include Facebook Connect (connecting to your Drupal site using an existing Facebook login), Gmap Module (attaching map locations to your content), Ubercart Marketplace (allow your users to sell their own items through your online catalog), Organic Groups (allow private Ning-style networking), Five-star ratings (allow ratings on nodes), Aggregators (to collect RSS feeds from other sites and publish them as a resource on your site), and literally hundreds of other options to increase your site's functionality.

If you have additional ideas on membership-oriented community-building sites, please feel free to list them in the comments.

Monica S. Flores is a web developer through 10K Webdesign, which focuses on websites for progressive organizations and membership groups. She founded a member community for success-oriented women ASuccessfulWoman and one of the first green business directories by and for women GreenBusinessWomen. Contact her through Twitter.

You Resonate with Your Values

Edamame

Your values and integrity are the highest items that you have available through your business or organization. As you market and spread the message about what you offer, you find people who are "resonating" at the same level as you. If you want to attract more of the types of people you want to work with, be absolutely clear about the values you stand for -- it becomes easier and easier to find customers, clients, and community members who "fit" your values.

So, for example, if you run a blog, continually post on items that are important to you and your company.

If you offer e-commerce, continually highlight products that fit your stated mission, vision, and values.

If your organization is growing its membership base, continually post about your organizational strategy and beliefs.

If your company is selling to a target market, continually focus on what you stand for: why does a customer want to choose your company over any of the other options in the marketplace?

 

With billions of people on our shared planet, we have an opportunity to finely craft and hone our vision, to find strength and clarity in that vision, then work -- together -- to make that dream a reality.

 
Manifest the world's abundance and give your own creative genius an opportunity to help us solve the pressing challenges of our time. Join us in working towards environmental and social responsibility.

 

What to do when your website goes down

Four Hands

When your website goes down, here is a quicklist of what to check.

1) Is the site down for just you, or is the site down for everyone?

You can check if your website is down here:  http://www.isup.me/

If it's just you, there is something wrong with your Internet Service Provider or possibly with your machine or current internet setup. Check the plugs and wires, make sure everything is turned on, and try restarting your machine.

 

2) Is your domain name in order?

You can check http://www.whois.com or http://www.godaddy.com for the current domain details -- who is the owner, when was the domain registered, and when does the domain name expire?

If your domain name has expired, you'll want to re-register it again, if possible.

 

3) Is the hosting in order?

You can check your hosting package details through your hosting provider. In our case, this is either 10kHosting.com (for PHP sites) or Nexcess.net (for Drupal sites). If your hosting has expired, you'll want to renew your hosting so the site can go back online.

 

4) Is there a problem with the existing host?

Sometimes the support team at your hosting provider will have issues with their machines. Check the website or the Twitterstream (do a search for the hosting company's Twitter account) to see what the situation is.

 

5) Is text looking a little strange on the site, or is there a piece of the page missing?

It's possible that there is some code somewhere in your page that is suppressing the rest of the page, such as a unclosed tag or some missing HTML symbols. What was the last thing that happened on the website? Was someone working on it? Identify exactly the situation that led to the current situation.

 

6) Is there a problem with the content management system or files used to create the site?

This is where your web designer/developer comes in. If a module is out-of-date, or the site breaks during an upgrade, this is when you can call the web design company.

 

7) Is e-mail working? Use Gmail, Yahoo, or another provider to send an e-mail to your e-mail address (e.g. you@companyname.com).

If you never receive that e-mail, then it may be localized to the mailserver. Contact your hosting provider or support team there.

 

Most of the above is made easier if you know all the logins and passwords for each of your properties.

When we document a site, we help you organize:

 

Domain Name Details:

Registrar

Username

Password

Domain expiration date

 

Hosting Details:

Control Panel Username

Password

PIN or call-in code

 

Database Details:

Database name

Database user

Database password

 

CMS Login

Administrator login

Administrator password

Administrator e-mail