get('slogan')); // array_push($head_title, [ // 'name' => $site_config->get('name'), // ]); // $vars['head_title'] = $head_title; // $title = "The new title"; // $request = \Drupal::request(); // if ($route = $request->attributes->get(\Symfony\Cmf\Component\Routing\RouteObjectInterface::ROUTE_OBJECT)) { // $route->setDefault('_title', $title); // } global $base_url; $theme = \Drupal::theme()->getActiveTheme(); $vars['#attached']['drupalSettings']['path']['themePath'] = $base_url .'/'. $theme->getPath(); $description = [ '#tag' => 'meta', '#attributes' => [ 'name' => 'description', 'content' => $site_config->get('slogan'), ], ]; $vars['page']['#attached']['html_head'][] = [$description, 'description']; $viewport = array( '#tag' => 'meta', '#attributes' => array( 'name' => 'viewport', 'content' => 'width=device-width, initial-scale=1, maximum-scale=1', ), ); $vars['page']['#attached']['html_head'][] = [$viewport, 'viewport']; // drupal_add_html_head($viewport, 'viewport'); // https://stackoverflow.com/a/48700852 // $content_security_policy = array( '#tag' => 'meta', '#attributes' => array( 'http-equiv' => 'Content-Security-Policy', 'content' => 'upgrade-insecure-requests', ), ); $vars['page']['#attached']['html_head'][] = [$content_security_policy, 'content_security_policy']; // $gv = [ // '#tag' => 'meta', // '#attributes' => [ // 'name' => 'google-site-verification', // 'content' => "Y6PSbMfj67bXtMRAT-mFTAxrIeZPzC5jWSpH3M7yhkk", // ], // ]; // $vars['page']['#attached']['html_head'][] = [$gv, "google-site-verification"]; // $ati = array( '#tag' => 'meta', '#attributes' => array( 'rel' => 'apple-touch-icon', 'sizes' => "180x180", 'href' => '/apple-touch-icon.png', ), ); $vars['page']['#attached']['html_head'][] = [$ati, 'ati']; // $icon32 = array( '#tag' => 'meta', '#attributes' => array( 'rel' => 'icon', 'type' => "image/png", 'sizes' => "32x32", 'href' => '/favicon-32x32.png', ), ); $vars['page']['#attached']['html_head'][] = [$icon32, 'icon32']; // $icon16 = array( '#tag' => 'meta', '#attributes' => array( 'rel' => 'icon', 'type' => "image/png", 'sizes' => "16x16", 'href' => '/favicon-16x16.png', ), ); $vars['page']['#attached']['html_head'][] = [$icon16, 'icon16']; // // $safaripinnedtab = array( '#tag' => 'meta', '#attributes' => array( 'rel' => 'mask-icon', 'href' => '/safari-pinned-tab.svg', 'color' => "#69ccce", ), ); $vars['page']['#attached']['html_head'][] = [$safaripinnedtab, '$safaripinnedtab']; // $ms = array( '#tag' => 'meta', '#attributes' => array( 'name' => 'msapplication-TileColor', 'content' => "#69ccce" ), ); $vars['page']['#attached']['html_head'][] = [$ms, '$ms']; // $tc = array( '#tag' => 'meta', '#attributes' => array( 'name' => 'theme-color', 'content' => "#69ccce" ), ); $vars['page']['#attached']['html_head'][] = [$tc, '$tc']; // $pragma = array( '#tag' => 'meta', '#attributes' => array( 'http-equiv' => 'pragma', 'content' => "no-cache" ), ); $vars['page']['#attached']['html_head'][] = [$pragma, '$pragma']; // $cachecontrol = array( '#tag' => 'meta', '#attributes' => array( 'http-equiv' => 'cache-control', 'content' => "no-cache, no-store, must-revalidate" ), ); $vars['page']['#attached']['html_head'][] = [$cachecontrol, '$cachecontrol']; } function materiotheme_preprocess_page(&$vars){ // dsm($vars, 'vars'); } // function materiotheme_preprocess_node(&$vars){ // $node = $vars['elements']['#node']; // $options = ['absolute' => TRUE]; // $url = Url::fromRoute('entity.node.canonical', ['node' => $node->id()], $options); // $system_path = $url->getInternalPath(); // $vars['link_attributes'] = new Attribute(array( // 'data-drupal-link-system-path' => $system_path=='' ? '' : $system_path // )); // } // function materiotheme_preprocess_node_materiau_teaser(&$vars){ // $vars['attributes']['class'] = 'card'; // kint($vars['attributes']); // } /** * Implements THEME_preprocess_page_title() */ function materiotheme_preprocess_page_title(&$variables) { $current_url = \Drupal\Core\Url::fromRoute(''); $url = $current_url->getInternalPath(); if(preg_match('/^user\/\d+\/*/', $url)) { $userCurrent = \Drupal::currentUser(); $user = \Drupal\user\Entity\User::load($userCurrent->id()); $email = $user->getEmail(); $variables['title'] = $email; } } /** * Implements hook_form_alter */ function materiotheme_form_alter(&$form, FormStateInterface $form_state, $form_id) { // commerce_order_item_variation_cart_form_form_commerce_product_variation_3 preg_match('/commerce_order_item_variation_cart_form_form_commerce_product_variation_(\d+)/', $form_id, $matches); if ($matches && isset($matches[1]) && $variation_id = $matches[1]) { // if (isset($form['#entity_type']) && $form['#entity_type'] == "commerce_order_item") { // $product = $form_state->storage['product']; // $storage = &$form_state->getStorage(); // $product = $storage['product']; // $variations = $product->fields['variations']; $form['actions']['submit']['#attributes'] += array( "@click.prevent.stop" => "checkaddtocart(\$event, $variation_id)" ); } // change "add to cart" button text switch ($form_id) { case 'commerce_order_item_variation_cart_form_form_commerce_product_variation_3': $form['actions']['submit']['#value'] = t('Yeees!'); break; case 'commerce_order_item_variation_cart_form_form_commerce_product_variation_4': $form['actions']['submit']['#value'] = t('Yay!'); break; case 'commerce_order_item_variation_cart_form_form_commerce_product_variation_5': $form['actions']['submit']['#value'] = t('Great!'); break; case 'commerce_order_item_variation_cart_form_form_commerce_product_variation_6': $form['actions']['submit']['#value'] = t('OKAY!'); break; } } /** * Implements hook_form_alter */ function materiotheme_form_user_login_form_alter(&$form, FormStateInterface $form_state, $form_id) { // dpm($form_id, 'form_id'); // dpm($form, 'form'); $form['name']['#attributes']['placeholder'] = (string) $form['name']['#title']; unset($form['name']['#title']); $form['pass']['#attributes']['placeholder'] = (string) $form['pass']['#title']; unset($form['pass']['#title']); } /** * Implements hook_theme_suggestions_HOOK_alter(). */ /** * Prepares variables for image formatter templates. * * Default template: image-formatter.html.twig. * * @param array $variables * An associative array containing: * - item: An ImageItem object. * - item_attributes: An optional associative array of html attributes to be * placed in the img tag. * - image_style: An optional image style. * - url: An optional \Drupal\Core\Url object. */ // function materiotheme_preprocess_image_formatter(&$vars){ // if (isset($vars['url'])) { // $system_path = $vars['url']->getInternalPath(); // $vars['link_attributes'] = new Attribute(array( // 'data-drupal-link-system-path' => $system_path=='' ? '' : $system_path, // 'class' => array('ajax-link') // )); // // dpm($vars); // } // } // function materiotheme_preprocess_links__language_block(&$vars){ // // dpm($vars); // // foreach ($vars['links'] as $lang_code => $link) { // // $vars['links'][$lang_code]['text'] = $lang_code; // // $vars['links'][$lang_code]['link']['#title'] = $lang_code; // // } // } function materiotheme_theme_suggestions_taxonomy_term_alter(&$suggestions, &$vars){ // ksm($suggestions); // ksm($vars); $original = $vars['theme_hook_original']; $bundle = $vars['elements']['#taxonomy_term']->bundle(); $viewmode = $vars['elements']["#view_mode"]; $suggestions[] = $original.'__'.$bundle.'__'.$viewmode; // dsm($suggestions); } function materiotheme_theme_suggestions_field_alter(&$suggestions, &$vars){ if($vars['element']["#entity_type"] === "commerce_product_variation" && $vars['element']["#bundle"] === "materio_product_variation_type" && $vars['element']["#field_name"] === "title"){ $test = 'test'; $original = $vars['theme_hook_original']; $entity_type = $vars['element']["#entity_type"]; $bundle = $vars['element']["#bundle"]; $field_name = $vars['element']["#field_name"]; $viewmode = $vars['element']['#view_mode']; $suggestions[] = $original.'__'.$entity_type.'__'.$bundle.'__'.$field_name.'__'.$viewmode; } } /** * Implements hook_theme_suggestions_HOOK_alter(). */ function materiotheme_theme_suggestions_image_alter(array &$suggestions, array $variables){ // $image = $variables['attributes']['class'][0]; $suggestions[] = 'image__'.$variables['style_name']; } /** * Prepares variables for product templates. * * Default template: commerce-product.html.twig. * * @param array $variables * An associative array containing: * - elements: An associative array containing rendered fields. * - attributes: HTML attributes for the containing element. */ function materiotheme_preprocess_commerce_product(array &$variables) { $test="test"; // remove the variation as we already display it via views if($variables['elements']['#view_mode'] === 'order_summary' || $variables['elements']['#view_mode'] === 'home_summary'){ unset($variables['product']['variation_title']); unset($variables['product']['variation_field_description']); unset($variables['product']['variation_price']); unset($variables['product']['variation_field_multiple']); unset($variables['product']['variation_commerce_variation_cart_form']); } $language = \Drupal::languageManager()->getCurrentLanguage()->getId(); $variables['language'] = $language; } /** * Implements hook_theme_suggestions_commerce_product_variation(). */ // function materiotheme_theme_suggestions_commerce_product_variation_later(&$suggestions, &$vars) { // $test = 'test'; // } function materiotheme_preprocess_printable(array &$variables) { $site_config = \Drupal::config('system.site'); $variables['site_name'] = $site_config->get('name'); $variables['slogan'] = $site_config->get('slogan'); } // TODO: instead of lazy load home images, make a html light home (without images), // replaced then by rich home vuejs // function materiotheme_preprocess_image(array &$variables) { // if ($variables['style_name'] === 'card_small_home') { // $variables['attributes']['data-src'] = $variables['attributes']['src']; // $variables['attributes']['src'] = '/themes/custom/materiotheme/assets/img/blank.gif'; // } // } function materiotheme_preprocess_field__node__field_a_database__frontpage(array &$variables) { if ($variables['logged_in']) { $variables['label_link'] = array( "href" => '/' . $variables['element']['#language'] . '/base' ); } } function materiotheme_preprocess_field__node__field_blabla__frontpage(array &$variables) { $variables['label_link'] = array( "href" => '/' . $variables['element']['#language'] . '/blabla' ); } function materiotheme_preprocess_field__node__field_showrooms__frontpage(array &$variables) { $variables['label_link'] = array( "href" => '/' . $variables['element']['#language'] . '/showrooms' ); }