You may already have heard of Packt, the fast-growing publisher of hardcopy and digital books on specific technologies, due to the large number of Drupal books it has published over the years. However, you may not be aware that they recently relaunched their website, www.PacktPub.com, using Drupal as its framework.

Packt Publishing is a modern, unique publishing company with a focus on producing cutting-edge books for communities of developers, administrators, and newbies alike. Packt has so far published over 15 Drupal books and remains committed to producing practical solution-based books for Drupal developers, along with the best available online bookstore. The new website, which took 12 months from design to launch, was developed with UK-based Bluetel Solutions. The new version not only adds to the existing functionality of Packt’s original website, but now also offers a new, enhanced customer experience with an advanced design.

So how was Drupal chosen for the project?

It was a difficult choice to select one CMS, due to the depth of quality in the market. However Drupal became the obvious choice for us for a number of reasons, primarily:

  • Drupal is open source, which fits Packt’s values and allows us to walk the walk, as it were.
  • Its modularity means it’s easily extendable. The wealth of modules and extensions made Drupal a more attractive choice as there were existing solutions to many of our requirements.
  • The support from the community is strong, helpful and immediate, which has proven to be extremely valuable for our developers.
  • It is very well designed for SEO. Incoming visits from organic search provides PacktPub.com with around half a million visits a month, so maintaining and ultimately growing this level of traffic was important for us. By default, Drupal is well structured for SEO and provides users with a number of tools to improve their site’s searchability. From setting cleaner URLs through to introducing better rewrite rules, we have been able to clean up the way our site is structured for search.
  • As a plugin, Ubercart has been exceptionally easy to set up and integrate with Drupal as well as our payment provider and in-house sales systems. We have over 400 books on our site and every book has an eBook, which means 800 products in total, this is an extensive store, and Ubercart has been able to handle it very well. Its seamless integration with Drupal has made is surprisingly easy to administer and manage.

Improved layout, design and content management

Packt is committed to making the use of the new website as simple and usable as possible, ensuring users can easily find the variety of content that Packt provide. The new website has improved search, an aesthetically pleasing design and navigation.

Jeff from the Bluetel Solutions’ Development team explains how they approached its development:

The modules that were core to the development of Packt's content are the usual trio of suspects: CCK, Panels and Views. As we deal with a multitude of different content types and a number of associated behaviours, these modules are essential in organising, presenting and relating them together. For example, in our forthcoming blog feature Views provided almost 100% of the functionality we needed.

Views in particular gave us the flexibility of quickly extracting the raw data and prototyping capabilities for the various display contexts we had for our books, and then the power to lay it all out in a pixel perfect representation of the site's design. If you're new to Drupal it's worth spending some time getting to know how Views works; about a third of the work we had planned for as proprietary modules for the site was accomplished using the Views module instead.

Honourable mentions go to the ImageAPI+ImageMagick and ImageCache modules: we developed a few extra filters to create the reflection and shadowing effects you can see when viewing our book pages. Using the ImageMagick instead of the default GD API produces much higher quality output, which is critical for an ecommerce site to show off its products with the highest quality images derived from the originals.

The three modules allow you to format any image you want to include on the site; when we have need to display the same image content in multiple contexts this pays dividends in consistency.

The various members of the Packt content team will need to post book news and articles online immediately, and they need to be able to link the various content types without learning HTML or any other tools. These requirements made Drupal a natural choice and makes the node referrer module a worthy mention. The node referrer module provides a counterpart to the unidirectional link that nodes have in the CCK, so we can relate eBooks back to books that link to them, authors back to articles, and so on.

Enhanced checkout system

Customer accounts clearly illustrate previous purchases as well as free eBooks available from Packt, while the checkout system has now been improved to move customers from selecting a book to the order confirmation page in a matter of clicks. Packt is now certified to handle payments in-house, while previously customers would be redirected to a third party payment provider, payments are now handled by Packt, which results in a speedier checkout process for customers.

Again, Jeff from Bluetel Solutions explains:

For e-commerce we chose Ubercart as a base, but had to modify it to accommodate the unique business logic and checkout flow that Packt has, as well as integrating it with our legacy order processing system. However, because of the well documented and comparatively straightforward process that Ubercart and its modules were designed with, this was significantly easier than it could have been. As a result we've been able to link in cart functionality to a number of places, and improve our discounts system to show the modified price of a book in relation to the objects in your cart, such as for bundle and multi-buy deals. For our hundreds of individual promotions, the uc_discounts_alt module provided a good foundation to build on. We wanted something that was easy for our staff to use for managing these discounts and extracting them for display on the site.

Data Migration

As you may or may not know, Packt has been using the previous bookstore website for the last five years and the development team had to move content from the old system to Drupal; over 4,000 pages. This proved a challenging task due to the inevitable issues associated with such a large migration of content.

Once more, Jeff explains:

