Zero24: Difference between revisions
From Joomla! Documentation
No edit summary |
|||
| Line 20: | Line 20: | ||
Basicly you have all custom fields coresponding to the current item accessible via a new property in your <code>$item</code> variable called <code>jcfields</code>. | Basicly you have all custom fields coresponding to the current item accessible via a new property in your <code>$item</code> variable called <code>jcfields</code>. | ||
The <code>$item->jcfields</code> is a array that holds the following data per field, where one field looks like this example: | The <code>$item->jcfields</code> property is a array that holds the following data per field, where one field looks like this example: | ||
<source lang="php"> | <source lang="php"> | ||
Revision as of 21:12, 11 April 2017
Tobias Zulauf - zero24
I'm a specialist for system integration in Germany. I'm involved with Joomla! since 2011.
- tobias.zulauf[at]community.joomla.org
- https://www.jah-tz.de
- https://github.com/zero-24
- https://volunteers.joomla.org/joomlers/tobias-zulauf
How to use custom fields in your overrides
Introdutuin
The real power of custom fields is that you can use it in your own overrides. Here is a example how you can do that.
Getting custom fields in your override
Basicly you have all custom fields coresponding to the current item accessible via a new property in your $item variable called jcfields.
The $item->jcfields property is a array that holds the following data per field, where one field looks like this example:
Array
(
[4] => stdClass Object
(
[id] => 4
[title] => article-editor
[name] => article-editor
[checked_out] => 0
[checked_out_time] => 0000-00-00 00:00:00
[note] =>
[state] => 1
[access] => 1
[created_time] => 2017-04-07 12:08:59
[created_user_id] => 856
[ordering] => 0
[language] => *
[fieldparams] => Joomla\Registry\Registry Object
(
[data:protected] => stdClass Object
(
[buttons] =>
[width] =>
[height] =>
[filter] =>
)
[initialized:protected] => 1
[separator] => .
)
[params] => Joomla\Registry\Registry Object
(
[data:protected] => stdClass Object
(
[hint] =>
[render_class] =>
[class] =>
[showlabel] => 1
[disabled] => 0
[readonly] => 0
[show_on] =>
[display] => 2
)
[initialized:protected] => 1
[separator] => .
)
[type] => editor
[default_value] =>
[context] => com_content.article
[group_id] => 0
[label] => article-editor
[description] =>
[required] => 0
[language_title] =>
[language_image] =>
[editor] =>
[access_level] => Public
[author_name] => Super User
[group_title] =>
[group_access] =>
[group_state] =>
[value] => Bar
[rawvalue] => Bar
)
)
Render the field using the default
To render the field you can use FieldsHelper::render() by passing the needed values.
/**
* Renders the layout file and data on the context and does a fall back to
* Fields afterwards.
*
* @param string $context The context of the content passed to the helper
* @param string $layoutFile layoutFile
* @param array $displayData displayData
*
* @return NULL|string
*
* @since 3.7.0
*/
public static function render($context, $layoutFile, $displayData)
Example code for the override
// Load the FieldsHelper
<?php JLoader::register('FieldsHelper', JPATH_ADMINISTRATOR . '/components/com_fields/helpers/fields.php'); ?>
<?php foreach ($this->item->jcfields as $field) : ?>
// Render the field using the fields render method
<?php echo FieldsHelper::render($field->context, 'field.render', array('field' => $field)); ?>
<?php endforeach ?>