Incredibly Easy Menus

One of the biggest downsides of any complex FileMaker solution is the growing number of layouts and layout elements you'll have to manage. If your number of navigation (or general menu) items is both static and large, then you're going to have issues with keeping the solution well updated. Aside from this, you could have additional complexity when it comes to controlling which menu items show under certain circumstances.

While there are number of ways to make menu management easier, the best solution for most any code is to maintain it within a singular location. Allowing that code, and singular layouts, to serve your whole solution, and be flexible enough to vary when necessary, is ideal. This is exactly what this video and technique file are all about. Not only is this solution one of the most easy-to-manage solutions for a menu system, but, it's also one of the most incredibly easy menu systems I've ever created. Once you see the simplicity of management it's hard to think of going back to anything more complex.

Here's a hint about how it works. If you've used and love the flexibility of managing script steps within a script, then you'll fall in love with using Incredibly Easy Menus!

AttachmentSize
IncrediblyEasyMenus.zip1.79 MB

Comments

This is a great concept and implementation, Matt!
The cf/JSON/VL build process makes menu-building SO flexible.
I can't wait to see "Part 2", when you show how the "arrows" and expanded menu works.
Thank you!

Vyking Gold

I'm planning on adding a bill of materials feature to my FM ERP app. Do you think adding a quantity element would make this suitable for a multilevel BoM?

The implementation is essentially adaptable to any variable number of items to show within a portal. You could certainly use it for this purpose. You can also store as much ancillary info as needed in the JSON.

-- Matt Petrowsky - ISO FileMaker Magazine Editor

Matt, this looks really helpful and easy to add to any solution. Would you say that the portability of this gives it an advantage? What is the benefit of this over using a table for the menu with fields for name, script ID etc and then group using sub summary parts? In a table I could still perform different finds to get a custom menu and use different sorts and sub summary parts?

You can certainly use a table to drive the input for the menu items. While I typically use/manage most everything directly within the script, if you need user facing control of menu items (like an admin being able to change menu items for end users) then using a table is absolutely the way to go.

You could adapt the script easily to pick up the items from the table. You' will have the added complexity of managing the alpha order within the table - but, that's easily done as well.

-- Matt Petrowsky - ISO FileMaker Magazine Editor

This is amazing video. Can you share instructions on Showing Script IDs in FileMaker Script Workspace using MBS. I have the plugin installed and it doesn't automatically show ID. Thanks .

Abdul Ali

I welcome any input, as I am certain this menu will prove vital in my very complex database.
However, I seem to be missing something, or I might be making a simple error.
I cannot reproduce the sample menu in my own solution. I have duplicated, copied, and imported everything, and have spent three days trying to find the missing piece (s), but I simply cannot get any of the menu items to show.
any guidance would be appreciated,

Thanks in advance

fpreidel

Great video!!! Thanks Matt. Will this menu system work in Web Direct?

Anxious to see Part 2. It has been a year now - are you still going to add this? I would like to see icons added to the menu items as well as the expand/collapse triangle to display submenus.

Also, I have followed all the instructions and the card layout with the container menu object is not displaying the menu.

Inside the Render Menu script, after the line "Set Field By Name ( $limiteField ; ValueCount ( JSONListKeys ( MenuData ; "" ) ) + 1) the error message "(103) Relationship is missing" is returned. which appears to be the problem. How do I fix this?