Fields definition
Custom fields could be defined easily by standard Joomla! XML form definition file. To define fields for specific component, first you need to find out its context, than create definition files, and store it within your template folder struxture.
Finally modify your template to use such fields in any way you want.
Context
First of all you need to find context of the specific form, you would like to extend by custom fields. In most cases this is name of component, followed by name of view.
Example could be com_content.article
, com_modules.module
, com_menus.item
etc.
Some extensions could use different contexts, if so you have to find the context from the code of the extension, or ask the developer of such extension.
For com_categories, there is exclusion for this rule. To make definition for categroies
specific for every extension, the context is always com_extension.category
, so
for example com_content.category
.
Files structure
If you know the context, you are ready to create your fields definition file.
In your template folder create subfolder named n3tfields
. Now create subfolder
with name before first dot in context. If context contains more than 1 dot, create
as many subfolders, as are contained in context.
The last part of context, after the last dot, specifies name of xml file, containing fields definition.
So for example, for context com_content.article
, you should create file named
article.xml
and place it to folder n3tfields/com_content
within your template folder.
Example of complex file structure could look like this:
..
n3tfields
com_content
article.xml
category.xml
com_modules
module.xml
com_users
user.xml
Some contexts supports contexs extensions. For example com_modules.module
context
supports specific files per module type. In such case form module mod_custom
could
file structure look like this:
..
n3tfields
com_modules
module
mod_custom.xml
module.xml
In this case all fields defined in module.xml
will be available for all modules,
and fields in module/mod_custom.xml
will be available just for mod_custom.
Note that fields defined in module/mod_custom.xml
still have context com_modules.module
,
so you can access it same way as any other field defined directly in module.xml
,
they have just separated definition.
Files content
XML definition files has to be standard Joomla! XML form definiftion files. Take a look in Joomla! documentation to find more. Also list of Standard Joomla! fields could be useful.
To make things easier, n3t Fields also integrates Joomla! fields plugins, so if you install
custom fields plugin, you could use it directly in your file, without need to add
addfieldspath
syntax.
Fields itself has to be named n3tfields
. Fieldsets could be generally named however you want,
but not all components (com_banners for example) supports all fieldsets. In such case,
you have to use some fieldset name supported by component view.
Example of simple fields definition for articles could be:
<?xml version="1.0" encoding="utf-8"?>
<form>
<fields name="n3tfields">
<fieldset name="myparams" label="My extra fields">
<field name="my_field" type="text" label="My field" />
</fieldset>
</fields>
</form>
If you save this file as n3tfields\com_content\article.xml
, your article definition
page will be extended by tab named 'My extra fields', with one text field named
'My field'.
Note that for labels, descriptions or any other translatable content in definition files
you could use language constants placed directly in your template language file.
These should be place in language
subfolder of your template and are loaded automatically
by n3t Fields.
Multiple templates
Fields definition is shared between templates. In administration, all templates are being serached for fields definition, ordered alphabetically by template name. So, if two fields with same name are defined in two different templates, later definition will be used (that in template, whis is alphabetically ordered as later).
This could be usefull, if you plan to share fields values between templates (for example Article subtitle). There is small pitfall, if you are not carefull with name of fields, it could happen, that different field type is loaded than you expected.