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

          Ласкавець круглолистий Зміст Опис | Поширення | Галерея | Примітки | Посилання | Навігаційне меню58171138361-22960890446Bupleurum rotundifoliumEuro+Med PlantbasePlants of the World Online — Kew ScienceGermplasm Resources Information Network (GRIN)Ласкавецькн. VI : Літери Ком — Левиправивши або дописавши її