A flexible super-lightweight PHP framework with PHP templates
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


The juju-framework is a minimalistic framework, that can be used for simple template-driven pages.

Contact me via http://bondconsult.no/Contact, or github.com/bond - for submitting patches or questions.

The framework is very lightweight and flexible and can be used in many ways, it is intended for php developers. Here is a quick example of how to use it:

First, drop the juju-framework in your library-folder, in example "yourproject/lib/juju-framework". Create a index.php file that will describe your site:


$lib = "$root/lib";

// include framework
require_once "$lib/juju-framework/Site.inc.php";

// define site
$site = new Site;
$site->name = 'My homepage';

// The script expects to have URLs rewritten to /index.php?url=$1, if you prefer to use PATH_INFO and rewrite to /index.php/$1 use this:
// $site->use_path_info();

// Add a page to the $site. This page will react to '/' URI, the page name (ie, for use in titles - will be 'welcome'. 
// The second option to the new page, is a array of options. The template-option is required. The template named 'welcome', will be translated into 'templates/welcome.php'. The options can be accessed via $page->opts['option_name']. IE, an option for including jquery can be set on the pages that needs jquery.
// The third option to $site->add_page(), 'main', is which menu's the site should be included in. This can also be an array, if you wish to include the page into multiple menus.
// the menu's can be fetched with: $site->get_menu('main'), or the name that was given to it.

	new Page('welcome', 
			'template' => 'welcome',

  new Page('test',
      'template' => 'test',

// check if the current request is valid
if ($page = $site->load_requested_page()) {
      // valid request, render the usual layout-file. the layout file is where all your html design goes. Usually you will: "<?php include($page->template()) ?>" where you want the pages content to go.
      include( $page->layout() );
} else {
  echo "<html><body><h1>404: Page not found</h1></body></html>";