blog->settings->addNamespace(ConstCategoriesPage::NS); // If categoriesPage is not active we stop here : if (!$ns->get(ConstCategoriesPage::PLUGIN_IS_ACTIVE)) { return; } require_once '/_widgets.php'; // Adds news Categories' templates tags : $tpl = $core->tpl; $tpl->addValue('CategoryCount', array('tplCategories', 'CategoryCount')); $tpl->addValue('CategoriesURL', array('tplCategories', 'CategoriesURL')); // Adds a new template behavior : $core->addBehavior('publicBeforeDocument', array('behaviorCategoriesPage', 'addTplPath')); // 'categories' urlHandler : $core->url->register('categories', 'categories', '^categories$', array('urlCategories', 'categories')); // compatibilité avec Breadcrumb $core->addBehavior('publicBreadcrumb', array('extCategoriesPage', 'publicBreadcrumb')); } } class tplCategories { /* Use tag : {{tpl:CategoryCount}} */ public static function CategoryCount($attr) { $f = $GLOBALS['core']->tpl->getFilters($attr); return 'categories->nb_post') . '; ?>'; } /* Use tag : {{tpl:CategoriesURL}} */ public static function CategoriesURL($attr) { $f = $GLOBALS['core']->tpl->getFilters($attr); return 'blog->url.$core->url->getBase("categories")') . '; ?>'; } } class behaviorCategoriesPage { public static function addTplPath($core) { $tpl = $core->tpl; $tpl->setPath($tpl->getPath(), dirname(__FILE__) . '/default-templates'); } } class urlCategories extends dcUrlHandlers { public static function categories($args) { # The entry self::serveDocument('categories.html'); exit; } } class extCategoriesPage { public static function publicBreadcrumb($context, $separator) { // check URL type if ($context == 'categories') { // It's a CategoriesPage page, return my own part return __('Categories page'); } } }