User

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.



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 ?>