kathrine: possibility to add custom menu categories

This commit is contained in:
slawkens
2025-07-19 07:48:01 +02:00
parent 2fe9924437
commit ec11c14024
5 changed files with 57 additions and 36 deletions

View File

@@ -1,12 +1,18 @@
<?php
$config['menu_default_links_color'] = '#ffffff';
$config['menu_categories'] = array(
MENU_CATEGORY_NEWS => array('id' => 'news', 'name' => 'Latest News'),
MENU_CATEGORY_ACCOUNT => array('id' => 'account', 'name' => 'Account'),
MENU_CATEGORY_COMMUNITY => array('id' => 'community', 'name' => 'Community'),
MENU_CATEGORY_LIBRARY => array('id' => 'library', 'name' => 'Library'),
MENU_CATEGORY_SHOP => array('id' => 'shops', 'name' => 'Shop')
);
// max 7 menus for kathrine
$config['menu_categories'] = [
MENU_CATEGORY_NEWS => ['id' => 'news', 'name' => 'Latest News'],
// you can add custom menu by uncommenting this
// after doing it, go to admin panel -> Menus and add your entries for this category
// tip: you can move it up/down to show it on specific position
//7 => array('id' => 'testing', 'name' => 'Test Menu 1'),
//8 => array('id' => 'testing2', 'name' => 'Test Menu 2'),
MENU_CATEGORY_ACCOUNT => ['id' => 'account', 'name' => 'Account'],
MENU_CATEGORY_COMMUNITY => ['id' => 'community', 'name' => 'Community'],
MENU_CATEGORY_LIBRARY => ['id' => 'library', 'name' => 'Library'],
MENU_CATEGORY_SHOP => ['id' => 'shops', 'name' => 'Shop']
];
$config['menus'] = require __DIR__ . '/menus.php';

View File

@@ -1,42 +1,40 @@
<?php
$menus = get_template_menus();
function get_template_pages($category) {
function get_template_pages($category): array
{
global $menus;
$ret = array();
foreach($menus[$category] as $menu) {
foreach($menus[$category] ?? [] as $menu) {
$ret[] = $menu['link'];
}
return $ret;
}
?>
var category = '<?php
if(strpos(URI, 'subtopic=') !== false) {
$tmp = array($_REQUEST['subtopic']);
let category = '<?php
if(str_contains(URI, 'subtopic=')) {
$tmp = [$_REQUEST['subtopic']];
}
else {
$tmp = URI;
if(empty($tmp)) {
$tmp = array('news');
$tmp = ['news'];
}
else {
$tmp = explode('/', URI);
}
}
if(in_array($tmp[0], get_template_pages(MENU_CATEGORY_NEWS)))
echo 'news';
elseif(in_array($tmp[0], get_template_pages(MENU_CATEGORY_LIBRARY)))
echo 'library';
elseif(in_array($tmp[0], get_template_pages(MENU_CATEGORY_COMMUNITY)))
echo 'community';
elseif(in_array($tmp[0], array_merge(get_template_pages(MENU_CATEGORY_ACCOUNT), array('account'))))
echo 'account';
elseif(in_array($tmp[0], get_template_pages(MENU_CATEGORY_SHOP)))
echo 'shops';
else {
echo 'news';
foreach (config('menu_categories') as $id => $info) {
$templatePages = get_template_pages($id);
if ($id == MENU_CATEGORY_ACCOUNT) {
$templatePages = array_merge($templatePages, ['account']);
}
if (in_array($tmp[0], $templatePages)) {
echo $info['id'];
break;
}
}
?>';

View File

@@ -1,10 +1,10 @@
var list = new Array();
{% set i = 0 %}
{% for cat in categories %}
{% if cat.id != 'shops' or setting('core.gifts_system') %}
{% for id, cat in config('menu_categories') %}
{% if (cat.id != 'shops' or setting('core.gifts_system')) and menus[id]|length > 0 %}
list[{{ i }}] = '{{ cat.id }}';
{% set i = i + 1 %}
{% endif %}
{% set i = i + 1 %}
{% endfor %}
function initMenu()

View File

@@ -27,11 +27,13 @@ body
#tabs
{
width: 580px;
width: 99%;
height: 32px;
background: url('images/tabs-bg.png') no-repeat;
float: left;
padding-left: 200px;
position: relative;
display: inline-flex;
right: 0;
}
#tabs .tab

View File

@@ -8,7 +8,9 @@ defined('MYAAC') or die('Direct access not allowed!');
<link rel="stylesheet" href="<?php echo $template_path; ?>/style.css" type="text/css" />
<script type="text/javascript">
<?php
$twig->display('menu.js.html.twig', array('categories' => $config['menu_categories']));
$menus = get_template_menus();
$twig->display('menu.js.html.twig', ['menus' => $menus]);
?>
</script>
<script type="text/javascript" src="tools/basic.js"></script>
@@ -28,11 +30,24 @@ defined('MYAAC') or die('Direct access not allowed!');
<div id="header"></div>
<!-- End -->
<!-- Custom Style for #tabs -->
<?php
$menusCount = count($menus);
$tabsStyle = '';
if ($menusCount > 6) {
$tabsStyle .= 'padding-left: 4px;';
$tabsStyle .= 'padding-right: 12px;';
}
elseif ($menusCount > 5) {
$tabsStyle .= 'padding-left: 90px;';
}
?>
<!-- Menu Section -->
<div id="tabs">
<div id="tabs" style="<?= $tabsStyle; ?>">
<?php
foreach($config['menu_categories'] as $id => $cat) {
if($id != MENU_CATEGORY_SHOP || $config['gifts_system']) { ?>
if (($id != MENU_CATEGORY_SHOP || $config['gifts_system']) && isset($menus[$id])) { ?>
<span id="<?php echo $cat['id']; ?>" onclick="menuSwitch('<?php echo $cat['id']; ?>');"><?php echo $cat['name']; ?></span>
<?php
}