We used the Migrate module (and Table Wizard that it depends on) to move some of our content from our old proprietary CMS to Drupal. The major difficulty was moving from unstructured, ad hoc HTML to structured, clean organised content which required a lot of manual work. However Migrate was useful both in its intended function - to copy data into Drupal's data structure without writing data import scripts from scratch, but perhaps more importantly for developers as a learning tool to educate us on how Drupal creates, names and accesses data from its database. Using this shaved a fair amount of learning time off the migration effort.

Developers and Contributors

Comments

mathieso’s picture

Wow! This is way cool. Clean and functional.

I've bought about a dozen Packt titles - this site will make it easier.

Thanks for the explanations in the post. Helps to know a little about what goes on behind the scenes.

Noticed some issues. "Awards" at the top right was placed down and to the left of where it should be. On top of the Contact and About us links. Firefox 3.5.9 on Ubuntu. 1024x768. Maximized window.

The second thing is the search. A search for "Drupal" (of course!) shows books on Java, Plone, and Moodle. I didn't expect that.

In the article list for open source, the paging widget says "20 21 ??? next >"

Kieran

fgm’s picture

I like Packtpub a lot, and bought a good number of their Drupal books (and others!) in the last years, and intend to continue doing so.

However, I think promoting their Drupal redesign as it currently stands is not advisable: the site performance is abysmal, with frequent inabilites to connect, and general utter slowness (which might be at leas partly due to excessive use of S-HTTP)

Since Drupal is often criticized, for its /perceived/ lack of performance, I think showcasing this site In its current state would be liable to affect our visibility in this light even more. However, when/if Packt fixes this, it would be an interesting candidate for the front page.

Guito339’s picture

The shopping process is not very good when buying multiple books because the site slow. On the popup where I can enter how many of the books and e-books I'd like to buy, there should be two buttons. One to "Add to Cart and Continue Shopping" and another to "Add to Cart and Check Out". The first one should add to the cart via ajax and show up in the list on the page then allow me to choose more books. The other would have the current functionality. This way I don't have to go to the checkout page everytime I add something to my cart and then have to click back or "continue shopping" to be able to select more books. Just a thought...

adrianmak’s picture

It would be great to share more details on altering the checkout process ?

It may be the hard part to be faced on many ubercart e-commerce shop.

How could u assign different pricing between physical book and pdf version ?

thill_’s picture

I thank Packt for everything they have done for the Drupal community.

This checkout process is horrible though. I couldn't purchase a book. I added something to the cart, got to cart/checkout, and see an update cart button, and a continue shopping button. How do I enter by information and complete checkout? I see a block that says "create account", that however returned an error.

Bad ubercart implementation, they should have read their own Ubercart book first.

Anthony Pero’s picture

Interesting. I had no problem buying on the site. I've bought three books since the new website was rolled out. It prompts you to log in. After logging in, both above and below the actual cart are "Checkout with Paypal" and "Checkout with Credit Card" buttons. What wasn't intuitive to me was entering the promotional codes. The "Checkout Buttons" being above the cart stopped me from scrolling down below the cart the first time I tried to check out. I did find it on my second look, however.

I got no errors signing up for a new account, either. Maybe they fixed that since you posted, thill_?

***EDIT***

I do agree with one of the previous posters that the site is abysmally slow.

Tony

Anthony Pero
Project Lead
Virtuosic Media
http://www.virtuosic.me/

thill_’s picture

I was able to create an account today.

fgm’s picture

As I mentioned in the other thread about the case study, things have really improved since my initial comment back in April, mentioning reservations about performance.

More detail here: http://drupal.org/node/776744#comment-3089004

Juliancpackt’s picture

Hi All,

We at Packt have worked on the new Packt website since the redesign was launched at the end of March and we have fixed most of the teething problems. This should be represented in the performance of the website and the quickness in which users can go from the index to paying for their purchase.

We are continuously working on the speed in which our website works and hope that the redesign will be working as fast as possible shortly.

Feel free to reply to me with your thoughts as we're always open to feedback.

Thanks all, I hope to see some of you (if not all of you) at Drupalcon Copenhagen Aug 2010.

Julian

narcissus921’s picture

Nice work! Worked just fine when I went to buy my books. Bought every D6 previously, and enjoying it all. I'm glad to see some UC in action.

Tyler

subson’s picture

When clicking on buy link, it should default select 1 either for book or ebook, i just clicked buy and add to cart and there was no item in my cart.
atleast it should place either of book or ebook.

and in checkout page, when i am clicking on remove (cross image) it is not removing the item from my cart.

Manuel Garcia’s picture

If you haven't already, would you consider contributing what you mention here:

...we developed a few extra filters to create the reflection and shadowing effects you can see when viewing our book pages.

to the imagecache_actions module as a patch perhaps?

That said, I think this was a great move, the site is shining now, much easier to use and find things, you've done a great job!

pgacv2’s picture

