Configuration -> Classes * */ static function AvailableClasses($classes){ // ONLY FOR USE IN A THEME // exits if the page does not use this theme /* if( self::IsCurrentTheme == false ){ return $classes; } */ // REPLACE ALL // not recommended because it renders the Available Classes system settings useless /* $classes = array( array( 'names' => 'plugin-example-toggle', 'desc' => 'A single CSS class entry defined via plugin filter hook', ), array( 'names' => 'plugin-example-option-1 example-option-3 example-option-3', 'desc' => 'A list of selectable classes entry defined via plugin filter hook', ) ); */ // APPEND SINGLE ENTRY // will add one definition at the end of the defined list /* $classes[] = array( 'names' => 'plugin-example-toggle', 'desc' => 'A single CSS class appended entry to preset classes via plugin filter hook', ); */ // APPEND MULTIPLE ENTRIES // will add multiple definitions at the end of the defined list /* $append_these = array( array( 'names' => 'plugin-example-toggle', 'desc' => 'A single CSS class entry appended via plugin filter hook', ), array( 'names' => 'plugin-example-option-1 example-option-3 example-option-3', 'desc' => 'A list of selectable classes appended via plugin filter hook', ) ); $classes = array_merge($classes, $append_these); */ // PREPEND SINGLE ENTRY // will add one definition at the start of the defined list /* $append_this = array( 'names' => 'plugin-example-toggle', 'desc' => 'A single CSS class entry appended to preset classes via plugin filter hook', ); array_unshift($classes, $append_this); */ // PREPEND MULTIPLE ENTRIES // will add one (or more) definitions at the beginning of the defined list // probably the most likely useful variant in plugins or themes //* $prepend_these = array( array( 'names' => 'plugin-example-toggle', 'desc' => 'A single CSS class entry prepended via plugin filter hook', ), array( 'names' => 'plugin-example-option-1 plugin-example-option-3 plugin-example-option-3', 'desc' => 'A list of selectable classes entry prepended via plugin filter hook', ) ); $classes = array_merge($prepend_these, $classes); // */ // MANDATORY return $classes; } /** * * Typesetter action hook * * when AvailaleClasses hook is used in a plugin, like right here, you might want to * load the stylesheet(s) containing rules for your classname entries * */ static function GetHead(){ global $page, $addonRelativeCode, $addon_current_id, $addon_current_version; // \gp\tool\Plugins::css('AvailableClasses.css'); // the stylesheet will be combined with other CSS (if 'combine CSS' is active in configuration) \gp\tool\Plugins::css('AvailableClasses.css', false); // the stylesheet will NOT be combined with other CSS } /** * * Custom method to check if current page uses our theme * * obviously only useful when AvailaleClasses hook is used * in the context of a theme * * returns true or false * */ static function IsCurrentTheme(){ global $page, $gpLayouts, $config, $addonFolderName; $theme_name = $config['addons'][$addonFolderName]['name']; $layout = isset($page->TitleInfo['gpLayout']) ? $page->TitleInfo['gpLayout'] : 'default'; $default_layout = $config['gpLayout']; $current_theme_name = $layout == 'default' ? $gpLayouts[$default_layout]['name'] : $gpLayouts[$layout]['name']; $is_current_theme = ($current_theme_name == $theme_name); return $is_current_theme; } }