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:
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.
TagsI 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.
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!
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:
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:
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.
TagsFor 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);
}
?>
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);
}
?>
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.
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
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 ProgramsurveyWith 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:
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:
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 DrupalJeremie 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 daysCKEditor 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).
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.
Everyone dreams of making money while asleep. The term "passive income" is often defined as income that is received on regular intervals without requiring a great deal of work to sustain it. Usually some effort has to be put in upfront, but the payoff from passive income can last for years. Passive income is particularly relevant when it comes time to retire. Two techniques often recommended by financial planners are (a) rental properties and (b) dividend investing. Both can work well, not only as a retirement plan, but as a way to build steady income. Certainly the idea of collecting checks for the rest of your life with minimal effort sounds appealing.
Quite a few people that try to retire early are documenting their journey publicly. For example, Jason is trying to retire by 40 by investing in dividend growth stocks and Mr. Money Mustache retired at the age of 30 through rental properties. Many other great examples exist online; I love reading up on their stories and progress. There is a lot to like about their lifestyle too; a common theme among them is that they live frugally.
So what does this have to do with Open Source? I love Open Source and Drupal and would like to see even more contributors. I think a lot of developers would love passive income so they have the freedom to contribute to Open Source more, preferably even full-time. Many developers also live a frugal life; passive income may be a good option to explore. But also, what about a third passive income technique: (c) websites? I know several people who have a number of websites, some of which they haven't touched for months, yet they still bring in around $500 a month. Owning a few websites could provide a wonderful chance to earn passive income, and it so happens that many of us in the Drupal community have a talent for building websites ... Food for thought.
The good news is there is a tremendous amount of buzz and excitement building for DrupalCon Prague! The unfortunate news is the website is still not live, which means we haven’t been able open up registration or call for papers. We wanted to let you know there is a lot of work being done to make DrupalCon Prague an awesome event, and that we are working hard to get the website up. We also want to thank you for your patience with the website, and provide a few details that will help you plan for the event.
Personal blog tags: DrupalCon PraguedrupalconSelecting an appropriate payment gateway is one of the most important choices to make when designing, building, and maintaining an eCommerce website powered by Drupal. Choose poorly and the out-of-the-box feature set may not fit all of the project's needs (e.g. "where's the recurring billing option?") or may not be possible at all (e.g. "where can I charge my customer's card for a future purchase?"). The payment gateway choice will also greatly impact the resources required (in terms of time, money, and expertise) to sufficiently secure the credit card transactions in order to achieve and maintain PCI compliance.
As a Drupal developer trying to wow clients with amazing out-of-the-box features, it can be tempting to focus on functionality over security. However, one of my biggest concerns for those selecting Ubercart as their eCommerce solution is its lack of available payment gateways that can achieve a clients desired feature set while still being able to reduce one's PCI compliance woes. The goal of this article is to encourage everyone to select a shared-management gateway solution (defined and described below) and to highlight that Drupal Commerce has more of these types of gateways available.
Payment Gateway TypesThe Payment Card Industry (PCI) groups payment gateways into three basic types: merchant-managed, shared-management, and wholly outsourced. I'll explain each of them in reverse order.
Wholly OutsourcedIn this implementation, the eCommerce platform is entirely hosted, managed, and secured by a 3rd party vendor that explicitly assumes the PCI responsibilities to secure the credit card payment process. Examples include: Bigcommerce, Volusions, etc. The only Drupal specific example I know of that that could fit this criteria would be Drupal Gardens using Cashie or Paypal.
Shared-managementIn this implementation, the shopping cart experience begins on a Drupal site and the credit card payment is submitted directly to the payment gateway by one of three types of methods:
In a merchant-managed implementation, the credit card information is submitted directly back to a Drupal site through the form API. Drupal then processes and transmits the card data to the payment processor and receives a response code to let it know where the payment succeeded or failed.
PCI Compliance ConsiderationsChoosing a merchant-managed solution is the most risky because you assume more of the responsibility and liability in securing the entire credit card transaction process. Choosing a wholly outsourced solution is perhaps the most restrictive because you essentially lose all the benefits of using a flexible and feature rich CMS like Drupal.
Shared-management solutions are the balance point between these two extremes. They allow one to leverage most of the flexibility and functionality of Drupal while significantly reducing the amount of time, effort, and resources required to achieve and maintain PCI compliance.
Comparing Ubercart and Drupal Commerce Payment GatewaysAt first I wanted to create an exhaustive list of every payment gateway, but I decided to focus on a subset to simply illustrate the point. If I have neglected any gateways that would paint a different picture, please be sure to alert me in the comments section and I will correct these tables.
Here a the breakdown of several payment gateway options for Drupal Commerce:
Gateway Merchant Managed Direct Post HPP iframe Authorize.net ARB X Authorize.net CIM X Authorize.net DPM/SIM X X Authorize.net Hosted CIM NA Braintree X Hosted PCI X Paypal WPS X Stripe XAnd here is a similar breakdown for Ubercart.
Gateway Merchant Managed Direct Post HPP iframe Authorize.net ARB X Authorize.net CIM X Authorize.net DPM/SIM X X Authorize.net Hosted CIM NA Braintree NA Hosted PCI NA Paypal WPS X Stripe NASadly almost every (available) shared-management implementation for Ubercart involves a redirect to a hosted page, which clients in the United States are usually resistant towards because they dislike not being able to keep the client on site during the entire checkout process (sidenote: citizens of the EU tend to be much more accepting of hosted payment pages, so this stigma against HPP's is not necessarily going to persist). Thankfully there is at least one known direct post method (Authorize.net DPM) for Ubercart, but this option cannot be used in conjunction with card on file or recurring billing capabilities. As for including iframe implementations, such as Authorize.net Hosted CIM, it's already been ruled out as unlikely to happen for Ubercart.
By comparison, Drupal Commerce has several different options with respect to companies offering shared-management implementation (Stripe, Braintree, Hosted PCI) and actually offers an iframe option (Hosted PCI). The Drupal Commerce community is also very active and growing while Ubercart's community will likely hit end-of-life in the next year.
Author's Note: I know there are many many more Ubercart payment gateway modules out there, but many of them are deprecated, have fewer than 50 users, and/or are unmaintained.
SummaryTo learn more, please read my previous article (Let's Talk About PCI Compliance for Ubercart and Drupal Commerce) and stay tuned for the PCI compliance white paper that should be ready in a few short weeks!
Tags: Drupal PlanetPCI compliance var switchTo5x = true;stLight.options({"publisher":"dr-8050e384-1b1-b22e-b17-7e272ca1dc8f"});Giving design feedback is hard, but with a few quick tips you do it like a pro.
The Design Feedback Sandwich.The best way to keep designers happy and your project on track is to use what I call the Design Feedback Sandwich. Start by telling your designer a few things you like about the design. Next, tell the designer which pieces are problematic. Finish by telling them something positive thing about their work. Validating the positive ingredients keeps morale up and will create a healthy work relationship. Remember - people are more creative when they're in a good mood.
Frame Your Feedback Around the GoalsTo become a true design feedback pro, frame all your feedback around the project goals. For instance, instead of saying "I don't like that blue," say "I don't think that blue effectively conveys a sense of excitement to our target teen audience." By framing your feedback within the goals you immediately win. You help keep the team on track and you remove your own personal bias. Go you! You are becoming a pro already!
When You Get Stuck, TestWhen your team gets can't agree on the feedback, try testing. Using cheap and easy tools such as FiveSecondTest or UserTesting.com to bring in a fresh perspective to the conversation. Fresh eyes and new data can usually unblock creative gridlock.
Define RolesAs I learned from Paul Boag - It's the client's job to define the problem, and the designer's job to solve it. Keep this in mind when giving feedback. For instance, a common piece of feedback is "i think the page looks too busy. Lets add more padding." Try to remember to state the problem, not the solution. Instead, allow the designer to explore solutions to the problem. When you tell a designer how to do their job, you unknowingly limit their creativity. For example, adding more padding may make the page feel less busy, but so might reworking the copy, adjusting the type size, or reworking the layout. In short, trust your designer to find the best solution.
NOTE - many clients have fantastic suggestions and collaboration is key, but it's good to remember the roles to play to each others strengths.
R-E-S-P-E-C-TBeing both respectful to each other and validating each others efforts produces long term fruitful partnerships. When collaborators feel heard, moving forward becomes effortless.
This is my list. I'd love to hear yours. Design feedback can be a tricky business, so the more we share the better.
Eight days after Confab 2013, and I have finally come down from my conference high. The conference was insightful to say the least - it is by far the best industry conference I have ever attended. This past week, I have sifted through notes, read recommended articles and reports, replayed in my mind all the thought-provoking presenter one-liners, and had many a conversation about the value of things like content “chunking” versus “blobbing”...the usual things you do when you come back from a conference feeling equipped with the knowledge you need to change the world.
I had a moment, as I sat down to write this post, where I asked myself “why does any of this matter?” There seemed to be something missing in all my thoughts and ideas after Confab. It all seemed very...tactical. I felt like I was missing a larger theme that timed all of these topics together.
It came to me as I read an interview with Paul Adams of Facebook in Fast Company. “People!” The theme that tied all of the Confab sessions together was the focusing on the needs of people consuming content.
Michael Brenner of SAP defined content strategy best:
“Content strategy is about delivering the content your audience needs, in all places they go.”
Content strategy is about meeting the needs of people. We often get lost in conversations about content, asking questions like:
What CMS should we use?
How do we create a great editorial calendar?
What keywords will get us ranked highest in search?
None of that matters. Not unless you are making a connection with what is at the other end of your content. People.
Each presentation I attended at Confab made that point within the wealth of knowledge shared that, at the center of all the planning, and wireframing, and building, is the need of a person. All the strategizing, and designing, and production, is all done with the intention of building a relationship with a person by helping to meet their needs. Where I think Paul Adams’ views on social design come into play, as many of us know about content strategy, is that investing in content is a long-term strategy that will take many, light-touch interactions with people over time before a relationship is really established.
Let’s get a little bit more practical with this concept. Here are some tips I pulled from different sessions I attended at Confab that will help you develop a content strategy centered around building relationships with people:
Content Modelling by Rachel LovingerContent modelling is essentially the process by which we as define content types, their attributes (fields, assets, metadata), and the relationships between types of content. It is foundational to any content strategy.
People are now engaging with brands across multiple platforms, on many different devices, often times all at once. As an example, a person attending an your event is reading information about your organization on their mobile phone, while they are following people’s tweets about the event on their laptop or tablet. One interaction, three touch points.
To address the needs of our users wanting content across various platforms and channels, we need to model content for portability.
Some recommendations that came out of this session all content strategists should keep in mind:
Think of your content separate from presentation. The root of this concept is in the content chunking versus blobbing debate. Most content management systems are designed with a Title field and a Body field where the content editor designs their content. That is dangerous because editors shouldn’t have to, and often are not good at, content design. By focusing on content structure over presentation, we can more granularly model our content with all the fields that need to be presented, allowing content editors to focus on entering content that needs to be served without having to do formating.
Content should be adaptive, not responsive. A related concept is adaptive content. The general idea is that content can, and probably should, look differently depending on how and where it is served. That ultimately is a design issue, not a content issue. When modelling content, we need to think of content types as having granular attributes (i.e. if a press release has an intro and a body, then have separate fields for each). Editors should focus on creating content, and designers focus on how it is presented on various platforms. As content strategist, we need to ensure our content is structured in a way that allows an editor to easily publish a piece of content in it’s entirety, and designers can then present content chunks, or collections of content attributes, in different ways on different platforms.
Content models should be CMS agnostic. Technology should not inform your editorial strategy, your editorial strategy should define what content management system you use. Develop content models that map to the content needs of your audience and editors, then select the technology solution that will best support those.
Content Strategy for a Customer Journey by Kevin NIcholsCustomer/user engagement happens across multiple channels and multiple platforms. Customers expect that they will have the same experience with a brand no matter where they interact with you - your website, via a mobile app, etc. Designing a consistent experience for a consumer regardless of channel or platform , referred to as omni-channel retailing, is driven by content and can be adopted by all industries.
The key to this strategy is personalization. Understanding who your user is, their needs, and where and how they meet those needs is critical to determining what content to serve along the user journey. If you know that Ann is a mother in Chicago that likes to cook casserole for her children, you can serve her a coupon on her mobile phone when she visits the recipe section of your mobile app or website.
There are many different ways to personalize your content strategy. You can build a recommendation engine into your website that serves a user content based on their defined interests. You can inform how you segment content on social media, email marketing, or direct mail based on your understanding of user personas. The approach you take should be specific to your organization, but remember the key is to focus on meeting the user need at every touchpoint in your user journey.
Well This IS Interesting by Melissa RachPeople need interests to live. We are “information foragers” - we seek information the same way we seek food. The more we learn, the more information we seek.
Content is about feeding people’s natural desire for information that is interesting to them. Our goal is to find the intersection between a person’s interest and our desire for them to take some type of action.
While interests are many things to us as humans, they are most importantly social. We build relationships through shared interests. The same thing goes for people building relationships with people as with people building relationships with brands. To establishing a relationship with a person, we need to produce content that aligns with both of our interests.
Our interests are enticed by emotion. Whether content is goal-, entertainment-, or action-oriented, we choose to engage with a brand based on how a piece of content makes us feel. Write copy that will evoke a desired emotion in your reader - joy, anger, intrigue. If you can evoke an emotional reaction from the reader, the greater the likelihood they will remember and be interested in your content in the future.
Some things to keep in mind when writing copy or designing content:
Make sure you know the topic you are talking about and can provide helpful information
Focus on meeting the needs of the content consumer - it is all about them
Produce content that fills the gaps between what the user needs and what you have to offer them
Encourage people to have a conversation with you
Search engine optimization for years was a very prescriptive process circa 2000-2008. You optimized pages with metadata - meta titles, meta descriptions, and meta keywords - that helped search engines better understand what content was on a page. You made sure your pages were marked up in a way that allowed search engines to understand the structure of your page. Then you worked on building cross links between your website and more reputable website. Voila! High ranking website.
Since the proliferation of social media, the game has changed. Major search engines now take into account social interaction with content and content consumed by your social graph in determining what to display to you in search results. People are spending more time on social media websites and discovering more content in their newsfeed than ever before. While keywords are still critical to search placement, the new driver of content discovery is social media.
Keyword optimization within content and meta titles is still important, but not as important as writing copy for people. You should write content with an eye towards getting people to share it with their friends. Meta descriptions that appear in search results should connect with a reader, just like a tweet or an ad.
Social media can also be one of your best research tools because it shows you what people actually think and say about topics and brands. Use Facebook ad data and Google Adwords keyword tool to get demographic information about people who are searching for and talking about specific topics and use that data when building personas and your keyword strategy.
Did you attend Confab? What were some of the insights you gleamed from various sessions?