I commend you on the work done to move your website to Drupal. I recently had to learn Ubercart to build a store for a client, and although the core works well, many of its add-on modules that could be highly useful are either unmaintained or still very immature. For example, the uc_discounts_alt module you mention only has a dev release so far. I wouldn't trust a client project to something that is advertised as unstable, and I have neither the time nor knowledge to dive into the module's code and fix it on my own. Any chance you'll give back at least some of your code in order to bring these modules more up to par?

bisuteria’s picture

Hello Mr. Julian Copes

My respect and my sincere congratulations for the excellent work of http://www.packtpub.com/

I have a very modest http://tubisuteria.com.ve Web that is too far from being as beautiful as yours. Since I did not php or the topic, since I'm in this out of necessity, I was fired a year ago and a month ago the bank where he had little savings melted .... And I got no job ... My wife makes jewelry and I try to make the Web ....

I wonder if perhaps I can pass the template to use and a list of the modules and settings used ....

From already thank you very much
Use Google Translate (No English)

Sagar Ramgade’s picture

Awesome site...Great work...Julian and Team, I was browsing your site I could find that there are corrections required on User groups page.
The Second line
Packt is pleased ro be able to support User Groups around the world. We do all we can as a publisher to help support User Groups.

On the left hand The latest books block, Name of the books are not proper,
for e.g #
WordPress 3 Site Blueprints
I can see only half "W" i think because of width and overflow hidden...

Acquia certified Developer, Back end and Front specialist
Need help? Please use my contact form

Juliancpackt’s picture

Thanks for all of your feedback guys! All feedback is being passed on to my development team. I will discuss with my development team if we can get some code contributions (in regards to two comments above).

Thanks Sagar for that, that text correction on the user group page has been executed. I am a bit mystified regarding the Latest books block suggestion as I have just checked this (and then checked it again on a different system) and it displays fine on my screen. Any chance you could send me a screenshot of what you see.

Thanks again.

Julian

Packt Publishing

Sagar Ramgade’s picture

Hi,

I have uploaded the screenshot here : http://sociopost.com/packtpub.png

Acquia certified Developer, Back end and Front specialist
Need help? Please use my contact form

Kuldip Gohil’s picture

Nice work! Very nice Drupal + Ubercart showcase site.

Sree’s picture

good site with drupal / ubercart combination!

-- Sree --
IRC Nick: sreeveturi

JayNL’s picture

I've seen the transition to drupal happening almost live. I was browsing the PacktPub site when it suddenly went offline. When it came back, it was Drupal powered, slow as moleasses and ugly (haha) but I see the dev/design team has worked out all the kinks by now... Very well done!!

amirtaiar’s picture

One of the beutifull sites I have seen and an excellent UI.
How did you do the java gallery on the Homepage?

Managing Partner at Reasonat

JayNL’s picture

When will people learn... it's JavaSCRIPT, not Java.

Jason S’s picture

Just bought this drupal 6 book from packtpub. https://www.packtpub.com/drupal-6-panels-cookbook/book

Can't wait!

Juliancpackt’s picture

Hi All,

I have discussed this with with my team and releasing the code is something that we are looking to do later on in the year. We're currently working on getting it to core release quality.

In the meantime, I am currently working on an interview with the development team, Bluetel Solutions, that will go into greater detail in regards to the code and a look behind the scenes so one can understand how to get a website the size of www.PacktPub.com on Drupal.

I will keep you all updated.

Thanks again.

Julian

Packt Publishing

Manuel Garcia’s picture

Many thanks for taking the interest in sharing code back, I assure you it is a beneficial move for everyone, including yourselves!

beckyjohnson’s picture

How did you do the menu that drops down from awards and books? It looks like you are using the primary links block but how did you attach the submenus?

vitich’s picture

Excellent work!

mgutz’s picture

The site is SLOW as heck as others have mentioned. I wonder how many online sales they lose.

Abilnet’s picture

Great site, congrats!

Any tips how did you manage to print the personalization in every footer of the eBook -version(s)?? ...that's so cool!

Steve Shaw’s picture

I've got one of their beginner books, and they lay things out very clearly.

beckyjohnson’s picture

What process did you go though to make the tabbed book blocks on each book page? Is there a module or is this custom?

vaccinemedia’s picture

yeah I'd like to know that too!

I'm a Drupal Website Developer and Google Street View Trusted Photographer.

kmacy’s picture

I just bought some ebooks from the Packtpub site, but I have to say the Packtpub site is painfully slow still. Even after 6+ months of Julian's first comment about being aware of the slowness of the site.

It's funny because I was buying Drupal 7 books so that I could get into Drupal.

When I saw the Packtpub site was so slow, I looked at the html source and saw that it was a Drupal site. Uh oh.

That really made me wonder about Drupals performance. I mean when the company that sells a lot of Drupal books (some that specifically talk about performance) has terrible performance themselves, it really make someone just getting into Drupal pause.

Hmmmmmmmm. Why can't they speed their site up? Anyone know?