Relationships Fieldtype Extension Hooks
relationships_display_field($entry_id, $field_id, $sql)relationships_display_field_options($entry_id, $field_id, $sql)relationships_post_save($ships, $entry_id, $field_id)relationships_query($field_name, $entry_ids, $depths, $sql)relationships_query_result($entry_lookup)relationships_modify_rows($rows, $node)relationship_entries_tagdata($tagdata, $row)
relationships_display_field($entry_id, $field_id, $sql)
| Parameter | Type | Description |
|---|---|---|
| $entry_id | Int |
Entry ID of entry being edited. |
| $field_id | Int |
Field ID of field currently being loaded. |
| $sql | String |
Compiled SQL about to be run to gather related entries. |
| Returns | Array |
Result Array of query result. |
Allows developers to modify the existing query that retrieves related entries for the publish field or to perform their own queries to return related entries.
How it’s called:
if (ee()->extensions->active_hook('relationships_display_field') === TRUE)
{
$related = ee()->extensions->call(
'relationships_display_field',
$entry_id,
$this->field_id,
ee()->db->_compile_select()
);
}
else
{
$related = ee()->db->get()->result_array();
} Note: To use this hook, you can either add to the existing Active Record call, or call ee()->db->_reset_select() to cancel the Active Record call and start your own, or modify the passed compiled SQL.
relationships_display_field_options($entry_id, $field_id, $sql)
| Parameter | Type | Description |
|---|---|---|
| $entries | Object |
ChannelEntry model object. |
| $field_id | Int |
Field ID of field currently being loaded. |
| $settings | Array |
The field settings for the field being loaded. |
| Returns | Void |
Allows developers to add additional filters to the entries that populate the select options available to the relationship field.
How it’s called:
if (ee()->extensions->active_hook('relationships_display_field_options') === TRUE)
{
ee()->extensions->call(
'relationships_display_field_options',
$entries,
$this->field_id,
$this->settings
);
}
relationships_post_save($ships, $entry_id, $field_id)
| Parameter | Type | Description |
|---|---|---|
| $ships | Array |
Array of entry IDs to be related to the entry. |
| $entry_id | Int |
Entry ID of entry being saved. |
| $field_id | Int |
Field ID of field currently being saved. |
| Returns | Array |
Array of relationships. |
Allows developers to modify or add to the relationships array before saving.
How it’s called:
$ships = ee()->extensions->call('relationships_post_save', $ships, $entry_id, $field_id);
relationships_query($field_name, $entry_ids, $depths, $sql)
| Parameter | Type | Description |
|---|---|---|
| $field_name | String |
Name of current node being parsed. |
| $entry_ids | Int |
Entry IDs of entries being queried for. |
| $depths | Array |
Depth of branches. |
| $sql | String |
Compiled SQL about to be run to gather related entries. |
| Returns | Array |
Result Array of query result. |
Allows developers to modify the existing query that retrieves related entries for front end tag parsing or to perform their own queries to return related entries.
How it’s called:
if (ee()->extensions->active_hook('relationships_query') === TRUE)
{
$result = ee()->extensions->call(
'relationships_query',
$node->field_name(),
$entry_ids,
$depths,
$db->_compile_select()
);
}
else
{
$result = $db->get()->result_array();
} Note: To use this hook, you can either add to the existing Active Record call, or call ee()->db->_reset_select() to cancel the Active Record call and start your own, or modify the passed compiled SQL.
relationships_query_result($entry_lookup)
| Parameter | Type | Description |
|---|---|---|
| $entry_lookup | Array |
Array of entry IDs to rows for all relationship tags. |
| Returns | Array |
Array of entry IDs to rows. |
Allows developers to modify or add columns to the relationships array. Do not use this hook to remove elements.
How it’s called:
$entry_lookup = ee()->extensions->call('relationships_query_result', $entry_lookup);
relationships_modify_rows($rows, $node)
| Parameter | Type | Description |
|---|---|---|
| $rows | Array |
Array of entry IDs to rows for this tag. |
| $node | ParseNode |
Parse node for the current relationships tag. |
| Returns | Array |
Array of entry ids to rows for this tag. |
Allows developers to modify or add to the relationship rows right before parsing happens.
How it’s called:
$rows = ee()->extensions->call('relationships_modify_rows', $rows, $node);
relationship_entries_tagdata($tagdata, $row)
| Parameter | Type | Description |
|---|---|---|
| $tagdata | String |
Relationship entries tagdata |
| $row | Array |
Current relationship data |
| Returns | String |
Modified $tagdata |
Modify the tagdata for the relationship tag pair before anything else is parsed.
How it’s called:
$tagdata = $this->extensions->call('relationship_entries_tagdata', $tagdata, $row);
if ($this->extensions->end_script === TRUE) return $tagdata;