Feed aggregator
ShooFlyDesign: Migrating Squarespace to Drupal - Part 1: Giant XML File of Doom
This is Part 1 in a series of posts on migrating a site from Squarespace 5 into Drupal 7. This is an overview of what we're doing and why, mostly discussing the format of the Squarespace 5 XML file, which is undocumented. My hope is to make the process of importing Squarespace data easier for everyone else.
The MissionI'm working on a fairly large site (ApertureExpert.com), currently running on Squarespace 5, migrating to Drupal 7. Squarespace is an excellent platform with many virtues, but it doesn't allow the level of customization that my client is looking for, so we're moving the site to Drupal. Now, of course you lose the built-in, high-availability hosting, and some of the very good polished UI that Squarespace gives you, so this move is not for everyone. But if you want control, and to have your blog, forums, and e-commerce wrapped up in a single package, Drupal is your friend. One example: my client wants users to have all their purchased products, forum posts, and comments available through their user profile. Squarespace can't do that, Drupal can.
This site has been active for several years now, and has a very active community of users, so the first big task was to import all of those items into Drupal. Fortunately, Squarespace 5 will let you export your entire website as XML. Note: it doesn't look like Squarespace 6 (the current version) supports full site export. There is a WordPress-compatible export that you could import into Drupal using WordPress Migrate (or, obviously, into WordPress), but it seems to cover only blog posts. This site is older, running Squarespace 5, so we can get everything.
Now that we have exported data, what can we do with it?
Read moreHigh Rock Media: Custom Taxonomy Pages with Drupal Views Using Selective Overrides
Drupal 7 has an option to turn on a default View for Taxonomy term pages via the contrib module, Views. This is generally pretty good but if you want highly designed pages with additional custom fields than what the default view renders, you could simply update and customize this view but there's a few drawbacks:
- You'll be overriding all Taxonomy Pages so it's not very granular.
- Using the default Taxonomy View won't be too exportable in regard to things like Features.
Enter the Taxonomy Views Integrator module aka 'TVI'. This is one of those nice little gems that you don't hear about too often but it's pretty powerful and allows for that granularity that we are looking for here. It enables you to customize only specified Taxonomies with a new custom Views override per Vocabulary. The added benefit is that you can keep the original Taxonomy path aliases. Other methods suggest hackish ways to override Taxonomy term pages by creating an alternate term path alias structure for the overrides but this gets pretty messy.
First StepsIt's probably a good idea to have a custom Vocabulary set up beforehand but theoretically you could use the default Tags Vocabulary that comes with the Article Content Type. You'll need the core Taxonomy module enabled but that's already by default with a typical Drupal 7 install. You'll also need the contrib module, Views as well. Next, download and enable TVI. TVI does not do much on its own, you need a view from which to reference for a specific Taxonomy to make this all work. I found the best method is to simply clone the default taxonomy_term view located at /admin/structure/views and customize it but you may need to 'enable' it first. When you clone this view, be sure to name the newly cloned view something meaningful, you can also edit the machine name at this point as well. Ideally, you are doing all this work on a dev or local site, not a live one.
Mind Your PathNow that you have your new custom Taxonomy Term View, we need to make a few changes to some of the default settings that came with it. For the default 'Page Display', change the Path to something like nopath/%. It really doesn't matter what you put here as long as it's not the default term path which is taxonomy/term/% or any other real path in your site. The reason we do this is we don't want to intercept the original path of the Taxonomies' Alias.
Refining ArgumentsThe other change we want to do is to alter one the Contextual filters aka Views Arguments. Look under the View's advanced settings for Configure contextual filter: Content: Has taxonomy term ID (with depth). In my case I'm customizing a Vocabulary called "Image Category", so for the setting, Specify validation criteria, I check the box for that given Vocabulary.
Adding Additional Fields and CustomizingYou can pretty much go to town with adding additional fields but you may need to add Views Relationships depending on what you are doing, just be aware of that, your milage may vary. Finally save your View. Note that because there's a Contextual Filter in play, you won't see a preview of your View right off the bat so you can use "Preview with contextual filters" and fill in an id. For example, I have a Taxonomy term id of 273 so I can input that into the text box and see a preview after updating. This comes in handy as otherwise you are a bit in the dark during configuration.
Connect the DotsAll we've done so far is focus in on our custom Taxonomy Term Page View. However there's still a final step to put it all together. It's time to edit the Taxonomy you want to customize. Go to /admin/structure/taxonomy /[YOUR_VOCABLUARY]/edit. There's a new area called View usage, Check the box called Use view override. You'll see two new select lists appear which are self-evident, Using the view and View display. You can now select the View and display you customized from the cloned view as mentioned above. If all went well, now when you visit your custom Vocabulary term pages, presto, you should see your customized View in effect! One major note is that for any other Taxonomies you don't want customized, you'll simply need to set each to the default Taxonomy term View on the Vocabulary's edit page if you still want the defaults Views intercept to happen.
The possibilities are endless here and it will give your selectively overridden Taxonomy pages a unique look that can be highly designed, it gets away from boring lists of things that are typical of these type of pages.
Tags- UX
- Design Patterns
- Drupal
- Views
- Tutorial
- Drupal Planet
Paul Rowell: BUEditor; your alternative editor for Drupal
I recently worked on a project (I won't name names) where the clients systems were locked down rather severely, this coupled with an *insert appropriate word here* slow connection meant that I was presented with more than the usual challenges of a Drupal build. The biggest problem presented was that my go to WYSIWYG editor (CKeditor) was not usable.
DrupalCon Prague 2013: Announcing DrupalCon Prague, coming September 2013
The Drupal Association is very excited to announce DrupalCon Prague, the tenth annual European DrupalCon. Taking place the 23-27 September 2013 in the beautiful city of Prague, in the Czech Republic, nestled in the heart of Europe. All are invited for a full week of Drupal celebration, the final DrupalCon before D8 release!
Zero to Drupal: Outputting CSV Data as a File Download
If you ever need to save a set of columnar data as a csv file on the server, doing so using fopen() and fputcsv() is pretty simple. What you may not know, and what I didn't know until recently, was how to take that same data and return it as a downloadable csv file (not saved on the server). Turns out, accomplishing this task in Drupal is just as easy as saving a file but with one minor tweak.
Saving To a FileAs a recap for some, and a primer for others, here's how we'd take some data and save it as a file on the server:
- // Let's get the 50 most recently created published nodes.
- $nodes = db_query('SELECT nid, title FROM {node} WHERE status = 1 ORDER BY created DESC LIMIT 50');
- // Open the file for writing.
- $fh = fopen('nodes.csv', 'w');
- // Add a header row
- fputcsv($fh, array(t('NID'), t('Title'));
- // Loop through our nodes and write the csv data.
- foreach($nodes as $node) {
- fputcsv($fh, array($node->nid, $node->title));
- }
- // Close & save the file.
- fclose($fh);
This code queries for a set of data, then opens a csv file and writes the values to it. Pretty simple stuff. But what if you want to present this to the browser as a file download, instead of saving to the server?
Saving as a File DownloadFortunately, we only need to change a few lines:
- // Let's get the 50 most recently created published nodes.
- $nodes = db_query('SELECT nid, title FROM {node} WHERE status = 1 ORDER BY created DESC LIMIT 50');
- // Add the headers needed to let the browser know this is a csv file download.
- drupal_add_http_header('Content-Type', 'text/csv; utf-8');
- drupal_add_http_header('Content-Disposition', 'attachment; filename = nodes.csv');
- // Instead of writing to a file, we write to the output stream.
- $fh = fopen('php://output', 'w');
- // Add a header row
- fputcsv($fh, array(t('NID'), t('Title'));
- // Loop through our nodes and write the csv data.
- foreach($nodes as $node) {
- fputcsv($fh, array($node->nid, $node->title));
- }
- // Close the output stream.
- fclose($fh);
In case you didn't catch that, first we needed to add some headers to let the browser know that we're sending a file download. Then, instead of opening a file to write to, we write to php's output stream. Now, when a user clicks a link, or enters the url to a page with this code, they will be prompted to save a file with the data formatted as csv.
Although simple, this was something I'd never had to do before so I thought I'd share this in case others hadn't either.
TagsFuse Interactive: Make your design functional
CMS Quick Start: User friendly site backups with the Backup and Migrate suite
baxwrds: Drupal 7 Ubercart Recurring Payment Cancellation Rule
For a current Drupal 7 project that uses Ubercart and Ubercart Recurring to provide for a subscription service, I need the ability for an admin user to be able to cancel a user's ongoing recurring fee when a subscription level is changed. I accomplished this with the following php rule:
<?php
// load all recurring fees for a user
$recurring_fees = uc_recurring_get_user_fees($user_uid);
// loop through fees
foreach ($recurring_fees AS $fee) {
// cancel each fee
uc_recurring_fee_cancel($fee->rfid);
}
?>
baxwrds: Drupal 7 Ubercart Recurring Payment Cancellation Rule
For a current Drupal 7 project that uses Ubercart and Ubercart Recurring to provide for a subscription service, I need the ability for an admin user to be able to cancel a user's ongoing recurring fee when a subscription level is changed. I accomplished this with the following php rule:
<?php
// load all recurring fees for a user
$recurring_fees = uc_recurring_get_user_fees($user_uid);
// loop through fees
foreach ($recurring_fees AS $fee) {
// cancel each fee
uc_recurring_fee_cancel($fee->rfid);
}
?>
Blink Reaction: Putting a Face on the Drupal Community
What exactly does the Drupal community look like?
The Drupal Face to Face project launched at Drupalcon Portland set out to answer just that question. Produced by Blink Reaction in collaboration with the Drupal Association, Drupal Face to Face is an omnichannel media project designed to increase Drupal Association membership and attract new people to the Drupal open source project and community.
The project was developed with Blink's digital strategy team to help deliver awareness and engagement around a campaign to build Drupal Association membership.
groups.drupal.org frontpage posts: Drupal 8 Toolbar and Admin Information Architecture research study: your input needed!
I plan to run a Drupal 8 Toolbar and Admin Information Architecture research study, to inform any improvements to the current Drupal 8 admin IA.
But first, what questions do you (or people you work with) want to know about the current IA? How people are using? When they are using? From what devices? Etc etc.
Put all your questions you'd like to answered by this study in the comments below. If there are duplicate questions, great! That will help inform priorities.
From this, I can start to create a study plan.
Thanks
Lisa Rex
Take our Survey on Drupal and ISVs
In our last community survey about webinars, over 400 people participated and many stated that they want more education on third party software that integrates with Drupal and tools (developer, project management, and design tools) that will help them build even better Drupal sites.
So we are creating the Technology Partner Program, to attract those kinds of companies and help them educate you about their products and services in a helpful, not spammy, way. The companies would pay to join this program and those funds will help us hire the Drupal.org Tech Team, which is coming together to improve our community home with better developer collaboration and faster and easier-to-find modules.
Will you take our survey to tell us which kinds of companies’ products and offerings you would like to learn about? We will then talk with those companies and invite them to join the Technology Partner Program, that will launch this summer.
This survey is for anyone involved with building Drupal sites (developers, site builders, project managers, Drupal shop leaders, etc). And, the survey asks:
-
What kind of third party applications and tools companies do you want to learn about?
-
What are the best ways to provide educational content about their offerings?
-
How should these companies should work with community members with regard to integration modules?
The survey should take about 10 minutes to complete.
Thank you ahead of time for sharing your thoughts with us so we can tailor the Technology Partner Program to your business and educational needs.
Personal blog tags: Technology Partner ProgramsurveyDrupal Association News: Take our Survey on Drupal and ISVs
In our last community survey about webinars, over 400 people participated and many stated that they want more education on third party software that integrates with Drupal and tools (developer, project management, and design tools) that will help them build even better Drupal sites.
Personal blog tags: Technology Partner ProgramsurveyLarge Robot: Finding a Couchsurfing.com replacement
With the "digital nomads" breakout session at DrupalCon Portland still on my mind, I came across an intriguing blog post today by Nithin Coca about the so-called "rise and fall" of Couchsurfing.
For me, one of the big takeaways from reading the post is I learned that Couchsurfing.com went commercial last year. Nithin Coca's argument is that as a result of its commercialization, its business model makes room for "quantity over quality" and the site and its community has gone downhill. Some of the inter-related issues that he brings up are:
- His experience at a Couchsurfing meetup was that attendee ratio leaned toward more socialites and fewer travelers and hosts;
- Trust between Couchsurfing.com travelers and hosts has diminished over time;
- A gender imbalance has always existed on Couchsurfing, but the treatment of women has worsened over time.
My feeling about our Drupal Hospitality Network (and the Drupal California Travelers Program) is that because our groups are already deeply connected to the Drupal community, we're automatically solving those issues:
- We have a strong, global community with individuals who are active contributors;
- Having public profiles on Drupal.org creates visibility, enables communication, helps establish trust, etc. — our members are less likely to flake, as that may affect trust in one another and our working relationships;
- Our community appears has a healthier gender balance than Couchsurfing.com (at least from my reading of Nithin Coca's critique).
What I'm left with now are questions. What kind of lessons can we learn from Couchsurfing.com that would make our Hospitality Network even better? Is there a uniform message or badge that we can put on our Drupal.org profiles to show our involvement? Is there interest in building a new website that recreates the best parts of Couchsurfing and AirBnB but is specifically for the Drupal community?
Discussion is welcome both here and at https://groups.drupal.org/node/303593
Tags: Planet DrupalGuest Post: Global Training Day in France
Jeremie SCHMIDT is the director of Trained People, a French based company specializing in Drupal training and consulting for more than 6 years. In addition to his Drupal passion, Jeremie is leading an NGO which help kids from third world countries, to get a better future.
As the latest Global Training Day is now upon us, we wanted to tell the story of the previous training day in France. The last Drupal Global Training Day was a lot of fun and especially on the French side of it. In France, the Drupal CMF is not very well known by professionals and the public, so this free training day is necessary to promote the solution and people who attend are very curious about it.To be honest, when we register to deliver the training “Introduction to Drupal” we didn’t know what to expect from it. We have been delivering Drupal Training in France for more than 6 years now and we know very well that it can be tricky to promote this kind of training to the public. But only 1 week after having opened the registration and promoted it on our Facebook page, there were 20 people registered, so we had to close the registration because of training room size!
Fifteen people attended coming from very different backgrounds: people looking for jobs and wanting to add Drupal to their skills; integrators or agencies who were thinking about adding Drupal to their portfolio of offerings; companies who were looking for the best solution for theirs projects.
Everybody came with different objectives, but everybody asked the same question: What can Drupal really do? What was very interesting for us is that usually we are faced with a public who is essentially interested in the technical part of Drupal, but this time it was more business-oriented. Most of the questions were about functional limits, cost, reputation, distribution model, community organization, learning curve, etc. We could feel that people were here to make a decision about the solution they will invest in! That’s why there was much interest in the solution and on the ecosystem.
Everybody left giving great feedback about this training day. They got answers to their questions, they received a global overview of the solution, and they knew where to start, in order to join the Drupal adventure… But they were a bit frustrated about something: they were missing the typical Drupal project process presentation: to get from a blank Drupal installation to a final Drupal website with a demonstration at every step of the process. This is a tricky point because it could be different for each project and organization, but we will find a way to add this point to the next “Drupal Global Training Day” that we will present on June 14th. Yes, the first Drupal Global Training Day was a great success for us, so we decided to participate in the next one too… It’s going to rock!
This time we have space to accommodate more than 20 people…
Personal blog tags: Global training daysDrupal Association News: Guest Post: Global Training Day in France
Jeremie SCHMIDT is the director of Trained People, a French based company specializing in Drupal training and consulting for more than 6 years. In addition to his Drupal passion, Jeremie is leading an NGO which help kids from third world countries, to get a better future.
Personal blog tags: Global training daysDrupal Association News: Guest Post: Global Training Day in France
Jeremie SCHMIDT is the director of Trained People, a French based company specializing in Drupal training and consulting for more than 6 years. In addition to his Drupal passion, Jeremie is leading an NGO which help kids from third world countries, to get a better future.
Personal blog tags: Global training daysundpaul: Changing CKEditor skins with Drupal's WYSIWYG
CKEditor 4.x has been out for a while now. Something I really enjoy about the new release is the new skin, for which the people at CKEditor ran a contest. The winner of the contest was Moono, but I also really like the silver skin. So today I want to show you how you can change the skin when using CKEditor 4.x in Drupal. There is an overview of skins on ckeditor.com, but there's not much there yet. Moonocolor is worth a look, but we are going to focus on silver, which you can find on Github.
I'm going to show you how it's done by writing just a few lines of code (which stBorchert wrote for me :)) and I'm also including a feature module which you can just throw into your site to get going (make sure to grab a database dump first, just in case).
Lullabot: Getting Sassy with Chris Eppstein
For this episode we have special guest Chris Eppstein join Addi, Kris Bulman, Micah Godbolt, and Carwin Young to talk about Sass and Compass. Chris is the creator of the Sass framework Compass, and is also part of the core Sass team.
- @chriseppstein on Twitter
- Sass project homepage
- Compass project homepage
- Drupalize.Me Meetup Memberships
- CSS Summit Online (JUly 23-25, 2013)
- SassConf (Oct 12-13, 2013)
- CSS Dev Conference (Oct 21-23, 2013)
- Chris' post about LinkedIn
- Compass project issue queue
- Sass project issue queue
- Drupal Magic Module
- Sass Globbing plugin
- Chrome Compass Search extension
Getting Sassy with Chris Eppstein
For this episode we have special guest Chris Eppstein join Addi, Kris Bulman, Micah Godbolt, and Carwin Young to talk about Sass and Compass. Chris is the creator of the Sass framework Compass, and is also part of the core Sass team.
- @chriseppstein on Twitter
- Sass project homepage
- Compass project homepage
- Drupalize.Me Meetup Memberships
- CSS Summit Online (JUly 23-25, 2013)
- SassConf (Oct 12-13, 2013)
- CSS Dev Conference (Oct 21-23, 2013)
- Chris' post about LinkedIn
- Compass project issue queue
- Sass project issue queue
- Drupal Magic Module
- Sass Globbing plugin
- Chrome Compass Search extension

