Via Hacker News, this Chrome for Developers post dives into browser colors beyond RGB.
The Tied Entries plugin works similarly to the exp:channel:entries tag's related_entries and reverse_related_entries tags. The difference is that you can tie entries to those in other channels not just one relationship away but via all the relationships and reverse relationships that connect them. There is no limit to the length of this tie, ie, to the number of relationship steps.
h2. Known Issues
* When using MSM and displaying a channel from another site, the search:field_name parameter doesn't work.
* When using Playa, entries cannot be sorted using the Playa order.
h2. Installation
Place the */tied_entries* directory from the download package into your site's */[system_folder]/expressionengine/third_party* directory.
h2. Required Parameters
h4. site
Required when using the Multiple Site Manager.
h4. this_channel
If you are using the this_url_title parameter instead of the this_entry_id parameter to set the initial entry, then the channel name must also be specified, as entries from different channels can share the same url_title.
h4. this_entry_id
This required parameter sets the initial entry. If the plugin is within another tag, such as the channel:entries tag, then the value of this parameter can be set dynamically, eg, with the {entry_id} variable.
h4. this_url_title
If the entry_id is not available then the entry can be set by the url_title, such as from a segment variable.
h4. tie
This is where the magic happens. Build the tie with relationship fields and channel names. Prefix each relationship field with ">" to signify a relationship (or "child" in Playa) and each channel name with "<" to signify a reverse relationship (or "parent" in Playa). These two different prefixes address the ambiguity where a field and a channel can share the same name.
In reverse relationships you can limit the results to a specific relationship field. Do this with a colon separating the channel name from the field, eg, tie="<my_channel:my_field_name<another_channel". You can also limit results to a number of specific relationship fields using a pipe, eg, tie="<my_channel:my_field_name|my_second_field_name<another_channel".
h2. Optional parameters
h4. allow_php
Set to "Y", "y", "Yes" or "yes" to allow PHP within the tag. Default is not.
h4. backspace
h4. category
h4. channel
h4. day
h4. debug
Set to yes and instead of results the main SQL statement and error messages are displayed, if any, regarding the value of "tie". Messages are displayed within a div of CSS class "tied-entries-message" if you want to style that.
h4. delimiter
When using the "entry_ids" mode, this parameter lets you present the list of entry_ids using a parameter other than the default commas.
h4. entry_id
h4. limit
h4. month
h4. orderby
h4. mode
Current values are "full" (default), "entry_ids" and "economy". The "economy" mode does not parse custom field names. The "entry_ids" mode limits the output to a list of entry_ids only separated by commas. You can change the delimiter with the "delimiter"¶meter.
In "entry_ids" mode, the following parameters will not work: category, day, limit, month, orderby, show_expired, show_future_entries, sort, start_on, status, sticky, stop_before, year. Also, there is no need for a closing tag.
h4. parse
Setting parse="inward" allows another tag to be placed within Tied Entries. This is a universal parameter for all plugins.
h4. search:[custom field]
h4. show_expired
h4. show_future_entries
h4. sort
h4. start_on
h4. status
h4. sticky
h4. stop_before
h4. url_title
h4. year
h2. Variables
h4. {tied:[single_standard_variable]}
All the "channel entries single standard variables":http://expressionengine.com/user_guide/modules/channel/channel_entries.html#single-variables are available (though they haven't all been tested -- please add a comment if you find any that don't work).
h4. {tied:[custom_field]}
Text input and text area custom fields can be displayed.
Relationship fields cannot be displayed.
Date variables cannot be displayed the regular way, ie, {tied:entry_date format="%D/%M/%Y"}. Instead, use PHP (set the plugin's allow_php parameter to "yes" and the template's PHP parsing stage to "output"):
<?php echo date("D/F/Y", "{tied:entry_date}"); ?>
Note that PHP's date format codes are slightly different to EE's own. They're posted at "PHP's date function manual page":http://www.php.net/manual/en/function.date.php.
h2. Using Playa
Playa 4+ is supported only.
If you have Playa installed, you can still use both Playa and regular relationship fields in the tie parameter, but only if they are in separate steps within the tie.
In the tie, if you have a reverse/channel step lacking a filter field, ie my_channel, then if Playa is installed the plugin will _only_ find Playa fields. You can override this behavior by setting the reverse_method to "rel" but then you can only find regular relationship fields in that step of the tie, not Playa fields.
If you filter for particular fields in your reverse/channel step, ie, my_channel:one_field|another_field then they must all be Playa fields, or regular relationship fields if you use reverse_method="rel".
You can mix and match Playa and regular relationship fields in separate steps of the tie, so that, eg, first_channel:rel_field_1|rel_field_2<second_channel:playa_field_1|playa_field_2 is fine.
h2. Examples
We have a portfolio site of songs, albums and bands. Songs have an Albums relationship field songs_album while Albums have a Band relationship field albums_band. We're listing songs and we'd like to have the band name next to each one. This is what we'd like to do:
<ul>
{exp:channel:entries channel="songs"}
<li>
{title}
{related_entries id="songs_album"}
{related_entries id="albums_band"}
(<a href="{path=bands}{tied:url_title}">{tied:title}</a>)
{/related_entries}
{/related_entries}
</li>
{/exp:channel:entries}
</ul>
In reverse, we have a list of bands and want to show 10 their songs alphabetically:
<ul>
{exp:channel:entries channel="bands"}
<li>
{title}
<ul>
{reverse_related_entries channel="albums"}
{reverse_related_entries channel="songs"}
{if "{count}"=="1"}<ul>{/if}
<li>
<a href="{path=songs}{url_title}">{title}</a>
{if "{songs_review}"}: {songs_review}{/if}
</li>
{if "{total_results}"=="{count}"}</ul>{/if}
{/reverse_related_entries}
{/reverse_related_entries}
</ul>
</li>
{/exp:channel:entries}
</ul>
But the related_entries and reverse_related_entries tags can't be nested. So here's how the above is done with tied entries:
<ul>
{exp:channel:entries channel="songs"}
<li>
{title}
{exp:tied_entries this_entry_id="{entry_id}" tie=">songs_album>albums_band"}
(<a href="{path=bands}{tied:url_title}">{tied:title}</a>)
{/exp:tied_entries}
</li>
{/exp:channel:entries}
</ul>
And:
<ul>
{exp:channel:entries channel="bands"}
<li>
{title}
<ul>
{exp:tied_entries this_entry_id="{entry_id}" tie="<albums<songs" limit="10" orderby="title" sort="asc"}
{if "{tied:count}"=="1"}<ul>{/if}
<li>
<a href="{path=songs}{tied:url_title}">{tied:title}</a>
{if "{tied:songs_review}"}: {tied:songs_review}{/if}
</li>
{if "{tied:total_results}"=="{tied:count}"}</ul>{/if}
{/exp:tied_entries}
</ul>
</li>
{/exp:channel:entries}
</ul>
Note that each reverse relationship can result in many entries, while each relationship can result in only one.
h2. Thanks
Thanks to Yvonne Martinsson of fellow EE Pro Network member "Studio.Freewheelin":http://freewheelin.nu for initial testing./a¶ mode, this parameter lets you present the list of entry_ids using a parameter other than the default commas.
h4. entry_id
h4. limit
h4. month
h4. orderby
h4. mode
Current values are