How do I make the same variable available to all my theme files?Variable available everywhere in template?How to make the pdf files downloadable?How do I use a preprocess function for a node template?How do I pass a theme variable from a template to another?How do i get the all the regions available in the current theme programatically?Pass variables from one preprocess function to another in .themeHow do I integrate the Color module in my theme?Make variable available in template filePass data to hook_preprocess_html from custom moduleCustom theme: variable not made available in menu template

Why is lying to Congress a crime?

Short story about aliens who tried using the common cold as a weapon

SSH from a shared workplace computer

Delete line if next line is the same

Does wall of stone need support or not?

Can you take Bowwow out after returning him to MeowMeow?

First aid scissors confiscated by Dubai airport security

Fill a bowl with alphabet soup

Count number of different name in a file

Employer says he needs to delay payment by 3 months due to bureaucracy

5v home network

A Grandma Riddle

Is it plausible that an interrupted Windows update can cause the motherboard to fail?

How is the corresponding author on a (math) paper typically chosen?

Why is coffee provided during big chess events when it contains a banned substance?

Can you decide not to sneak into a room after seeing your roll?

Giving a character trauma but not "diagnosing" her?

Why is it so hard to land on the Moon?

"Dear Stack Exchange, I am very disappointed in you" - How to construct a strong opening line in a letter?

Did Feynman cite a fallacy about only circles having the same width in all directions as a reason for the Challenger disaster?

Novel set in the future, children cannot change the class they are born into, one class is made uneducated by associating books with pain

How can AnyDVD destroy a DVD drive?

Proofreading a novel: is it okay to use a question mark with an exclamation mark - "?!"

Print the sequence



How do I make the same variable available to all my theme files?


Variable available everywhere in template?How to make the pdf files downloadable?How do I use a preprocess function for a node template?How do I pass a theme variable from a template to another?How do i get the all the regions available in the current theme programatically?Pass variables from one preprocess function to another in .themeHow do I integrate the Color module in my theme?Make variable available in template filePass data to hook_preprocess_html from custom moduleCustom theme: variable not made available in menu template






.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty
margin-bottom:0;









3

















In mytheme.theme I have the following:



function mytheme_preprocess(&$variables) 
$current_path = Drupal::service('path.current')->getPath();
$result = Drupal::service('path.alias_manager')->getAliasByPath($current_path);
$variables['currenttab'] = explode('/', $result)[1];



This function is extracting the first dirname from my url, for example, httttp://server/dirname/pagename it sets currenttab to 'dirname'.



It is working reasonably well, but I notice that if I click around on my site in a specific way, occasionally I get a page where the sidebar template has the correct currenttab but the navbar has the currenttab value from an older page.



I thought this theme preprocess would make currenttab be the same in all my theme templates, but that does not appear to be the case. Once this problem appears, I can reload the page many times and it persists. I think this is related to the order in which I change urls.



What is going on here?










