- Compatible XF Versions
- 2.1, 2.2
This add-on allows creating any number of custom PHP pages with or without the XF layout.
A custom page has access to the XF engine's functions, including sessions and permissions.
All custom pages are their own PHP script with individual configuration; PHP knowledge is required.
A custom page script can be above, below or within the XF install folder, no restrictions.
You can optionally configure any of the following items on a per-page basis:
Parameters
How to set parameters externally
To set any parameter above from an external script, define the PHP constant SCRIPT_PAGE_{KEY} prior to loading XenForo, i.e.
Disclosure: This add-on is fully functional and is receiving updates if/when it is broken by a core XF update only; there are otherwise no updates and there is no support.
A custom page has access to the XF engine's functions, including sessions and permissions.
All custom pages are their own PHP script with individual configuration; PHP knowledge is required.
A custom page script can be above, below or within the XF install folder, no restrictions.
You can optionally configure any of the following items on a per-page basis:
- The custom <head> tag items on top of XenForo's defaults (presumably from an external script)
- The custom page title
- The custom page content
- Whether or not to wrap above content in the XenForo layout
- Whether or not to include XF's social meta tags for social media content previews
- Whether or not to show breadcrumbs, and what breadcrumbs to show
- Install the add-on zip file (this is an add-on package without extra files)
- Make a copy of sample.php script and name it whatever you want
- Point the script's XF constant value to your XenForo install folder; the default is DIR
- Set the $head and/or $content variables
- Adjust the \ScriptsPages\Setup::set parameters (below), and installation is complete
PHP:
<?php
// Set PHP Reporting
error_reporting(E_ALL & ~E_NOTICE);
define('__XF__', __DIR__); // EDIT VALUE IF SCRIPT IS NOT IN XF FOLDER
require __XF__ . '/src/XF.php';
XF::start(__XF__);
\ScriptsPages\Setup::set('init', true);
$app = \XF::setupApp('XF\Pub\App');
$app->start();
$request = $app->request();
// EDIT BELOW to set the page's $head and/or $content; the code below is a sample
/** ob_start();
require_once __DIR__ . DIRECTORY_SEPARATOR . pathinfo(__FILE__, PATHINFO_FILENAME) . "-head.php";
$head = ob_get_contents();
ob_end_clean(); **/
/** ob_start();
require_once __DIR__ . DIRECTORY_SEPARATOR . pathinfo(__FILE__, PATHINFO_FILENAME) . "-content.php";
$content = ob_get_contents();
ob_end_clean(); */
// EDIT BELOW TO CONFIGURE
\ScriptsPages\Setup::set([
'breadcrumbs' => ['Item 1' => '/1', 'Item 2' => '/2', 'Item 3' => '/3'],
'head' => $head,
'content' => $content
]);
// STOP HERE
$app->run()->send($request);
PHP:
[
'navigation_id' => null, // the navigation tab to highlight
'head' => null, // code to embed inside the <head> tag
'metadata' => true, // include social media meta tags like 'og:*' for social media previews
'title' => null, // the page title; if null, falls back to board title
'breadcrumbs' => true, // true to include breadcrumbs, false to not, or an array of [name => href, ...]
'content' => null, // the page content; this is required
'raw' => false // whether or not to remove the XenForo layout
]
To set any parameter above from an external script, define the PHP constant SCRIPT_PAGE_{KEY} prior to loading XenForo, i.e.
PHP:
define('SCRIPT_PAGE_CONTENT', '<b>Hello world</b>');