sy/bootstrap-cms

Plugin for adding CMS feature

1.12.5 2024-04-15 21:51 UTC

README

sy/bootstrap plugin for adding "CMS" feature in your sy/project based application.

Installation

From your sy/project based application directory, run this command:

composer install-plugin cms

NOTES

The install-plugin command will do all these following steps:

  1. Run composer require
  2. Copy templates files
  3. Copy lang files
  4. Create flyway migration file
  5. Copy scss files
  6. Copy assets files
  7. Run composer build
  8. Run composer db migrate

Page methods

Create a method in your Project\Application\Page class (in protected/src/Application/Page.php):

	/**
	 * Content page
	 */
	public function contentAction() {
		$service = \Project\Service\Container::getInstance();

		$id = $this->get('id', 1);

		// Retrieve content
		$content = $service->content->retrieve(['id' => $id]);

		if (empty($content)) {
			throw new \Sy\Bootstrap\Application\Page\NotFoundException();
		}

		$this->setContentVars([
			'CONTENT' => new \Sy\Bootstrap\Component\Cms\Content($id),
		]);
	}

Optionally, override the home page with the content page

	/**
	 * Home page
	 */
	public function homeAction() {
		$this->copy('content');
	}

Add URL converter in Application.php

In protected/src/Application.php

<?php
namespace Project;

use Sy\Bootstrap\Lib\Url;

class Application extends \Sy\Bootstrap\Application {

	protected function initUrlConverter() {
		Url\AliasManager::setAliasFile(__DIR__ . '/../conf/alias.php');
		Url::addConverter(new Url\AliasConverter());
		Url::addConverter(new Url\ContentConverter()); // Add the content URL converter
		Url::addConverter(new Url\ControllerActionConverter());
	}

}

Add the content pages sitemap in Sitemap.php

In protected/src/Application/Sitemap.php

<?php
namespace Project\Application;

class Sitemap extends \Sy\Bootstrap\Application\Sitemap {

	public function __construct() {
		parent::__construct();
		$this->addProvider(new \Sy\Bootstrap\Application\Sitemap\Page());
		$this->addProvider(new \Sy\Bootstrap\Application\Sitemap\Content()); // Add the content sitemap
	}

}