Domain: mysite.com
Stories and comments across the archive that link to mysite.com.
Stories · 2
-
Drupal E-commerce With Ubercart 2.x
Michael J. Ross writes "In the past, a Web developer tasked with building an online store would most likely do so using a dedicated e-commerce system, instead of a content management system (CMS), because even though the leading CMSs offered more features and flexibility, they did not provide robust e-commerce capabilities, such as product listings, bulk import, pricing in multiple currencies, a built-in shopping cart, and integration with tax and shipping information sources. Since that time, e-commerce systems have become more like CMSs, by adding features such as blogging and forums. At the same time, CMSs are continually expanding their e-commerce potential, usually in the form of developers adding plug-ins. For developers using Drupal, there traditionally have been two major e-commerce plug-ins (known as "modules"): Ubercart and e-Commerce. The former has emerged as the leader, and is explored in Drupal E-commerce with Ubercart 2.x." Read on for the rest of Michael's review. Drupal e-commerce with Ubercart 2.x author George Papadongonas and Yiannis Doxaras pages 364 pages publisher Packt Publishing rating 7/10 reviewer Michael J. Ross ISBN 978-1847199201 summary A detailed guide to using Drupal and Ubercart to make a virtual store. This book was published by Packt Publishing on 22 March 2010, under the ISBN 978-1847199201. (My thanks to the publisher for a review copy of the book.) On the publisher's page, visitors will find detailed information about the book, a table of contents, a sample chapter in PDF format (Chapter 9, "User Interface Enhancement Techniques"), errata (only three reported as of this writing), and links to purchase either the print or electronic versions of the book, or both at a large discount. The authors of this title, George Papadongonas and Yiannis Doxaras, are experienced open-source developers. They both reside in Greece, which may explain why the reader will stumble upon — and sometimes over — many oddly-formed phrases throughout the book, as though they had been written in a foreign language initially, and then translated into English. More on that later. Nonetheless, almost all of the material presented within the 364 pages can be clearly understood by anyone who is comfortable with the basic terminology of e-commerce and Drupal. The authors have their own website for the book, yet oddly it isn't mentioned anywhere in the text.
The book is organized into ten chapters and three appendices. The first chapter is a brief introduction to Drupal, Ubercart, and the test case used in the early chapters — in this case, a store selling electronics online. Chapter 2 explains how to install the minimum required Web technologies, Drupal, Ubercart, and related contrib modules — either individually or using packages such as XAMPP for the Web server and the UberDrupal installation profile for Ubercart. The authors recommend the use of the Thickbox module for lightbox functionality, but that one has since been superseded by the Colorbox module. The reader is told that the extra modules listed on pages 34-35 do not need to be installed immediately, but will be installed in each chapter as required; but this is misleading, because in later chapters the readers will discover repeatedly that they were not told when to install the modules. Readers may be puzzled as to whether or not they are expected by the authors to use UberDrupal, but it is of no consequence, because the end result is the same, namely, the Ubercart site is ready for configuration.
The third chapter covers basic configuration of both Drupal and Ubercart, and begins with a thorough introduction to the admin area of Drupal. Experienced Drupal users could skip most of the first three chapters — aside from the list of needed contrib modules on pages 31 and 32. In the brief section on downloading and installing Ubercart, the authors advise the reader to enable the core modules, but unfortunately provide no guidance on any of the optional ones that should be enabled so the reader can easily follow the test case in the book. The reference on page 48 to "path/x" (where x is a node identifier) is perplexing, because the authors fail to explain what they mean by 'path', since its literal use is invalid, and no directory path is presented. Also, they state that the default Drupal temporary directory (/tmp) does not need to be changed, but that is not true for Windows users who want to use an existing directory, such as C:\DOCUME~1\[username]\LOCALS~1\Temp (where [username] is their current Windows username). The cart settings on page 55 show four panes, instead of the two that will be seen by readers who have followed the authors' instructions exactly up to this point. A similar problem is encountered on page 65, because the text assumes that the reader has enabled product kits, although Chapter 2 recommended otherwise. The "Product features" pane is skipped, without any apparent reason. In general, the authors' coverage of the configuration settings provide little information beyond what is already explained on the settings forms themselves; this chapter would have been much more beneficial had the authors explored the typical cases in which the reader would want to change the settings, and the benefits of doing so.
The material becomes more interesting with Chapter 4, which gets into the details of managing categories, subcategories, products, and attributes. The authors begin by showing how to enhance products using both admin-created and user-generated tags for products and product kits. Yet in describing the latter type, a critical step in the process is neglected, namely, enabling the "Tags" setting. The reader is then told to create a couple sample products, and combine them into a product kit, which is a straightforward process in Ubercart — although some readers may initially be puzzled by the instructions to go to a Web page on the site http://www.mysite.com/ (also on page 106). More odd is the example product kit having a name of just a single component and a description consisting only of the other component's name. Readers learn how to bulk import a large amount of product data. In the process, we are instructed to "enable this module" (page 89), when actually all three modules need to be enabled. Also, no reason is given as to why the authors opted for the directory name "import" over the module's better default of "imports." The second figure on page 97 shows the first imported record not as a formatted product entry, but as PHP code, which is probably not what was intended. The next topic — product attributes — is important, because any shopping cart system that lacks flexible and powerful attribute management capabilities may appear at first glance to be a workable choice for creating an online store, but eventually those deficiencies will make it difficult if not impossible to implement the e-commerce setup desired by the store owner. The chapter is wrapped up with a brief but valuable description of the three ways to manage the products in an Ubercart site.
When it comes to shipping and packaging — the focus of Chapter 5 — far too many shopping cart systems burden the store admin with limited options and non-intuitive interfaces. Ubercart is relatively more straightforward, and the book shows how to specify destination countries, conditional actions, and shipping quotes — using flat rates, product weight, UPS, and USPS. Unfortunately, conditional actions are given little attention, and even the sample scenario is not demonstrated. This is a shame, because the topic is critical to developing an Ubercart-based store so it will automatically perform actions — such as notifying the customer — based upon a wide range of common events and conditions. Anyone planning on using the UPS shipping method should note that the registration URL provided has changed since publication of the book, but does point to the UPS Developer Kit, which has a registration link and other resources. The last section, on weight quotes, could prove baffling, because it does not match the current behavior of Ubercart in defining such a shipping method.
Properly calculating the appropriate taxes for customer orders, and accepting payments online, are two areas of e-commerce fraught with potential problems, and even greater legal risks. These are explored in the sixth chapter, which gets off to a shaky start with the claim that the overview page for "Tax rates and settings" has policies already configured, when in fact there are none. Readers learn about tax rates within Ubercart, payment workflow options, advantages and disadvantages of accepting credit cards on one's site, the configuration of payment settings, and details on the Ubercart modules available for the major gateway services — with an emphasis upon PayPal and Google Checkout. Oddly, the authors recommend that merchants outside of the United States and UK obtain VAT numbers, even though the former country does not have a value-added tax (at least, not yet). The chapter concludes with a brief overview of how to create your own payment gateway module. The authors mention that they are providing the reader with code samples for two of the most common payment gateway request methods, and yet there is no such code in the chapter, and the book has no downloadable code on the Packt Publishing website.
Chapter 7 looks at the related topics of customer management; order tracking, workflow, search, creation, and modification; and invoicing, payments, packaging, and shipping. Merchants will find much of this information collected into the reports built into Ubercart. Yet more thought should have been put into the diagrams, such as the one on page 160, which includes an unexplained asterisk in one status box, and an order going from the status of "product gathering" to a second status with the identical name. Also, the process of creating a new order as described does not match the current interface in Ubercart 2.4 (the current version as of this writing). The chapter continues with summaries of customer relationship management (CRM) in general, and CiviCRM in particular, and how it can be integrated into an Ubercart site. The authors state that the Ubercart Wish List module is part of the Ubercart "extra" list of submodules, but it is instead a separate project. Other methods of increasing sales are discussed, including newsletters, company blogs, discussion forums, and Twitter.
In some respects, the remaining three chapters can be thought of as a second part of the book, because they presume that you have completed all of the elementary components of your online store, and are now ready to customize its appearance, and begin marketing the site. Chapter 8 elucidates how to find, install, and modify a Drupal theme for your needs — as well as how to create your own, based upon the popular Zen and Fusion starter themes. The material is generally clear, except for the authors' claims that site visitors cannot "perform proper searches" using the default Drupal 6 theme (Garland), and that you the site creator "cannot interfere with UI" (whatever that means). Confusingly, pages 200 and 201 list all sorts of advanced theme configuration settings for Garland which don't exist. The chapter finishes with a demonstration of how to create a new Drupal theme from either a static HTML site or a Photoshop template (despite an earlier claim that the chapter would end with a reference to the Fusion Theming System, which is absent).
Chapter 9, "User Interface Enhancement Techniques," shows you how to improve an Ubercart-based site using taxonomies and recommendation systems (for product cross-selling), the Panels and Views modules (for greater flexibility in information display), discounts, and other techniques. This discussion has more wheat than chaff versus the earlier chapters, probably because the authors are exploring higher-level methods, and not stepping the reader through forms. But again, configuration settings are mentioned that will not be seen by the reader, evidently because the authors do not provide timely instructions as to the modules to install and enable, such as XML Sitemap (page 231).
The final chapter first explores a host of Drupal contrib modules aimed at online promotion, and then shows how to improve a site's security with backups, security reviews, and spam blocking. The final material comprises three appendices, covering a hotel booking system, lists of the modules used in the book, and some of the free and paid themes suitable for an Ubercart site.
The book contains numerous errata: "contributed systems" (page 1; should read "contributed modules"), "innovated" (page 7; should read "innovative"), "constrains" (page 7; should read "constraints"), "hundreds and thousands" (page 8; should read "hundreds of thousands"), "It is [a] social media ready" (page 8), "brooking" (page 10), "flash animated" (page 10; should read "Flash-animated"), "depreciated" (page 20; should read "deprecated"), "[the] Drupal installer" (page 27 twice, and 28), "[the] time zone" (30), "their home page[s]" (32), "to [the] site" (48), "such [a] service" (58), "customer [to] enter" (65), "ipod" (80), ."com//node" (86), "types or files" (88; should read "types of files"), "know, exactly" (106), "it it" (111), ", [the] shipping rate" (112), "charge[s] you" (128), "customers['] geographic locations" (132), "statements[,] discussed" (134), "logics" (134). That last one — an amusing non-word — seemed a "logical" and thus appropriate place to stop recording errata, even though I had yet to reach the halfway point in the book.
Earlier I noted that many of the phrases — and entire sentences — are awkwardly constructed. A few of them are unintentionally humorous, such as the phrase "to mess with" getting turned into "to mess up with" (page 205), and the phrase "a check for the balance" getting shredded into "a balanced check" (page 147) — which immediately brings to mind the question, What would be an unbalanced check? This problem worsens as the book progresses; by page 244, "caching time" has been shortchanged into "cashing time," and "number-one ally" has melted into "number-one alloy" (page 292). Some of the problems are present in all the chapters. For example, in countless places, the words "the" and "a" are needed but missing. While programming books generally are known for being grammatically and stylistically weak, there is no excuse for releasing a book to press that has not been thoroughly proofread. The same is true with regards to the technical editing of such a volume prior to publication. Throughout the book, URLs are missing the root directory "/" (which generates an error from the server). In most if not all places where the reader is told to leave a page's settings unchanged, he is then told to click the "Save configuration" button (before going on to the next page) — which is completely unnecessary and a waste of time.
But these are not the flaws of greatest importance. There is too much emphasis throughout this book on how to fill out form fields that are fairly obvious, and yet the most important subject matter is oftentimes glossed over. For instance, the topic of conditional actions arguably deserves its own chapter, or at least an extended section — not one and a half pages up front, and then several paragraphs later. A few key e-commerce topics are absent. A glaring example of this is the lack of discussion of how to sell digital products in one's store, which nowadays is important enough to warrant its own chapter. Subscription services (typically with recurring payments) is another worthy topic completely skipped. These deficiencies may be due to the authors' focus on explaining the admin pages and settings found within the basic Ubercart modules, rather than a much more pragmatic approach of exploring the steps needed to reach a goal (e.g., selling downloadable files) regardless of what modules are utilized. Admittedly, Ubercart and all of its constituent modules comprise enough details and moving parts that could justify a book of greater length. Yet room could have been made for those details and advanced topics by spending less time describing (obvious) form fields. Lastly, if the authors had expected the reader to be able to follow their instructions throughout the book, they should have made it more clear as to which modules and options should be enabled at each step.
Nonetheless, the authors have clearly put a lot of effort into making what could be an extremely dry subject more approachable, as they take the reader through the major phases of building a typical online store for selling physical goods. Offering complete explanations and plenty of screenshots, this book could be a valuable resource — as both tutorial and reference — for Web designers, developers, business owners, and anyone else involved in creating a Drupal/Ubercart e-commerce website.
Michael J. Ross is a freelance website developer and writer.
You can purchase Drupal e-commerce with Ubercart 2.x from amazon.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page. -
Running Weblogs With Slash
Two Slashdot (and Slashcode) readers -- Alex McLintock of Openweb Analysts Ltd, and Dave Aiello of CTDATA -- have graciously contributed their impressions of the new O'Reilly book Running Weblogs With Slash. Since the Slash code is now used to run sites covering a huge number of topics (fly fishing, mountain biking, "news for nerds," etc.), it's time there was at least one printed reference to it. Running Weblogs With Slash author chromatic, Brian Aker, Dave Kreiger pages 262 publisher O'Reilly rating (see each) reviewer Alex McLintock ISBN 0-596-00200-2 summary It's the first book I know about slash: That means it's the best, and the worst.dave_aiello's review:
I have been running two small-scale Slash sites since 1999. When I began developing web sites using Slash the only code available was Version 0.3, one of the first tarballs ever released by Rob Malda. That code was almost totally undocumented and not at all modular.
The Slash project has grown and the code has improved since then. Slash has now reached the point where it is a feature-laden, open source web publishing platform. However, documentation that can help new users has always been hard to come by.
I found a paragraph near the beginning of the book that I thought was important because it may help you to decide whether this book will be helpful to you:
This book is aimed at anyone interested in setting up and running a weblog with the Slash software. This includes system administrators and programmers, but attempts have been made to keep the discussion readable for people who have no desire to compile their own kernel or to rewrite the moderation system. It concentrates much more on how to accomplish things than how things work underneath, though it doesn't shy away from the greasy gears and wheels when appropriate.
The authors' choice of audience might also be why you have seen comments from some experienced Slash site maintainers indicating that they weren't entirely satisfied with the finished product. That's OK -- it wasn't written for them. But, if you have a desire to build a web site running on Slash and you don't want to spend the months that it took me to read the code line-by-line, "Running Weblogs with Slash" is a good place to start.The main part of the book begins with an overview chapter. It starts with a brief history of the Slash project. The next ten pages are a review of the user interface of Slashdot, including a number of screenshots. This is followed by three important short sections: The Slash Author Interface (administration), The Slash Publishing Cycle, and The Slash Architecture. These sections do not contain screenshots, but author interface is discussed in detail later in the book, and the publishing cycle and architecture parts have diagrams to help you visualize the concepts being discussed.
The next chapter, Installing Slash, may be the most important one of the book. This chapter is surprisingly short (about 21 pages) considering the difficulty that some people have installing the software. Two of the most critical pages of the chapter cover getting help with the key underlying software: mySQL, Perl, Apache, mod_perl, and Slash itself. All of the important URLs and mailing lists are documented here. A short outline of the installation process, and a set of step-by-step installation instructions follow. There are also short sections on building sites that are distributed across multiple machines, and running multiple virtual Slash sites on the same server.
Although the installation chapter is clearly written, some users may have difficulty completing it without a little frustration. For instance, the book says "Although many UNIX-like operating systems come with Perl already installed, building Apache with mod_perl requires the Perl source." It would help if the detailed installation section of the chapter indicated how to uninstall a binary version of Perl from at least one of the major Linux distributions. The authors have been consistent, however, in focusing this chapter on critical, Slash-specific installation issues.
The next five chapters of the book focus on Slash site administration. The topics covered include editing and updating stories, reviewing and approving submissions, comment-related functionality, moderation, and managing sections and topics. These chapters are important because most people who want to implement a Slash site have never seen the administration interface and need some help understanding the tools that are available. These chapters are also helpful to people who have experience with other web publishing systems, because a quick comparison can be done between the Slash author interface and the system with which the reader is more familiar.
The main part of the book concludes with chapters on managing a Slash-based community, basic and advanced customization, and advanced administration. The customization chapters are the only places in the main part of the book where the Perl code that makes up Slash is discussed in any detail. Now that Slash implements much of the web site's look and feel through the Template Toolkit, modification of the application source is much less important than it used to be. The advanced administration chapter is primarily about the Slash daemon (slashd), the tasks it performs (dailyStuff, moderatord, portald), and how tasks can be added and modified.
The appendices are easily the most technical part of the book. They begin with a detailed discussion of the Slash architecture, which includes several process diagrams, and a discussion of the Slash directory structure. The second appendix discusses the Slash database schema. The appendix on the Slash Template Language looks quite useful to people trying to modify the appearance of their Slash site. The Slash API appendix covers some of the important high-level functions that would be useful in building your own Slash plugin or theme. The last appendix covers Slash configuration variables, which can be important if you have to modify the location of Slash content in your file system, or you need to change other fundamental aspects of your site's configuration.
I would strongly recommend this book to you if you plan to build a Slash-based site and you want to develop a basic understanding of the Slash software as quickly as possible. You will also need to find resources (either in print or on-line) to help you understand administration of the underlying operating system, Perl, Apache, and mySQL, if you have little or no background in these subjects.
I'm sure that many people will be able to successfully install and operate Slash by using this book as their primary reference. And, if they have difficulty, they will have sufficient understanding of the architecture and terminology to ask "good questions" on the mailing lists or the Slashcode web site.
Alex McLintock's review:
Executive Summary:
This review basically lists the flaws and missing features in the book. But that doesn't mean it is a bad book - just that it is easier to find fault than praise. If you need a book on running a weblog with slash then buy this book.
About the Reviewer:
My slash experience is in running a book reviews website http://news.diversebooks.com/ using slashcode. I did set up a site years ago called "mines-a-pint.com" using a pre 1.0 version of slashcode but the site fell over due to lack of spare time.
I am also a perl programmer and web developer so I can figure out a huge variety of problems with Apache, mod_perl, and MySQL. This is lucky because slashcode depends quite greatly on the administrator having those skills. Sadly this book doesn't look into them in great detail. Were this a Wrox book the publishers would have copied a few chapters from different books - or at least given more details on how to troubleshoot those systems. The O'Reilly strategy is that you can perfectly well buy their book on MySQL, their Apache book, and their mod_perl book(s).
Choosing Slash:
I was expecting more of a comparison of Slash to other weblogs. Why chose slash over others? It is in fact a hard question to answer unless you require a site really quite like http://slashdot.org The big benefit of being able to cope with a lot of traffic probably don't apply to most sites just starting out.
The book assumes you have greater than Slash 2.2.0, but presumably quite a few people such as myself have 2.0 installed and not upgraded yet. (I don't know how many people are running pre 1.0 slash sites). It doesn't mention how you upgrade. Lets face it - even if you installed the latest version today (2.2.5) you *will* have to upgrade at some point.
Setting Up Sites:
I expected this section to be a lot more detailed than the basic instructions - but it isn't so much better. When setting up slash sites there are at least three different types of user (slash, unix, and database) and these are not differentiated properly. The authors of the book fall too easily into using slashcode jargon without realising that someone coming to this for the first time wont know the slash-speak. I understand it because I've been reading the mailing list for nearly a year. However, someone picking up this book may not have.
Most jargon terms are introduced but they could be better explained - perhaps with more diagrams. As a typical example, it took me ages to understand the difference between topics and sections. It would have been great to see examples of how different slashcode sites decided what their topics and sections would be. Originally I just saw topics and sections as being a matrix of slots into which one would pigeonhole each article. However there are some things you can do with sections (the columns of the matrix) which you can't do with the topics (the rows). This seemed to me to be an arbitrary limitation of slashcode which an installer needs to be aware of when choosing topics and sections.
More screenshots of the default theme are needed. For instance it talks about the various slashboxes which are configurable but doesn't show them.
Virtual Slash Sites:
I pretended I was a newbie at this and tried to follow their instructions for installing virtual slash sites (ie multiple weblogs on the same machine). The instructions for setting up virtual users aren't complete. EG how do you *add* a new user to DBIx::Password I figured it out because I know perl but others may have significant problems....
Slightly Unusual Config:
I wanted to see if the book would tell me how to put all slash URLs inside a directory of a pre-existing site. (eg http://mysite.com/newsdir/slashpages ) but no found info on doing this at all....
This is a shame because it means that if you wish to combine slashcode with some other html you have to take the approach of installing slash and then adding the extra html content rather than the other way around. It should have considered the situation where someone already has a pre-existing website which they just want to enhance with some news capability.
Running a Slash Site:
There is not much description of the workflow of submitted articles through the system. Instead it is explained by describing what slashcode editors (aka "Authors") do. Looking at the article workflow is important because many other organisations will have different workflows and thus will need to change their behaviour to match Slashcode and not vice versa. This is generally a "bad thing".
Would I Buy This Book?
If I were installing slash for someone and I wasn't being paid to do all the maintenance I would have no hesitation in buying this book to help whoever is doing first line support. However I don't feel a desperate need to keep the book myself since I've already learned most of what it contains just by running a slash site. I know how to read the docs, look at the perl and database, and use the mailing list.
Ok - I can't do entirely without the book because it has some useful reference sections: a full third of the book is made from Appendices and index! One of the most useful of these is the chapter on Andy Wardley's Template Toolkit. I have a bit of an advantage here since I have used Andy's code before in a different web project. However most of my future slash site design will be done by a more junior web developer who doesn't have any perl experience and I expect this will be his most used chapter. (Check back to http://news.DiverseBooks.com in a few days for his additions to this review). The final appendix is useful too -- the list of configuration variables and their meanings.
You can purchase Running Weblogs with Slash from Fatbrain. Want to see your own review here? Just read the book review guidelines, then use Slashdot's handy submission form. (Psst! O'Reilly has also made available a 20% discount for Slashdot readers ordering by phone (800-294-4747), email (order@oreilly.com) or from the O'Reilly web site. Use discount code "#E1EW36."