Getting Started
Addon Locations
This section will go over where addons can be loaded from and the difference between core
and application
addons.
Core Addons
All addons listed in the composer.json
file will be installed by composer in the /core
directory similar to the /vendor
directory.
Only addons required by the root composer.json file will resolve dependencies required by the addon's composer.json file.{.notice}
Application Addons
All non-core addons are considered application
addons and are located in the /addons
directory.
Application addons should be committed to the project's repository.{.notice}
Application addons are split into private
addons and shared
addons.
Private Addons
Private addons are located within /addons/{APP_REF}
directory and are organized by vendor just like the /core
and /vendor
directories.
Private addons are only available to the application designated by the {APP_REF}
directory in which they reside.
Shared Addons
Shared addons are located within /addons/shared
directory and are organized by vendor just like the /core
and /vendor
directories.
Shared addons are available to all applications within the PyroCMS installation.
Packaged Addons
Addons can include their own addons. While it is not common the Grid
and Repeater
field types are good examples of an addon that come packaged with it's own dependent addons.
Addons can be registered anywhere but when using this technique they are usually found within the /addons
directory within the addon itself.
Addon Object
All addon types extend the base Anomaly\Streams\Platform\Addon\Addon
class and inherit some basic functionality.
isCore
The isCore
method returns whether the addon is core
or not.
if ($addon->isCore()) {
echo 'Yep!';
}
{% is addon.isCore() %}
Yep!
{% endif %}
isShared
The isShared
method returns if the addon is shared
or not.
if ($addon->isShared()) {
echo 'Yep!';
}
{% addon.isShared() %}
Yep!
{% endif %}
getName
The getName
method returns the translatable name of the addon.
echo trans($addon->getName());
{{ trans(addon.getName()) }}
getTitle
The getTitle
method returns the title
which generally similar to the name
but does not include the addon type.
echo trans($addon->getTitle());
{{ trans(addon.getTitle()) }}
getDescription
The getDescription
method returns the addon description.
echo trans($addon->getDescription());
{{ trans(addon.getDescription()) }}
getNamespace
The getNamespace
method returns the addon's dot namespace
with an optional key.
This is helpful for creating config keys, language keys, hinted view paths, and anything else prefixed by the addon's dot namespace.
An optional key
can be provided to create a dot-namespace config key for example.
echo $addon->getNamespace();
// anomaly.module.pages
echo $addon->getNamespace('config.limit')
// anomaly.module.pages::config.limit
{{ addon.getNamespace() }}
// anomaly.module.pages
{{ addon.getNamespace('config.limit') }}
// anomaly.module.pages::config.limit
You can see how this could be used to generate a config dot-namespace key.
{{ config(addon.getNamespace('config.limit'), 100) }}
getPath
The getPath
method returns the addon's installed path.
require_once $addon->getPath() . '/some/old-timer/file.php';
getAppPath
The getAppPath
returns the relative application path of the addon.
require_once base_path($addon->getAppPath() . '/some/old-timer/file.php');
getType
The getType
returns the addon type
in singular form.
if ($addon->getType() == 'field_type') {
echo "I'm a field type!";
}
{% if addon.getType() == "field_type" %}
I'm a field type!
{% endif %}
getSlug
The getSlug
method returns the slug of the addon.
echo $addon->getSlug();
// pages
{{ addon.getSlug() }}
// pages
getVendor
The getVendor
method returns the vendor string of the addon.
echo $addon->getVendor();
// anomaly
{{ addon.getVendor() }}
// anomaly