How to add a theme preprocess function for published state?Add class based on published stateAdd class based on published stateHow to add Javascript in Head TagHow to add extra class in main menu?Field value not coming in template.php for published nodeHow to add twig code in View 'global custom text' field?Add state permissions and allow state changeshow to optimize setting theme suggestion for different languages?
Gas pipes - why does gas burn "outwards?"
Why was "leaping into the river" a valid trial outcome to prove one's innocence?
Writing a love interest for my hero
How seriously should I take a CBP interview where I was told I have a red flag and could only stay for 30 days?
Evidence that matrix multiplication cannot be done in O(n^2 poly(log(n))) time
How does Vivi differ from other Black Mages?
Long list of Hit and Get from sudo apt update
Is it possible to PIVOT on a LIKE statement
Job offer without any details but asking me to withdraw other applications - is it normal?
Can a magnet rip protons from a nucleus?
Why is the T-1000 humanoid?
How to work with a technician hired with a grant who argues everything
Why should I always enable compiler warnings?
Will replacing a fake visa with a different fake visa cause me problems when applying for a legal study permit?
If you have multiple situational racial save bonuses and are in a situation where they all apply do they stack?
Relevance of the Resurrection
Do Milankovitch Cycles fully explain climate change?
Creating a Master Image to roll out to 30 new Machines Licensing Issues
Insert str into larger str in the most pythonic way
What's the biggest organic molecule that could have a smell?
Why does F + F' = 1?
How do you build a Dominant 7th chord?
Do any aircraft carry boats?
Have there been any countries that voted themselves out of existence?
How to add a theme preprocess function for published state?
Add class based on published stateAdd class based on published stateHow to add Javascript in Head TagHow to add extra class in main menu?Field value not coming in template.php for published nodeHow to add twig code in View 'global custom text' field?Add state permissions and allow state changeshow to optimize setting theme suggestion for different languages?
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;
I want to create a body class for the published state of a node. I found some suggestions below for Drupal 7, but this code is not working for my Drupal 8 theme.
Add class based on published state
How can I acheive this?
8 theming entities
add a comment |
I want to create a body class for the published state of a node. I found some suggestions below for Drupal 7, but this code is not working for my Drupal 8 theme.
Add class based on published state
How can I acheive this?
8 theming entities
add a comment |
I want to create a body class for the published state of a node. I found some suggestions below for Drupal 7, but this code is not working for my Drupal 8 theme.
Add class based on published state
How can I acheive this?
8 theming entities
I want to create a body class for the published state of a node. I found some suggestions below for Drupal 7, but this code is not working for my Drupal 8 theme.
Add class based on published state
How can I acheive this?
8 theming entities
8 theming entities
edited 5 hours ago
Jdrupal
3,3234 gold badges9 silver badges33 bronze badges
3,3234 gold badges9 silver badges33 bronze badges
asked 10 hours ago
MrPaulDriverMrPaulDriver
5283 silver badges19 bronze badges
5283 silver badges19 bronze badges
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
You can fetch the node using routeMatch
and add the class like this:
function THEME_NAME_preprocess_html(&$variables)
$routeMatch = Drupal::routeMatch();
$node = $routeMatch->getParameter('node');
if (isset($node) && $routeMatch->getRouteName() == 'entity.node.canonical')
if ($node->isPublished())
$variables['attributes']['class'][] = 'class-name-published';
else
$variables['attributes']['class'][] = 'class-name-unpublished';
This only adds the body class if you're on the entity.node.canonical
route, to make sure that we always get a node object from the route parameter.
1
This is called on any route, so you might want to check either the route name or whether the route parameter is really a node object. There are routes in core which don't provide a node object by that parameter name.
– 4k4
9 hours ago
1
See for example drupal.org/project/bootstrap_mint/issues/2918947
– 4k4
9 hours ago
Thanks for the feedback. Added a check to see if we're on the correct route.
– Jdrupal
8 hours ago
add a comment |
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
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fdrupal.stackexchange.com%2fquestions%2f285223%2fhow-to-add-a-theme-preprocess-function-for-published-state%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
You can fetch the node using routeMatch
and add the class like this:
function THEME_NAME_preprocess_html(&$variables)
$routeMatch = Drupal::routeMatch();
$node = $routeMatch->getParameter('node');
if (isset($node) && $routeMatch->getRouteName() == 'entity.node.canonical')
if ($node->isPublished())
$variables['attributes']['class'][] = 'class-name-published';
else
$variables['attributes']['class'][] = 'class-name-unpublished';
This only adds the body class if you're on the entity.node.canonical
route, to make sure that we always get a node object from the route parameter.
1
This is called on any route, so you might want to check either the route name or whether the route parameter is really a node object. There are routes in core which don't provide a node object by that parameter name.
– 4k4
9 hours ago
1
See for example drupal.org/project/bootstrap_mint/issues/2918947
– 4k4
9 hours ago
Thanks for the feedback. Added a check to see if we're on the correct route.
– Jdrupal
8 hours ago
add a comment |
You can fetch the node using routeMatch
and add the class like this:
function THEME_NAME_preprocess_html(&$variables)
$routeMatch = Drupal::routeMatch();
$node = $routeMatch->getParameter('node');
if (isset($node) && $routeMatch->getRouteName() == 'entity.node.canonical')
if ($node->isPublished())
$variables['attributes']['class'][] = 'class-name-published';
else
$variables['attributes']['class'][] = 'class-name-unpublished';
This only adds the body class if you're on the entity.node.canonical
route, to make sure that we always get a node object from the route parameter.
1
This is called on any route, so you might want to check either the route name or whether the route parameter is really a node object. There are routes in core which don't provide a node object by that parameter name.
– 4k4
9 hours ago
1
See for example drupal.org/project/bootstrap_mint/issues/2918947
– 4k4
9 hours ago
Thanks for the feedback. Added a check to see if we're on the correct route.
– Jdrupal
8 hours ago
add a comment |
You can fetch the node using routeMatch
and add the class like this:
function THEME_NAME_preprocess_html(&$variables)
$routeMatch = Drupal::routeMatch();
$node = $routeMatch->getParameter('node');
if (isset($node) && $routeMatch->getRouteName() == 'entity.node.canonical')
if ($node->isPublished())
$variables['attributes']['class'][] = 'class-name-published';
else
$variables['attributes']['class'][] = 'class-name-unpublished';
This only adds the body class if you're on the entity.node.canonical
route, to make sure that we always get a node object from the route parameter.
You can fetch the node using routeMatch
and add the class like this:
function THEME_NAME_preprocess_html(&$variables)
$routeMatch = Drupal::routeMatch();
$node = $routeMatch->getParameter('node');
if (isset($node) && $routeMatch->getRouteName() == 'entity.node.canonical')
if ($node->isPublished())
$variables['attributes']['class'][] = 'class-name-published';
else
$variables['attributes']['class'][] = 'class-name-unpublished';
This only adds the body class if you're on the entity.node.canonical
route, to make sure that we always get a node object from the route parameter.
edited 6 hours ago
answered 9 hours ago
JdrupalJdrupal
3,3234 gold badges9 silver badges33 bronze badges
3,3234 gold badges9 silver badges33 bronze badges
1
This is called on any route, so you might want to check either the route name or whether the route parameter is really a node object. There are routes in core which don't provide a node object by that parameter name.
– 4k4
9 hours ago
1
See for example drupal.org/project/bootstrap_mint/issues/2918947
– 4k4
9 hours ago
Thanks for the feedback. Added a check to see if we're on the correct route.
– Jdrupal
8 hours ago
add a comment |
1
This is called on any route, so you might want to check either the route name or whether the route parameter is really a node object. There are routes in core which don't provide a node object by that parameter name.
– 4k4
9 hours ago
1
See for example drupal.org/project/bootstrap_mint/issues/2918947
– 4k4
9 hours ago
Thanks for the feedback. Added a check to see if we're on the correct route.
– Jdrupal
8 hours ago
1
1
This is called on any route, so you might want to check either the route name or whether the route parameter is really a node object. There are routes in core which don't provide a node object by that parameter name.
– 4k4
9 hours ago
This is called on any route, so you might want to check either the route name or whether the route parameter is really a node object. There are routes in core which don't provide a node object by that parameter name.
– 4k4
9 hours ago
1
1
See for example drupal.org/project/bootstrap_mint/issues/2918947
– 4k4
9 hours ago
See for example drupal.org/project/bootstrap_mint/issues/2918947
– 4k4
9 hours ago
Thanks for the feedback. Added a check to see if we're on the correct route.
– Jdrupal
8 hours ago
Thanks for the feedback. Added a check to see if we're on the correct route.
– Jdrupal
8 hours ago
add a comment |
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.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fdrupal.stackexchange.com%2fquestions%2f285223%2fhow-to-add-a-theme-preprocess-function-for-published-state%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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