share|improve this question


































    3

















    In mytheme.theme I have the following:



    function mytheme_preprocess(&$variables) 
    $current_path = Drupal::service('path.current')->getPath();
    $result = Drupal::service('path.alias_manager')->getAliasByPath($current_path);
    $variables['currenttab'] = explode('/', $result)[1];



    This function is extracting the first dirname from my url, for example, httttp://server/dirname/pagename it sets currenttab to 'dirname'.



    It is working reasonably well, but I notice that if I click around on my site in a specific way, occasionally I get a page where the sidebar template has the correct currenttab but the navbar has the currenttab value from an older page.



    I thought this theme preprocess would make currenttab be the same in all my theme templates, but that does not appear to be the case. Once this problem appears, I can reload the page many times and it persists. I think this is related to the order in which I change urls.



    What is going on here?










    share|improve this question






























      3












      3








      3


      2






      In mytheme.theme I have the following:



      function mytheme_preprocess(&$variables) 
      $current_path = Drupal::service('path.current')->getPath();
      $result = Drupal::service('path.alias_manager')->getAliasByPath($current_path);
      $variables['currenttab'] = explode('/', $result)[1];



      This function is extracting the first dirname from my url, for example, httttp://server/dirname/pagename it sets currenttab to 'dirname'.



      It is working reasonably well, but I notice that if I click around on my site in a specific way, occasionally I get a page where the sidebar template has the correct currenttab but the navbar has the currenttab value from an older page.



      I thought this theme preprocess would make currenttab be the same in all my theme templates, but that does not appear to be the case. Once this problem appears, I can reload the page many times and it persists. I think this is related to the order in which I change urls.



      What is going on here?










      share|improve this question
















      In mytheme.theme I have the following:



      function mytheme_preprocess(&$variables) 
      $current_path = Drupal::service('path.current')->getPath();
      $result = Drupal::service('path.alias_manager')->getAliasByPath($current_path);
      $variables['currenttab'] = explode('/', $result)[1];



      This function is extracting the first dirname from my url, for example, httttp://server/dirname/pagename it sets currenttab to 'dirname'.



      It is working reasonably well, but I notice that if I click around on my site in a specific way, occasionally I get a page where the sidebar template has the correct currenttab but the navbar has the currenttab value from an older page.



      I thought this theme preprocess would make currenttab be the same in all my theme templates, but that does not appear to be the case. Once this problem appears, I can reload the page many times and it persists. I think this is related to the order in which I change urls.



      What is going on here?







      theming






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question



      share|improve this question








      edited 11 hours ago







      Innovine

















      asked 11 hours ago









      InnovineInnovine

      1226 bronze badges




      1226 bronze badges























          1 Answer
          1






          active

          oldest

          votes


















          5


















          You would have to add a cache context:



          $variables['#cache']['contexts'][] = 'url.path';


          Now you cache for each relative path a different version of the template.



          However, it is not a good idea to add this context to all templates. Only add it to those templates you intend to use the variable, otherwise you fill up your cache with a lot of useless variations:



          function mytheme_preprocess(&$variables, $hook) 
          if (in_array($hook, ['foo', 'bar']))
          $variables['#cache']['contexts'][] = 'url.path';
          // add variables depending on the relative url







          share|improve this answer




























          • I added this to my single preprocess function and it looks like it solves it, much thanks!! When you say "add it to those templates you intend to use.." do you mean I should have a preprocess hook for that template, and not have the cache in the most general preprocess function?

            – Innovine
            11 hours ago












          • You can still use the generic preprocess hook, but check $hook for the templates you want to target. See the code example I've added to the answer.

            – 4k4
            10 hours ago












          • I'm digging into it now, thanks again!

            – Innovine
            10 hours ago












          Your Answer








          StackExchange.ready(function()
          var channelOptions =
          tags: "".split(" "),
          id: "220"
          ;
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function()
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled)
          StackExchange.using("snippets", function()
          createEditor();
          );

          else
          createEditor();

          );

          function createEditor()
          StackExchange.prepareEditor(
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: false,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: null,
          bindNavPrevention: true,
          postfix: "",
          imageUploader:
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/4.0/"u003ecc by-sa 4.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          ,
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          );



          );














          draft saved

          draft discarded
















          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fdrupal.stackexchange.com%2fquestions%2f287038%2fhow-do-i-make-the-same-variable-available-to-all-my-theme-files%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown


























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          5


















          You would have to add a cache context:



          $variables['#cache']['contexts'][] = 'url.path';


          Now you cache for each relative path a different version of the template.



          However, it is not a good idea to add this context to all templates. Only add it to those templates you intend to use the variable, otherwise you fill up your cache with a lot of useless variations:



          function mytheme_preprocess(&$variables, $hook) 
          if (in_array($hook, ['foo', 'bar']))
          $variables['#cache']['contexts'][] = 'url.path';
          // add variables depending on the relative url







          share|improve this answer




























          • I added this to my single preprocess function and it looks like it solves it, much thanks!! When you say "add it to those templates you intend to use.." do you mean I should have a preprocess hook for that template, and not have the cache in the most general preprocess function?

            – Innovine
            11 hours ago












          • You can still use the generic preprocess hook, but check $hook for the templates you want to target. See the code example I've added to the answer.

            – 4k4
            10 hours ago












          • I'm digging into it now, thanks again!

            – Innovine
            10 hours ago















          5


















          You would have to add a cache context:



          $variables['#cache']['contexts'][] = 'url.path';


          Now you cache for each relative path a different version of the template.



          However, it is not a good idea to add this context to all templates. Only add it to those templates you intend to use the variable, otherwise you fill up your cache with a lot of useless variations:



          function mytheme_preprocess(&$variables, $hook) 
          if (in_array($hook, ['foo', 'bar']))
          $variables['#cache']['contexts'][] = 'url.path';
          // add variables depending on the relative url







          share|improve this answer




























          • I added this to my single preprocess function and it looks like it solves it, much thanks!! When you say "add it to those templates you intend to use.." do you mean I should have a preprocess hook for that template, and not have the cache in the most general preprocess function?

            – Innovine
            11 hours ago












          • You can still use the generic preprocess hook, but check $hook for the templates you want to target. See the code example I've added to the answer.

            – 4k4
            10 hours ago












          • I'm digging into it now, thanks again!

            – Innovine
            10 hours ago













          5














          5










          5









          You would have to add a cache context:



          $variables['#cache']['contexts'][] = 'url.path';


          Now you cache for each relative path a different version of the template.



          However, it is not a good idea to add this context to all templates. Only add it to those templates you intend to use the variable, otherwise you fill up your cache with a lot of useless variations:



          function mytheme_preprocess(&$variables, $hook) 
          if (in_array($hook, ['foo', 'bar']))
          $variables['#cache']['contexts'][] = 'url.path';
          // add variables depending on the relative url







          share|improve this answer
















          You would have to add a cache context:



          $variables['#cache']['contexts'][] = 'url.path';


          Now you cache for each relative path a different version of the template.



          However, it is not a good idea to add this context to all templates. Only add it to those templates you intend to use the variable, otherwise you fill up your cache with a lot of useless variations:



          function mytheme_preprocess(&$variables, $hook) 
          if (in_array($hook, ['foo', 'bar']))
          $variables['#cache']['contexts'][] = 'url.path';
          // add variables depending on the relative url








          share|improve this answer















          share|improve this answer




          share|improve this answer



          share|improve this answer








          edited 10 hours ago

























          answered 11 hours ago









          4k44k4

          59k5 gold badges74 silver badges120 bronze badges




          59k5 gold badges74 silver badges120 bronze badges















          • I added this to my single preprocess function and it looks like it solves it, much thanks!! When you say "add it to those templates you intend to use.." do you mean I should have a preprocess hook for that template, and not have the cache in the most general preprocess function?

            – Innovine
            11 hours ago












          • You can still use the generic preprocess hook, but check $hook for the templates you want to target. See the code example I've added to the answer.

            – 4k4
            10 hours ago












          • I'm digging into it now, thanks again!

            – Innovine
            10 hours ago

















          • I added this to my single preprocess function and it looks like it solves it, much thanks!! When you say "add it to those templates you intend to use.." do you mean I should have a preprocess hook for that template, and not have the cache in the most general preprocess function?

            – Innovine
            11 hours ago












          • You can still use the generic preprocess hook, but check $hook for the templates you want to target. See the code example I've added to the answer.

            – 4k4
            10 hours ago












          • I'm digging into it now, thanks again!

            – Innovine
            10 hours ago
















          I added this to my single preprocess function and it looks like it solves it, much thanks!! When you say "add it to those templates you intend to use.." do you mean I should have a preprocess hook for that template, and not have the cache in the most general preprocess function?

          – Innovine
          11 hours ago






          I added this to my single preprocess function and it looks like it solves it, much thanks!! When you say "add it to those templates you intend to use.." do you mean I should have a preprocess hook for that template, and not have the cache in the most general preprocess function?

          – Innovine
          11 hours ago














          You can still use the generic preprocess hook, but check $hook for the templates you want to target. See the code example I've added to the answer.

          – 4k4
          10 hours ago






          You can still use the generic preprocess hook, but check $hook for the templates you want to target. See the code example I've added to the answer.

          – 4k4
          10 hours ago














          I'm digging into it now, thanks again!

          – Innovine
          10 hours ago





          I'm digging into it now, thanks again!

          – Innovine
          10 hours ago


















          draft saved

          draft discarded















































          Thanks for contributing an answer to Drupal Answers!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid


          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.

          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fdrupal.stackexchange.com%2fquestions%2f287038%2fhow-do-i-make-the-same-variable-available-to-all-my-theme-files%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown









          Popular posts from this blog

          Invision Community Contents History See also References External links Navigation menuProprietaryinvisioncommunity.comIPS Community ForumsIPS Community Forumsthis blog entry"License Changes, IP.Board 3.4, and the Future""Interview -- Matt Mecham of Ibforums""CEO Invision Power Board, Matt Mecham Is a Liar, Thief!"IPB License Explanation 1.3, 1.3.1, 2.0, and 2.1ArchivedSecurity Fixes, Updates And Enhancements For IPB 1.3.1Archived"New Demo Accounts - Invision Power Services"the original"New Default Skin"the original"Invision Power Board 3.0.0 and Applications Released"the original"Archived copy"the original"Perpetual licenses being done away with""Release Notes - Invision Power Services""Introducing: IPS Community Suite 4!"Invision Community Release Notes

          Canceling a color specificationRandomly assigning color to Graphics3D objects?Default color for Filling in Mathematica 9Coloring specific elements of sets with a prime modified order in an array plotHow to pick a color differing significantly from the colors already in a given color list?Detection of the text colorColor numbers based on their valueCan color schemes for use with ColorData include opacity specification?My dynamic color schemes

          Tom Holland Mục lục Đầu đời và giáo dục | Sự nghiệp | Cuộc sống cá nhân | Phim tham gia | Giải thưởng và đề cử | Chú thích | Liên kết ngoài | Trình đơn chuyển hướngProfile“Person Details for Thomas Stanley Holland, "England and Wales Birth Registration Index, 1837-2008" — FamilySearch.org”"Meet Tom Holland... the 16-year-old star of The Impossible""Schoolboy actor Tom Holland finds himself in Oscar contention for role in tsunami drama"“Naomi Watts on the Prince William and Harry's reaction to her film about the late Princess Diana”lưu trữ"Holland and Pflueger Are West End's Two New 'Billy Elliots'""I'm so envious of my son, the movie star! British writer Dominic Holland's spent 20 years trying to crack Hollywood - but he's been beaten to it by a very unlikely rival"“Richard and Margaret Povey of Jersey, Channel Islands, UK: Information about Thomas Stanley Holland”"Tom Holland to play Billy Elliot""New Billy Elliot leaving the garage"Billy Elliot the Musical - Tom Holland - Billy"A Tale of four Billys: Tom Holland""The Feel Good Factor""Thames Christian College schoolboys join Myleene Klass for The Feelgood Factor""Government launches £600,000 arts bursaries pilot""BILLY's Chapman, Holland, Gardner & Jackson-Keen Visit Prime Minister""Elton John 'blown away' by Billy Elliot fifth birthday" (video with John's interview and fragments of Holland's performance)"First News interviews Arrietty's Tom Holland"“33rd Critics' Circle Film Awards winners”“National Board of Review Current Awards”Bản gốc"Ron Howard Whaling Tale 'In The Heart Of The Sea' Casts Tom Holland"“'Spider-Man' Finds Tom Holland to Star as New Web-Slinger”lưu trữ“Captain America: Civil War (2016)”“Film Review: ‘Captain America: Civil War’”lưu trữ“‘Captain America: Civil War’ review: Choose your own avenger”lưu trữ“The Lost City of Z reviews”“Sony Pictures and Marvel Studios Find Their 'Spider-Man' Star and Director”“‘Mary Magdalene’, ‘Current War’ & ‘Wind River’ Get 2017 Release Dates From Weinstein”“Lionsgate Unleashing Daisy Ridley & Tom Holland Starrer ‘Chaos Walking’ In Cannes”“PTA's 'Master' Leads Chicago Film Critics Nominations, UPDATED: Houston and Indiana Critics Nominations”“Nominaciones Goya 2013 Telecinco Cinema – ENG”“Jameson Empire Film Awards: Martin Freeman wins best actor for performance in The Hobbit”“34th Annual Young Artist Awards”Bản gốc“Teen Choice Awards 2016—Captain America: Civil War Leads Second Wave of Nominations”“BAFTA Film Award Nominations: ‘La La Land’ Leads Race”“Saturn Awards Nominations 2017: 'Rogue One,' 'Walking Dead' Lead”Tom HollandTom HollandTom HollandTom Hollandmedia.gettyimages.comWorldCat Identities300279794no20130442900000 0004 0355 42791085670554170004732cb16706349t(data)XX5557367