Router w/Static HTML Integration Tutorial
How it works:
- Generate static HTML pages in a subfolder of the site, based on static HTML templates.
- Include a Router to enable:
- Page URLs anywhere in the site
- Redirects defined in CMS
Router w/Static HTML Limitations:
- No Server-side code in pages unless publish templates are used
Overview:
The Router integration method:
- Serves static content (images, files) out of a public content folder
- Adds a route to the PHP application, to serve CMS pages and redirects
The route should be placed at the end of other application routes.
Integration:
- In the jsHarmony CMS, on the Sites tab, create a new Site
- Download the jsHarmony Redirects Component and extract into your site's SFTP folder. This contains a "jshcms_redirects" component that exports the Redirects as JSON into a file named "jshcms_redirects.json" in the root of the site. A site_config.json file is also included that sets the "redirect_listing_path" parameter to the new file.
- In the Site Settings, add a Deployment Target:
- Configure the Deployment Target to publish to a public folder in the PHP application
- Set the URL Prefix to the path prefix for the CMS Content files
- Set the "Override Page URL Prefix" to the path prefix for the CMS Page URLs, if different from the CMS Content path
- Generate the Integration Code:
- In the Deployment Target, click on the "Integration Code" tab
- Select the Environment "PHP - Router" to get the Integration Code
- In your PHP application, install the "jsharmony-cms-sdk-php" Composer library:
composer require apharmony/jsharmony-cms-sdk-php
* Alternatively, the SDK can be downloaded directory from the Github jsharmony-cms-sdk-php project.
- In your PHP application, add the jsHarmonyCmsRouter code from the Integration Code tab in step 4
// If not already included in your application, auto-load Composer
require_once __DIR__.'/vendor/autoload.php';
// Initialize the jsHarmony CMS Router
use apHarmony\jsHarmonyCms\CmsRouter;
$cmsRouter = new CmsRouter([
"redirect_listing_path" => "jshcms_redirects.json",
"cms_server_urls" => ["https://cms.example.com/"],
"content_path" => $_SERVER['DOCUMENT_ROOT']."/path/to/published_files"
]);
// Serve CMS content for the current URL
if(!$cmsRouter->serve()){
$cmsRouter->generate404();
}
* Be sure to update the "content_path" property to match the CMS files publish folder in your PHP application
- Create a Page Template:
- Local Page Templates can be defined in the CMS, by using the Site's SFTP
- Remote Page Templates can be defined in a public subfolder of the PHP application, and linked to the CMS in the Site Settings "Page Templates" tab.
- If using Remote Page Templates, add the CMS Editor Launcher to each remote page template. Copy the integration code from the Integration Code tab in step 4
<script type="text/javascript" class="removeOnPublish" src="/.jsHarmonyCms/jsHarmonyCmsEditor.js"></script>
<script type="text/javascript" class="removeOnPublish">
jsHarmonyCmsEditor({"access_keys":["****ACCESS_KEY*****"]});
</script>
* Be sure to keep the "removeOnPublish" class in the Launcher script tags, so that the Launcher will not be included in the published pages
* The jsHarmonyCmsEditor.js file is automatically served by the jsHarmonyCmsRouter. The path can be updated in the Router config['cms_clientjs_editor_launcher_path'] parameter
- Add CMS content and publish to the Deployment Target, generating HTML files in the subfolder of the PHP application