ThemeHandlerInterface.php

Same filename in other branches
  1. 9 core/lib/Drupal/Core/Extension/ThemeHandlerInterface.php
  2. 10 core/lib/Drupal/Core/Extension/ThemeHandlerInterface.php
  3. 11.x core/lib/Drupal/Core/Extension/ThemeHandlerInterface.php

Namespace

Drupal\Core\Extension

File

core/lib/Drupal/Core/Extension/ThemeHandlerInterface.php

View source
<?php

namespace Drupal\Core\Extension;


/**
 * Manages the list of available themes.
 */
interface ThemeHandlerInterface {
    
    /**
     * Installs a given list of themes.
     *
     * @param array $theme_list
     *   An array of theme names.
     * @param bool $install_dependencies
     *   (optional) If TRUE, dependencies will automatically be installed in the
     *   correct order. This incurs a significant performance cost, so use FALSE
     *   if you know $theme_list is already complete and in the correct order.
     *
     * @return bool
     *   Whether any of the given themes have been installed.
     *
     * @throws \Drupal\Core\Extension\ExtensionNameLengthException
     *   Thrown when the theme name is to long.
     *
     * @deprecated in drupal:8.0.0 and is removed from drupal:9.0.0.
     *   Use the theme_installer service instead.
     *
     * @see https://www.drupal.org/node/3017233
     * @see \Drupal\Core\Extension\ThemeInstallerInterface::install()
     */
    public function install(array $theme_list, $install_dependencies = TRUE);
    
    /**
     * Uninstalls a given list of themes.
     *
     * Uninstalling a theme removes all related configuration (like blocks) and
     * invokes the 'themes_uninstalled' hook.
     *
     * @param array $theme_list
     *   The themes to uninstall.
     *
     * @throws \Drupal\Core\Extension\Exception\UninstalledExtensionException
     *   Thrown when you try to uninstall a theme that wasn't installed.
     *
     * @deprecated in drupal:8.0.0 and is removed from drupal:9.0.0.
     *   Use the theme_installer service instead.
     *
     * @see https://www.drupal.org/node/3017233
     * @see hook_themes_uninstalled()
     * @see \Drupal\Core\Extension\ThemeInstallerInterface::uninstall()
     */
    public function uninstall(array $theme_list);
    
    /**
     * Returns a list of currently installed themes.
     *
     * @return \Drupal\Core\Extension\Extension[]
     *   An associative array of the currently installed themes. The keys are the
     *   themes' machine names and the values are Extension objects having the
     *   following properties:
     *   - filename: The filepath and name of the .info.yml file.
     *   - name: The machine name of the theme.
     *   - status: 1 for installed, 0 for uninstalled themes.
     *   - info: The contents of the .info.yml file.
     *   - stylesheets: A two dimensional array, using the first key for the
     *     media attribute (e.g. 'all'), the second for the name of the file
     *     (e.g. style.css). The value is a complete filepath (e.g.
     *     themes/bartik/style.css). Not set if no stylesheets are defined in the
     *     .info.yml file.
     *   - scripts: An associative array of JavaScripts, using the filename as key
     *     and the complete filepath as value. Not set if no scripts are defined
     *     in the .info.yml file.
     *   - prefix: The base theme engine prefix.
     *   - engine: The machine name of the theme engine.
     *   - base_theme: If this is a sub-theme, the machine name of the base theme
     *     defined in the .info.yml file. Otherwise, the element is not set.
     *   - base_themes: If this is a sub-theme, an associative array of the
     *     base-theme ancestors of this theme, starting with this theme's base
     *     theme, then the base theme's own base theme, etc. Each entry has an
     *     array key equal to the theme's machine name, and a value equal to the
     *     human-readable theme name; if a theme with matching machine name does
     *     not exist in the system, the value will instead be NULL (and since the
     *     system would not know whether that theme itself has a base theme, that
     *     will end the array of base themes). This is not set if the theme is not
     *     a sub-theme.
     *   - sub_themes: An associative array of themes on the system that are
     *     either direct sub-themes (that is, they declare this theme to be
     *     their base theme), direct sub-themes of sub-themes, etc. The keys are
     *     the themes' machine names, and the values are the themes'
     *     human-readable names. This element is not set if there are no themes on
     *     the system that declare this theme as their base theme.
     */
    public function listInfo();
    
    /**
     * Adds a theme extension to the internal listing.
     *
     * @param \Drupal\Core\Extension\Extension $theme
     *   The theme extension.
     */
    public function addTheme(Extension $theme);
    
    /**
     * Refreshes the theme info data of currently installed themes.
     *
     * Modules can alter theme info, so this is typically called after a module
     * has been installed or uninstalled.
     */
    public function refreshInfo();
    
    /**
     * Resets the internal state of the theme handler.
     */
    public function reset();
    
    /**
     * Scans and collects theme extension data and their engines.
     *
     * @return \Drupal\Core\Extension\Extension[]
     *   An associative array of theme extensions.
     */
    public function rebuildThemeData();
    
    /**
     * Finds all the base themes for the specified theme.
     *
     * Themes can inherit templates and function implementations from earlier
     * themes.
     *
     * @param \Drupal\Core\Extension\Extension[] $themes
     *   An array of available themes.
     * @param string $theme
     *   The name of the theme whose base we are looking for.
     *
     * @return array
     *   Returns an array of all of the theme's ancestors; the first element's
     *   value will be NULL if an error occurred.
     */
    public function getBaseThemes(array $themes, $theme);
    
    /**
     * Gets the human readable name of a given theme.
     *
     * @param string $theme
     *   The machine name of the theme which title should be shown.
     *
     * @return string
     *   Returns the human readable name of the theme.
     *
     * @throws \Drupal\Core\Extension\Exception\UnknownExtensionException
     *   When the specified theme does not exist.
     */
    public function getName($theme);
    
    /**
     * Returns the default theme.
     *
     * @return string
     *   The default theme.
     */
    public function getDefault();
    
    /**
     * Sets a new default theme.
     *
     * @param string $theme
     *   The new default theme.
     *
     * @return $this
     *
     * @deprecated in drupal:8.2.0 and is removed from drupal:9.0.0. Use the
     *   configuration system to edit the system.theme config directly.
     *
     * @see https://www.drupal.org/node/3082630
     */
    public function setDefault($theme);
    
    /**
     * Returns an array of directories for all installed themes.
     *
     * Useful for tasks such as finding a file that exists in all theme
     * directories.
     *
     * @return array
     */
    public function getThemeDirectories();
    
    /**
     * Determines whether a given theme is installed.
     *
     * @param string $theme
     *   The name of the theme (without the .theme extension).
     *
     * @return bool
     *   TRUE if the theme is installed.
     */
    public function themeExists($theme);
    
    /**
     * Returns a theme extension object from the currently active theme list.
     *
     * @param string $name
     *   The name of the theme to return.
     *
     * @return \Drupal\Core\Extension\Extension
     *   An extension object.
     *
     * @throws \Drupal\Core\Extension\Extension\UnknownExtensionException
     *   Thrown when the requested theme does not exist.
     */
    public function getTheme($name);
    
    /**
     * Determines if a theme should be shown in the user interface.
     *
     * To be shown in the UI the theme has to be installed. If the theme is hidden
     * it will not be shown unless it is the default or admin theme.
     *
     * @param string $name
     *   The name of the theme to check.
     *
     * @return bool
     *   TRUE if the theme should be shown in the UI, FALSE if not.
     */
    public function hasUi($name);

}

Interfaces

Title Deprecated Summary
ThemeHandlerInterface Manages the list of available themes.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.