There were numerous entertainment sites focused on movies, but there was no movie-centric aggregator when I started this project two years ago. Digg killed its movie section with its infamous redesign, and Reddit's movie section was dominated by top ten lists and link baiting articles.
I was inspired to fill this space with Movies with Butter after reading an article on how Haohaoreport.com migrated from Pligg to Drupal using the Drigg module.
While voting is a big part of the site, its main purpose is to let users keep up with the latest news and gossip for movies in various stages of development, particularly the big Hollywood blockbusters. The voting part is to allow the site's community to float up news stories that are important to them.
I was inspired to create Movies with Butter after reading about another site's migration from Pligg to Drupal with the Drigg module two years ago. If you wanted to build a Digg-like aggregator back then, your best options were Pligg and Drigg.
I evaluated both and concluded that Drigg was the better option because of Drupal's core features: taxonomy, blogs, forums, aggregator, and all of the community contributed modules.
While the beta version of Drupal 7 was out at the time, I chose to use Drupal 6 because of its maturity and, ultimately, the Drigg module was only available for Drupal 6.
Since I want a more controlled environment than that of Digg, users can vote but are not allowed to submit stories until they reach a certain reputation level. I believe this controlled environment can keep the site focused on its mission better than a free-for-all where everyone can submit stories. This will also help prevent spamming.
To get the stories on the site, I’m using the core Aggregator module because it’s the only one that works with Drigg, which uses it to create new nodes for each feed item.
In keeping with the site's mission to track movies, I want the ability to group the news stories into developmental phases (development, pre-production, production, post-production, distribution) as well as by genre and topic. I find the core Taxonomy module to be a good solution for this.
As a movie site, I feel that it also needs to have features commonly seen on other film sites - like photo galleries, trailers, blogs, box office charts, and Rotten Tomatoes scores.
A photo gallery section was created using the Gallery Assist module along with Views. Individual galleries are created using a new “Gallery” content type provided by Gallery Assist. The galleries index page was created using Views.
With trailers, I decided that instead of just embedding the video, we would also provide a review of the trailer. A new trailer review content type was created for this using two video modules: Embedded Media Field and Embedded Video Field. The main fields for this content type are rating (up/down), review, and embedded video.
Drupal provides a blogging feature, so I didn’t have to do much with it other than add an image field with the Image module.
For box office and Rotten Tomatoes scores, I just grab the feeds from Rentrak and Rotten Tomatoes and use Views to create blocks for them.
I also wanted to provide a message board for users to talk about movies among themselves outside the scope of the news stories.
Finally, a movies directory was created so users can browse the films being tracked by developmental phase and alphabetical listing. Attachment Views came in handy for this.
In summary, I needed an aggregator, user voting system, user reputation system, user comments, ability to tag articles, message board, and image handling and video embedding capabilities.
Drigg for Drupal 6 appears to be abandoned and is no longer supported, and it looks like there will never be a stable release of the module. This means the site will not be able to migrate to Drupal 7 or other future releases without a redesign from the ground up. If there are any bugs in the module, I'm on my own unless other Drigg users can provide the answers.
Most Drigg sites follow Digg's layout almost exactly, with the most voted stories on the left and the most popular and upcoming blocks on the right sidebar. I wanted Movies with Butter to be different.
I went with the yellow color to evoke the feeling of popcorn and butter and to match the name and theme of the site.
For the content, I chose to use three columns. I placed all the data in the left sidebar such as box office numbers and Tomatometer. Promoted stories are in the center. I use the right sidebar as a news rack, where users can quickly browse some of the content on other movie sites.
I also added a large slideshow towards the top center to highlight the biggest news of the day. None of the Drigg sites that I'm aware of had this.
The site took about a year to develop by me, working on it part-time. That’s why throughout this article, you only see I’s. Bngo came on board when development was completed to take care of editorial and moderate news articles. Sinclair came on board around the same time to help with custom module development and feature refinement.
The core features of the site (drigg voting system with taxonomy) was completed in just a couple of weeks; it was the little details (structure & design) that took up the bulk of the time. The site was launched when the core features were completed. The idea here is to launch as soon as possible - in this case, a couple weeks - just to get the site out there and then refine it later. This way, I won’t be trapped in development hell for a year.
The site doesn't have a lot of traffic yet (June 2012), so I don't really know how it will perform under heavy load, but I had to fine tune a lot of things for the site to perform well even with minimal traffic.
I employed three caching modules to help me speed up the site: Boost, Views 2 Cache and Block Cache.
Boost renders the most accessed pages as static HTML and serves them to anonymous users, significantly speeding up the site's response time.
Views 2 Cache and Block Cache are used for authenticated users. They both store the results of previous queries in a cache table so that they can be recalled later without having to run the queries again, which also speeds up the site.
Drigg's Related Articles module doesn't scale when there are thousands of nodes, so I had to disable it. I also had to disable the ACL and Forum Access modules because they slowed the site down as well.
The other major performance bottleneck was the core Aggregator module, which comes with blocks listing the latest articles from each feed. The problem is the DB queries produced by those blocks are not appropriately indexed. Once they’re indexed according to how the articles are sorted, performance improved dramatically.
I also had to write a couple of custom modules to customize the Nice Menus, Aggregator, and Drigg modules. The full list of modules I'm using is at the end of this article.
How the site will evolve will largely depend on how the site is used, but in the near future, I want to implement a message board so that users can have a place to carry on their own discussions. Whether that will be Drupal's core Forum module or a stand-alone solution remains to be seen.
If the site is able to attract a lot of users, I want to open up the site so that trusted users, based on their reputation, may be able to submit news stories and have other privileges.
To further speed up the site, I want to use the Boost module on the front page news stories as well.
Mwbsenh had the initial concept for the site. He set up the initial site, which includes putting together the LAMP environment, designing and coding.
Bngo cleaned up the initial writing by Mwbsenh and is in charge of the editorial on the site. He also moderates the stories that appears on the homepage.
Sinclair Duong came in the later stage of the site development to help integrate social elements (facebook/twitter/pinterest buttons) and create custom blocks (box office, opening movies).