Khanh Hoang - Kenn
Kenn is a user experience designer and front end developer who enjoys creating beautiful and usable web and mobile experiences.
>> Sử dụng Drupal Entityforms tốt hơn Drupal Webform?
>> Lưu ý khi sử dụng $query->fetchAll() (hint: it's optional) trong Drupal 7
>> Có thể thay đổi Menu Item Visibility module với custom "in code"
Last time I gave a quick introduction on how to create and manage queues using Entityqueue. This time I'll show you how to use them with Views to display content sorted by their position in the queue.
First create your view like you normally would. The screenshots in this example, we are using a view of Content (aka Nodes), but this should be the same process for any entity type.
Then click add in the "Relationships" section. Select the Entityqueue relationship handler.
Just like with Nodequeue you can (and usually should) check the "Limit to one or more queues" box. Then check the box(es) for your queue(s) from the list. Most of the time when I need a queue, the client wants a list of content, probably sorted by most recent at the top. But they also want to be able to feature a few other items at the top for a period of time. In order to accomplish that, the queue will hold the featured items, and items in the queue will show at the top, followed by the normal sorting rules. In our view we will leave the "Require this relationship" checkbox unchecked.
You can see in the preview that the results aren't sorted properly, yet.
Click add in the "Sort criteria" section. Select the Queue Position and Queue Name sort handlers.
Set Queue Position to "Sort ascending" so that the first item in the queue will show up first in the view results.
Since we didn't check the "Require this relationship" checkbox, we need to also sort by the Queue name and select "Sort descending". The way this works is that if the node is not in the queue, the Queue name will be empty, as will the position. Since the position is a numeric handler, empty gets treated as 0, and ends up first in the list.
We will counteract this by sorting by the Queue Name first, and sort them descending so that items in the queue show first followed by items that aren't in the queue. Rearrange the sort criteria so that Queue Name is first, followed by Queue Position, then add any other sort criteria you have. Now you should see your results sorted properly.