Re: [Cppcms-users] Navigation template - Set "active" on corresponding entry
Brought to you by:
artyom-beilis
|
From: <jo...@em...> - 2020-10-13 10:15:34
|
This works very well. Thank you a lot!
Please keep up the good work with CppCMS. I know that I’m fairly late to the party but I really hope that this framework will continue to develop and live a long & healthy life!
Best regards,
~ Joel
From: Artyom Beilis <art...@gm...>
Sent: Tuesday, 13 October 2020 11:32
To: cpp...@li...
Subject: Re: [Cppcms-users] Navigation template - Set "active" on corresponding entry
I assume you have several templates derived from base one that provide different page_content
You can also short template home_class, news_class and include it from sidebar
<a <% include home_class() %> href='<% url "/" %>'>Home</a>
<a <% include news_class() %> href='<% url "/news" %>'>News</a>
<a <% include users_class() %> href='<% url "/users" %>'>Users</a>
Define these templates in master as empty
<% template home_class() %><% end template %>
<% template news_class() %><% end template %>
...
Now at the level of the implementation of Home template derived from master override the home class
<% template home_class() %>class="active" <% end template %>
It is little bit long but most generic and does not require from you to modify C++ code.
Artyom
On Mon, Oct 12, 2020 at 11:27 PM <jo...@em... <mailto:jo...@em...> > wrote:
Hi guys!
I started evaluating CppCMS for a project a few days ago. Right now I am trying to build a very simple user management back-end as a proof of concept.
I am implementing a simple portal using CppCMS. The master page has a simple sidebar for navigational purposes based on the W3C example (https://www.w3schools.com/howto/howto_css_sidebar_responsive.asp).
My master template looks like this (mainly the sidebar template is of interest):
<% c++ #include "data/content.hpp" %>
<% skin defskin %>
<% view master uses content::master %>
<% template title() %>
<%= title %>
<% end template %>
<% template page_content() %>
Override Me
<% end template %>
<% template sidebar() %>
<div class="sidebar">
<a class="active" href='<% url "/" %>'>Home</a>
<a href='<% url "/news" %>'>News</a>
<a href='<% url "/users" %>'>Users</a>
</div>
<% end template %>
<% template render() %>
<html>
<head>
<link rel="stylesheet" href="/css/style.css">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title><% include title() %></title>
</head>
<body>
<% include sidebar() %>
<div class="content">
<h1><% include title() %></h1>
<% include page_content() %>
</div>
</body>
</html>
<% end template %>
<% end view %>
<% end skin %>
What is the appropriate/recommended way of setting the class="active" attribute for the URL of the current view/page?
Is there a mechanism in the template engine that allows me to set the attribute on the appropriate menu item in the master template?
Note: I've posted this also on GitHub issues but by now I figured I might have more luck here.
Best regards,
~ Joel
_______________________________________________
Cppcms-users mailing list
Cpp...@li... <mailto:Cpp...@li...>
https://lists.sourceforge.net/lists/listinfo/cppcms-users
|