MediaWiki:Gadget-RelatedArticles.js — различия между версиями

Материал из rock63.ru
Перейти к: навигация, поиск
 
(не показаны 2 промежуточные версии этого же участника)
Строка 15: Строка 15:
 
         titles: articleTitles.join('|'),
 
         titles: articleTitles.join('|'),
 
         lhshow: '!redirect',
 
         lhshow: '!redirect',
 +
        lhnamespace: [0].join('|'),
 
         formatversion: 2
 
         formatversion: 2
 
     }).done(function(data) {
 
     }).done(function(data) {
Строка 35: Строка 36:
 
             }
 
             }
 
             gateway.getCards(relatedArticles, 200).done(function(cards) {
 
             gateway.getCards(relatedArticles, 200).done(function(cards) {
                 var $body = $('#bodyContent'),
+
                 var $body = $('#mw-content-text'),
                     $header = $('<div/>', {
+
                     $header = $('<h2/>', {
                        class: 'related-articles-header',
 
 
                         text: 'Связанные страницы'
 
                         text: 'Связанные страницы'
 
                     });
 
                     });

Текущая версия на 00:35, 23 июля 2016

mw.loader.using('ext.cards').done(function() {
    var api = api = new mw.Api(),
        gateway = new mw.cards.CardsGateway({api: api});

    var relatedArticles = [],
        articleTitles = [];

    $('.firstHeading').each(function() {
        articleTitles.push($(this).text());
    });

    api.get({
        action: 'query',
        prop: 'linkshere',
        titles: articleTitles.join('|'),
        lhshow: '!redirect',
        lhnamespace: [0].join('|'),
        formatversion: 2
    }).done(function(data) {
        if (data.query && data.query.pages) {
            $.map(data.query.pages, function(page) {
                if (page.linkshere) {
                    $.map(page.linkshere, function(linkhere) {
                        relatedArticles.push(linkhere.title);
                    });
                }
            });
        }

        if (relatedArticles.length) {
            relatedArticles.sort(function() {
                return 0.5 - Math.random()
            });
            if (relatedArticles.length > 3) {
                relatedArticles = relatedArticles.slice(0, 3);
            }
            gateway.getCards(relatedArticles, 200).done(function(cards) {
                var $body = $('#mw-content-text'),
                    $header = $('<h2/>', {
                        text: 'Связанные страницы'
                    });
                $body.append($header);
                $body.append(cards.$el);
            });
        }
    });
});