/** * Provide a full array of possible theme functions to try for a given hook. * * @param string $hook * The hook to use. This is the base theme/template name. * * @return array * An array of theme hook suggestions. */ public function buildThemeFunctions($hook) { $themes = array(); $display = isset($this->display_handler) ? $this->display_handler->display : NULL; $id = $this->storage->id(); if ($display) { $themes[] = $hook . '__' . $id . '__' . $display['id']; $themes[] = $hook . '__' . $display['id']; // Add theme suggestions for each single tag. foreach (Tags::explode($this->storage->get('tag')) as $tag) { $themes[] = $hook . '__' . preg_replace('/[^a-z0-9]/', '_', strtolower($tag)); } if ($display['id'] != $display['display_plugin']) { $themes[] = $hook . '__' . $id . '__' . $display['display_plugin']; $themes[] = $hook . '__' . $display['display_plugin']; } } $themes[] = $hook . '__' . $id; $themes[] = $hook; return $themes; }
/** * @param \Drupal\views\Entity\View $view * @return array */ protected function viewDisplayList(View $view) { $displayManager = $this->getViewDisplayManager(); $displays = array(); foreach ($view->get('display') as $display) { $definition = $displayManager->getDefinition($display['display_plugin']); if (!empty($definition['admin'])) { // Cast the admin label to a string since it is an object. $displays[$definition['id']]['name'] = (string) $definition['admin']; $displays[$definition['id']]['description'] = (string) $definition['help']; } } asort($displays); return $displays; }