I think I may have found a way to use your custom navigation rendering to (albeit inelegantly) patch up the problem of level 3 and lower directory links if the permalink struture is %parent%/%slug% (the problem being from GetSimple itself, not this plugin of course).
For example, for this structured site:
Home
Menu 1
- Subdir 1-1
- - Subdir 1-1-1
- - Subdir 1-1-2
- - Subdir 1-1-3
- Menu 1-2
- Menu 1-3
Menu 2
Menu 3
The link for "Subdir 1-1-1" is "/subdir-1-1/subdir-1-1-1" instead of "menu-1/subdir-1-1/subdir-1-1-1". To fix this, with your custom rendering example (thanks again for providing this feature!), change
to
The code basically says "if the current item's parent is level X, include level X-1 in the url". The general solution for further levels is this:
I wanted to post it here first to see if you thought it was a valid solution, mvlcek. If it is then I'll make a tutorial out of it to better explain its use and hopefully tidy up the code a bit more.
For example, for this structured site:
Home
Menu 1
- Subdir 1-1
- - Subdir 1-1-1
- - Subdir 1-1-2
- - Subdir 1-1-3
- Menu 1-2
- Menu 1-3
Menu 2
Menu 3
The link for "Subdir 1-1-1" is "/subdir-1-1/subdir-1-1-1" instead of "menu-1/subdir-1-1/subdir-1-1-1". To fix this, with your custom rendering example (thanks again for providing this feature!), change
Code:
<?php echo htmlspecialchars($item->link); ?>
to
Code:
<?php
if($item->parent=='subdir-1-1') $subDir = 'menu-1/';
else $subDir = '';
// this displays the link in its entirety
if($item->parent!=='') {
get_site_url(); echo $subDir; echo htmlspecialchars($item->parent); echo '/'; echo htmlspecialchars($item->slug); echo '/'; }
else { get_site_url(); echo htmlspecialchars($item->slug); }
?>
The code basically says "if the current item's parent is level X, include level X-1 in the url". The general solution for further levels is this:
Code:
<?php
// level 3 links - change lv2-# and lv1-# to the slugs of your respective levels
if($item->parent=='lv2-1') $subDir = 'lv1-1/';
elseif($item->parent=='lv2-1') $subDir = 'lv1-2/';
// level 4 links
elseif ($item->parent=='lv3-1') $subDir = 'lv1-1/lv2-1/';
elseif ($item->parent=='lv3-2') $subDir = 'lv1-2/lv2-2/';
// end of levels - add your extra levels as according with the given examples
else $subDir = '';
// don't alter this - it echos the link in its entirety
if($item->parent!=='') {
get_site_url(); echo $subDir; echo htmlspecialchars($item->parent); echo '/'; echo htmlspecialchars($item->slug); echo '/'; }
else { get_site_url(); echo htmlspecialchars($item->slug); }
?>
I wanted to post it here first to see if you thought it was a valid solution, mvlcek. If it is then I'll make a tutorial out of it to better explain its use and hopefully tidy up the code a bit more.