Best way to create a persistent navigation across layouts

I have a solution with about 15 different layouts. I have staff info, student info, course info, etc, and I'd like them all to have EXACTLY the same heading, and I periodically change that heading. The heading includes a logo (pinned to the top left), a search bar, some buttons, a little Icon with their initials showing who's logged in, etc.

Right now when I make a change I make it on my "home" screen, and then select everything in the top and manually go to the next layout, delete the old top nav, paste in the new one, move it to the top corner, and then repeat 14 more times.

Is there some way to create an object group that is "cloned" or "repeated" or whatever across a dozen or more layouts? Like a header bar? Or a way to create a "header" layout and just "embed" it in 15 other layouts? or something?

1 Like

FM doesn't support sub-forms unfortunately but the closest you can get is a card window that acts like a menu. Do a quick google on "filemaker hamburger menu" for some examples.
It was included in the templates that Claris had a few years ago plus you should find at least one blog post about it.

The other way you could do this is with a web viewer, so that you control the HTML/CSS from one central place + JS for the buttons to call the proper FM script I'm not a big fan of this approach because over the overhead with the web viewer refreshes.

You can build a dynamic navigation bar. There are actually numerous ways to do this including this one.

I've seen many other implementations that stash the navigation data in json or records etc...

I do hope that we get sub-forms at some point so we can create reusable layout parts.

Regarding creating a dynamic navigation system, KISS. You can easily go crazy (I have done it and I have the example file to prove it!). If you find you're spending more time maintaining/coding your nav framework than copying objects between layouts, then the implementation has failed!

1 Like

Thanks.. helpful. it only takes me 15m every time I do it (4x a year)... and then another 15m to go back later and remove "tabs" because when I copy it back it in adds tab to the search field which I really don't want.. so probably not worth a lot of time to make something clunky. Thanks.

You can create an extra layout (the 16th) just for navigation purpose, to store all the links to each layout and the layout size can be like a horizontal bar, then put a button on each of your 15 layouts. This button is to go to that 16th layout using new card window. Whenever you need to change anything on the navigation bar, you just change it on the 16th layout.

I'd like the menu to always be exposed, but I imagine the same logic applies and just have the card appear "on layout load" or something.

Actually showing a card "on layout load" might not work how you want because card windows are modal, i.e. they prevent you from clicking on the parent window, which in this case would make the layout feel "frozen"

Thanks for the heads up... that would have wasted a bit of time.

As mentioned, keeping the common navigation toolbar in a separate layout is helpful. For example, I keep it in ui_layoutDev. But the big win for me was to then group the entire nav bar together. Once I 'copy' that in ui_layoutDev, I go to each of my layouts, click on the existing (grouped) nav toolbar, hit 'delete' quickly followed by 'paste', and voila!, super quick replacement, down to about 7-10 seconds per layout. Still sucks! Just sucks less.


Another method would be a Hamburger Menu that shows a card window. Then you only have to maintain one single layout. I tried this once as a proof of concept and used a simple list layout as a menu that showed only certain menu items depending from the user privileges
The downside is that the user must click twice, once to open the menu and once to click the menu item. That was a deal breaker for me. So I sticked to your method, combined with a (pretty complicated while multi language) dynamic navigation bar.

The hamburger menu and card window is what we’ve settled on and is working very well for us.

1 Like

Wow, this thread from last year blew up again.

I've just stuck with copy-pasting it everywhere. It takes a little time, but since my team uses the navigation a bit it's a no-brainer. Even if it takes me 10-15 minutes 1-3 times a year that's 30-45 minutes a year.

With 20 staff members spending 2 second longer 20 times a day that's 3.5 hours a year of needless time for them. Most of them just go to a layout, but all the buttons have scripts (even if it just says "go to layout") so I can change the functionality of the buttons any time without editing the screens.