none
Как сделать активным Ribbon Tab по умолчанию для страницы сайта. RRS feed

  • Вопрос

  • Добрый день!

    У меня вопрос по ленте. Создала свой ribbon tab, привязана эта вкладка к спискам. при открытии списка вкладка открывается по умолчанию со всеми кнопками все отлично. но вот если вытащить список в виде стандартного веб парта на страницу сайта, то эта вкладка открывается по умолчанию, но кнопки становятся активны, только если выбран веб парт. Как сделать так, чтобы:

    1. Либо веб парт по умолчанию был активным;

    2. Либо вкладка с кнопками отрабатывала точно также как и на списке, т.е. активны были и кнопки, без выделения самого веб парта. 

    17 апреля 2012 г. 5:49

Ответы

Все ответы

  • Посмотрите по пункту 1:

    Set Default Webpart on the page 

    Having Default Web Parts in new Pages Based Off Page Layouts in MOSS 2007 Publishing Sites 

    по пункту 2:

    Set Custom Ribbon Tab as default selected --> how?


    Мнения, высказанные здесь, являются отражением моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется "как есть" без каких-либо гарантий.

    • Помечено в качестве ответа Vanyukova Anna 20 апреля 2012 г. 13:45
    20 апреля 2012 г. 12:29
  • Попал в такую же ситуацию - у меня лента используется как навигационное меню по подсистеме. Т.е. она должна всегда быть открыта на нужной вкладке на всех страницах. Причем она должна сама открываться без вмешательства пользователя.

    На эту тему нашел хорошие статьи про использование JSOM:

    https://sharepoint247.wordpress.com/2013/05/24/javascript-to-hide-or-select-specific-tabs-in-sharepoint-ribbon/

    https://paulbuzzblog.wordpress.com/2012/11/23/how-to-hide-the-sharepoint-ribbon/ - эта статья базовая, первая основывается на ней.

    Вкратце опишу свое понимание:

    1. Функция, которая делает активной нужную закладку и удаляет остальные (даже Ribbon.Read). Нужно знать идентификаторы закладок как своих, так и стандартных (https://msdn.microsoft.com/en-us/library/office/ee537543(v=office.14).aspx + Ribbon.Read, которая Обзор).

        

    function hideRibbonTabByName(tabName) {
        var ribbon = SP.Ribbon.PageManager.get_instance().get_ribbon();

        // Set the tab to the “Browse” tab
        SelectRibbonTab("pv.MainRibbon.MainTab", true);
        // Remove the “Edit” tab from a list from from the ribbon.
        ribbon.removeChild(tabName);
        ribbon.removeChild("Ribbon.Read");
    }

    2. Функция, которую будем вызывать на странице:

    function DeleteTabs() {

        var pm = SP.Ribbon.PageManager.get_instance();

        pm.add_ribbonInited(function () {
            hideRibbonTabByName("Ribbon.WebPartPage");
        });

        var ribbon = null;
        try {
            ribbon = pm.get_ribbon();
        }
        catch (e) { }

        if (!ribbon) {
            if (typeof (_ribbonStartInit) == "function")
                _ribbonStartInit(_ribbon.initialTabId, false, null);
        }
        else {
            hideTabByNameRibbon("Ribbon.WebPartPage");
        }
    }

    Этот скрипт запускается на Application page, образованной от Microsoft.SharePoint.WebPartPages.WebPartPage и по умолчанию лента содержит только кнопку Обзор (Ribbon.Read) и Страница (Ribbon.WebPartPage), их я и удаляю: ribbon.removeChild(идентификатор закладки).

    В общем важна последовательность операций. Попытка как-то "оптимизировать" и сократить код приводила к неполному функционалу - оставались ненужные закладки, нужная закладка не раскрывалась.

    И еще - на многие функции я просто не нашел никакой документации. Посмотрите сами, что предлагает msdn на тему SP.Ribbon....

    Далее, использую SP.SOD для запуска этого скрипта:

    в блоке <asp:Content> для PlaceHolderAdditionalPageHead добавляю блок <script>, в котором пишу:

    function hideRibbonTabByName(tabName) {...}

    function CustomizeTabs() {

    SP.SOD.executeOrDelayUntilScriptLoaded(function() { ..содержимое DeleteTabs .. }, "sp.ribbon.js"); - т.к. описанный выше код зависим от стандартного sp.ribbon.js

    }

    - далее ставим в очередь на запуск при(после?) загрузке страницы SP:

    // <![CDATA[
            _spBodyOnLoadFunctions.push(CustomizeTabs);
    // ]]>

    В результате при открытии страницы получаем открытую закладку ленты с ее содержимым.

    1 ноября 2016 г. 13:51