Re: [Cppcms-users] Navigation template - Set "active" on corresponding entry
Brought to you by:
artyom-beilis
|
From: Artyom B. <art...@gm...> - 2020-10-13 09:43:19
|
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...> 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...
> https://lists.sourceforge.net/lists/listinfo/cppcms-users
>
|