function <addon>_head(App $a)
{
- $a->registerStylesheet(__DIR__ . '/relative/path/to/addon/stylesheet.css');
+ \Friendica\DI::page()->registerStylesheet(__DIR__ . '/relative/path/to/addon/stylesheet.css');
}
```
function <addon>_footer(App $a)
{
- $a->registerFooterScript(__DIR__ . '/relative/path/to/addon/script.js');
+ \Friendica\DI::page()->registerFooterScript(__DIR__ . '/relative/path/to/addon/script.js');
}
```
In your code, like in the function addon_name_content(), load the template file and execute it passing needed values:
```php
+use Friendica\Core\Renderer;
+
# load template file. first argument is the template name,
# second is the addon path relative to friendica top folder
$tpl = Renderer::getMarkupTemplate('mytemplate.tpl', __DIR__);
Hook::callAll('init_1');
Hook::callAll('app_menu', $arr);
- Hook::callAll('page_content_top', $a->page['content']);
+ Hook::callAll('page_content_top', DI::page()['content']);
Hook::callAll($a->module.'_mod_init', $placeholder);
Hook::callAll($a->module.'_mod_init', $placeholder);
Hook::callAll($a->module.'_mod_post', $_POST);
Hook::callAll($a->module.'_mod_afterpost', $placeholder);
Hook::callAll($a->module.'_mod_content', $arr);
Hook::callAll($a->module.'_mod_aftercontent', $arr);
- Hook::callAll('page_end', $a->page['content']);
+ Hook::callAll('page_end', DI::page()['content']);
### include/api.php
### src/Content/Nav.php
- Hook::callAll('page_header', $a->page['nav']);
+ Hook::callAll('page_header', DI::page()['nav']);
Hook::callAll('nav_info', $nav);
+### src/Core/Authentication.php
+
+ Hook::callAll('logged_in', $a->user);
+
+### src/Core/StorageManager
+
+ Hook::callAll('storage_instance', $data);
+
### src/Worker/Directory.php
Hook::callAll('globaldir_update', $arr);
### src/Module/Login.php
- Hook::callAll('authenticate', $addon_auth);
Hook::callAll('login_hook', $o);
### src/Module/Logout.php
### src/Core/Authentication.php
Hook::callAll('logged_in', $a->user);
+ Hook::callAll('authenticate', $addon_auth);
### src/Core/Hook.php