Skip to main content
2 of 8
edited body
leymannx
  • 18.8k
  • 6
  • 72
  • 126

I always follow Symfony standards when it comes to helper functions. I normally have one module for developer-central stuff where I add a class under src/Utils for that and then call it everywhere I need it. Also in *.module or *.theme files.

web/modules/custom/my_system/src/Utils/MyHelperFunctions.php

namespace Drupal\my_system\Utils;

/**
 * Class MyHelperFunctions.
 */
class MyHelperFunctions {

  /**
   * Get current multi-site directory name.
   *
   * @return string
   *   The basename of the matching multi-site directory.
   */
  public static function getMultiSiteAlias() {

    $site_path = \Drupal::service('site.path');
    $site      = explode('/', $site_path);

    return $site[1];
  }

}

web/modules/themes/custom/my_theme/my_theme.theme:

use Drupal\my_system\Utils\MyHelperFunctions;

/**
 * Implements template_preprocess_html().
 */
function my_theme_preprocess_html(&$variables) {

  // Add multi-site body class.
  $site = MyHelperFunctions::getMultiSiteAlias();

  $variables['attributes']['class'][] = 'site-' . $site;
}
leymannx
  • 18.8k
  • 6
  • 72
  • 126