URL, динамически генерируемый с jquery, частично дублируется - PullRequest
1 голос
/ 16 марта 2020

Я пытаюсь динамически генерировать список новостей в запросах. Новости читаются из файла. json, и соответственно генерируется код html. Так как это двуязычный сайт (IT-EN), я разделил все страницы (кроме домашних страниц) на две подпапки, назвал его и en. Ссылка на страницу новостей генерируется динамически, определяя вставленный язык в качестве атрибута lang в теге страницы и добавляя «news #», предлагаемый числовым индексом в json. Когда я go перехожу на страницу новостей, я использую window.location.toString (). Split ('#'), чтобы разделить URL, а затем выбираю тот, который идет после #. Мне удалось все сгенерировать динамически, и это работает на 99%, но ссылка имеет дублированный язык: вместо /en/news# o /it/news# ottengo /it/it/news#. Я опускаю расширение, так как оно автоматически вставляется .htaccess

Я пытался исключить переменные, содержащие ссылку и язык, написав все напрямую, но это не помогло.

function genera_elencoNews (objDati){   
    let lingua = $('html')[0].lang.toLowerCase();
    let articolo = objDati.articoli;
        articolo = articolo.reverse();

    let article         = '';
    let link_img        = '';
    let link            = '';
    let foto            = '';
    let data_articolo   = '';
    let titolo          = '';
    let contenuto       = '';

    for (let i = 0; i < Object.keys(objDati.articoli).length; i++){
        article         = $('<article>').attr('class', 'box excerpt');


        link_img        = $('<a>').attr('class', 'image left').attr('href', lingua + '/news#' + articolo[i].newsId); 
        link            = $('<a>').attr('href', lingua + '/news#' + articolo[i].newsId);
        foto            = $('<img>').attr('class', 'Miniatura').attr('src', '/img/news/'+ articolo[i].foto);
        data_articolo   = $('<span>').attr('class', 'date').html(articolo[i].data);
        titolo          = articolo[i].titolo;
        contenuto       = $('<p>').html(articolo[i].contenuto.substring (0, 200) + '...');

        $(article)//Genitore. tutto il resto è inserito dentro <article>        
            .prepend(link_img.append(foto))// Inserisce link e dentro mette la foto <article> --> <a> --><img>
                .append($('<div>') //<article> --> <div>            
                    .append($('<header>')// <article> --> <div> --> <header>
                        .append(data_articolo)//<article> ---> <div> ---><header> ---><span>DATA
                            .append($('<h3>')
                                .append(link.html(titolo)))) 
                    .append(contenuto))         
            .appendTo('#ultimeNews');
    }
}

1 Ответ

0 голосов
/ 17 марта 2020

Мне удалось решить проблему, но я решил не снимать вопрос, если он может быть полезен другим.

link = $('<a>').attr('href', lingua + '/news#' + articolo[i].newsId);

Проблема заключается в построении ссылки. Он работает дома, потому что находится в root, и поэтому путь стал example.com/it/news#. На странице архива новостей, как она находится в example.com/, сгенерированная ссылка: example.com/it/it/news#.

Теперь, после решения, я понимаю, что решение простое, но не тривиальное, особенно для тех, кто не имеет большого опыта: начинайте путь ссылки с root: вместо it/news# используйте /it/news#

Затем я изменил строку кода, добавив sla sh (/) : link = $('<a>').attr('href', '/' + lingua + '/news#' + articolo[i].newsId);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...