@denissek

Почему перестал работать скрипт модуляции аккордов и как это исправить?

Есть сайт на wordpress с аккордами для гитары. Сайт уже достаточно старый, и тема wordpress естественно тоже старая. Попросил программиста написать скрипт модуляции аккордов. Он написал. Все отлично. Вот пример: https://meddiator.ru/sardor-raximxon-drug.html
Справа сверху при нажатии кнопочек все отлично работает. Но так так шаблон сайта давно устарел и не отображается на мобильных устройствах, естественно решил поменять шаблон на адаптивный.
Получилось пока так (это тестовый сайт на поддомене): denis.meddiator.ru/2019/01/26/15
Так вот: модуляция аккордов не работает. Её нет. На старом сайте скрипт вставлен в конец single.php и сверху страницы после заголовка вставлен небольшой код для показа кнопок. Знаю, что скрипт привязан к красному цвету (цвет аккордов). Ни в стилях CSS ни в index.php ничего не нашел, скрипт только в single.php (одиночная запись).
В новом шаблоне куда только не вставлял скрипт - результата ноль, ничего не появляется. Новый шаблон разработан для HTML5 и CSS3. Может в этом проблема? Как изменить тогда этот скрипт или что вообще делать?
Да, на хостинге перевел старый сайт на PHP 7.2, но модуляция работает.
  • Вопрос задан
  • 66 просмотров
Пригласить эксперта
Ответы на вопрос 1
azerphoenix
@azerphoenix
Java Software Engineer
Как я вижу это js код. И на новом сайте он отсутствует
судя по всему у вас на сайте есть такой скрипт -
Помимо того, что он там отсутствует, также отличаются селекторы, к которым он был привязан. Т.е. надо переделывать этот скрипт
<!-- modulation buttons script -->
<script type="text/javascript">
    var modulationSelector = 'span[style*="color: #ff0000"]';
    var photoSelector = '.entry pre img';
    var modulationCounter = 0;
    $(document).ready(function() {
        if ($(modulationSelector).length && !($(photoSelector).length)) {
            $('.modulation_block').show();
        }
        $('.modulation_increment').click(function(){moveChords(1);});
        $('.modulation_decrement').click(function(){moveChords(0);});
    });

    function moveChords(isUp)
    {
        modulationCounter = modulationCounter + (isUp ? 1 : -1);
        var counterElements = $('.modulation_counter');
        if (counterElements.length) {
            counterElements[0].textContent = modulationCounter;
        }
        console.log('moving chords ' + (isUp ? 'up' : 'down'));
        $(modulationSelector).each(function() {
            this.textContent = moveChordRow(this.textContent, isUp);
        });
    }

    function moveChordRow(chordRow, isUp)
    {
        var firstSpaceMatch = chordRow.match(/^([\s\n]*).*(\n\s*)?$/);
        var resultString = firstSpaceMatch[1];

        var pattern = /[^\s\n]+(?:\s+|$)/g;
        var matches;
        while (null !== (matches = pattern.exec(chordRow))) {
            resultString += moveChordBlock(matches[0], isUp);
        }

        return resultString + (firstSpaceMatch[2] ? firstSpaceMatch[2] : '');
    }

    function moveChordBlock(chordString, isUp)
    {
        var matches = chordString.match(/([A-H]#?)([^\s\/]*)\/?([A-H]?#?)([^\s]*)(\s*)/);
        if (null === matches) {
            return chordString;
        }
        var oldChord = matches[1];
        var modifiers = matches[2];
        var secondChord = matches[3];
        var hasSecondChord = secondChord.length > 0;
        var secondModifiers = matches[4];
        var spacesCount = matches[5].length;
        var newChord = moveChord(oldChord, isUp);
        var newSecondChord = hasSecondChord ? moveChord(secondChord, isUp) : null;
        if (null === newChord || (hasSecondChord && null === newSecondChord)) {
            console.error('Cannot parse chord string: ' + chordString);
            return chordString;
        }

        spacesCount = spacesCount + oldChord.length - newChord.length + (hasSecondChord ? secondChord.length - newSecondChord.length : 0);
        spacesCount = (spacesCount > 1 ? spacesCount : 1);

        return newChord + modifiers + (hasSecondChord ? '/' + newSecondChord + secondModifiers : '') + ' '.repeat(spacesCount);
    }

    function moveChord(chord, isUp) {
        var chords = ['A', 'B', 'H', 'C', 'C#', 'D', 'D#', 'E', 'F', 'F#', 'G', 'G#'];
        var index = chords.indexOf(chord);
        if (-1 === index) {
            return null;
        }

        return chords[ (index + chords.length + (isUp ? 1 : -1)) % chords.length ];
    }
</script>
<!-- end of modulation buttons script -->
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы