add item to filter menu

Hy there again 

Is there i way to move title (entity menu like add blog) to filter menu ?

i have looked in code and can't figure it out 

thanks for any help

p.s. still sorry for my bad english

  • elgg_register_plugin_hook_handler('register', 'menu:filter', 'blog_filter_menu_setup');
    
    function blog_filter_menu_setup($hook, $type, $return, $params) {
    
        $entity = elgg_extract('entity', $params);
        $return[] = ElggMenuItem::factory(array(
            'name' => 'add_blog',
            'href' => "blog/add",
            'text' => elgg_echo('blog:add'),
        ));
    
        return $return;
    }

    Read docs

  • oh i was close 

    sorry, my bad, shoud read instructions more carefuly 

    thank you for response

  • Another trick is an overwritting of views:

    views\default\resources\blog\all.php

    <?php
    
    $page_type = elgg_extract('page_type', $vars);
    
    $params = blog_get_page_content_list();
    
    $params['sidebar'] = elgg_view('blog/sidebar', ['page' => $page_type]);
    
    $params['filter'] = elgg_view('filters/blog/menu', [
                'filter_context' => 'all',
            ]),
    
    $body = elgg_view_layout('content', $params);
    
    echo elgg_view_page($params['title'], $body);

     

    views\default\resources\blog\owner.php

    <?php
    
    $page_type = elgg_extract('page_type', $vars);
    $username = elgg_extract('username', $vars);
    
    $user = get_user_by_username($username);
    if (!$user) {
        forward('', '404');
    }
    $params = blog_get_page_content_list($user->guid);
    
    $params['sidebar'] = elgg_view('blog/sidebar', ['page' => $page_type]);
    
    $params['filter'] = elgg_view('filters/blog/menu', [
                'filter_context' => 'mine',
            ]),
    
    $body = elgg_view_layout('content', $params);
    
    echo elgg_view_page($params['title'], $body);

     

    views\default\resources\blog\edit.php

    <?php
    
    elgg_gatekeeper();
    
    $page_type = elgg_extract('page_type', $vars);
    $guid = elgg_extract('guid', $vars);
    $revision = elgg_extract('revision', $vars);
    
    $params = blog_get_page_content_edit('edit', $guid, $revision);
    
    if (isset($params['sidebar'])) {
        $params['sidebar'] .= elgg_view('blog/sidebar', ['page' => $page_type]);
    } else {
        $params['sidebar'] = elgg_view('blog/sidebar', ['page' => $page_type]);
    }
    
    $params['filter'] = elgg_view('filters/blog/menu', [
                'filter_context' => 'add',
            ]),
    
    $body = elgg_view_layout('content', $params);
    
    echo elgg_view_page($params['title'], $body);

     

    Now create a new views\default\filters\blog\menu.php

    <?php
    
    $filter_context = elgg_extract('filter_context', $vars, 'all');
    
    $tabs = [
        'all',
        'mine',
        'friends',
        'add',
    ];
    
    foreach ($tabs as $tab) {
        elgg_register_menu_item('filter', [
            'name' => $tab,
            'text' => elgg_echo("blog:$tab"),
            'href' => elgg_http_add_url_query_elements(current_page_url(), ['tab' => $tab]),
            'selected' => $tab == $filter_context,
        ]);
    }
    
    echo elgg_view_menu('filter', [
        'sort_by' => 'priority',
    ]);

     

  • now this is a great example i hope it will help more than just me