. */ use Fisharebest\Webtrees\Menu; use Fisharebest\Webtrees\Theme\WebtreesTheme; /** * Class CustomTheme - This is a template showing how to create a custom theme. * * Since theme folders beginning with an underscore are reserved for special * use, you should copy this entire folder ("themes/_custom") to a new name. * For example, "themes/custom". You should also rename the class. * * In this example, we are extending the webtrees theme, but you could * also extend any of the core themes, or even the base theme. * * Only the first two functions are required: themeId() and themeName(). * The rest are just examples, and should be removed in actual themes. */ class MyTheme extends WebtreesTheme { /** * Give your theme a unique identifier. Themes beginning with an underscore * are reserved for internal use. * * {@inheritdoc} */ public function themeId() { return '_custom'; } /** * Give your theme a name. This is shown to the users. * Use HTML entities where appropriate. e.g. “Black & white”. * * You could use switch($this->locale) {} to provide a translated versions * of the theme name. * * {@inheritdoc} */ public function themeName() { return 'Custom theme'; } /** * This is an example function which shows how to add an additional CSS file to the theme. * * {@inheritdoc} */ public function stylesheets() { $css_files = parent::stylesheets(); // Put a version number in the URL, to prevent browsers from caching old versions. $css_files[] = WT_BASE_URL . 'themes/_custom/custom-v1.0.css'; return $css_files; } /** * This is an example function which shows one way to remove an entry from a menu. * * @param string $surname The significant surname for the page. * * {@inheritdoc} */ public function menuLists($surname) { // Start with the default "Lists" menu. $menu = parent::menuLists($surname); // Remove the "notes" sub-menu. $submenus = array_filter($menu->getSubmenus(), function (Menu $menu) { return $menu->getClass() !== 'menu-list-note'; }); // Replace the sub-menus $menu->setSubmenus($submenus); return $menu; } } return new MyTheme; // This script must return a theme object.