Изменение URL страницы трека в версии 3.0

MSE-Script

Developer
Команда форума
Сообщения
861
Реакции
307
Баллы
63
URL настроен правильно, зацикленного редиректа быть не должно. Попробуйте так:

PHP:
{if $mse.controller === "track"}
      {* Сохраняем в переменную $necessary_url эталонный URL *}
      {assign var=necessary_url value="https://{$smarty.server.HTTP_HOST}/track/{$track.tid}-{$track.artist|translit}-{$track.name|translit}"}

      {* Выполняем проверку текущего URL на соответствие с эталонным *}
      {if "https://{$smarty.server.HTTP_HOST}{$smarty.server.REQUEST_URI}" !== "{$necessary_url}"}
         Текущий URL: `https://{$smarty.server.HTTP_HOST}{$smarty.server.REQUEST_URI}`
         Эталонный URL: `{$necessary_url}`
      {/if}
{/if}
Редиректа быть не должно, но в исходном коде страницы появится информация. Скопируйте ее.
 
Последнее редактирование:

MSE-Script

Developer
Команда форума
Сообщения
861
Реакции
307
Баллы
63
@photomakes, В строке {assign var=necessary_url value="https://{$smarty.server.HTTP_HOST}/track/{$track.tid}-online"} настройте эталонный URL (который ДОЛЖЕН быть).

UP: Поправил предыдущее сообщение.
 

photomakes

Новичок
Клиент
Сообщения
17
Реакции
1
Баллы
3
@MSE-Script,
Для просмотра содержимого вам необходимо авторизоваться.

Никакого текста не появляется. Правило срабатывает.

Если стереть часть до id трека
Для просмотра содержимого вам необходимо авторизоваться.

Появляется:
Для просмотра содержимого вам необходимо авторизоваться.
 
Последнее редактирование модератором:

MSE-Script

Developer
Команда форума
Сообщения
861
Реакции
307
Баллы
63
Никакого текста не появляется. Правило срабатывает.
Если никакого текста не появляется, значит все у вас работает корректно и проблем нет. Этот текст появляется только если текущий URL НЕ соответствует эталонному. Меняйте текст в условии на редирект <meta http-equiv="refresh" content="0;URL={$necessary_url}" />.
 

photomakes

Новичок
Клиент
Сообщения
17
Реакции
1
Баллы
3
@MSE-Script,
Сейчас всё работает правильно, спасибо за помощь. Для альбомов и артистов позже попробую сделать такое же правило.
 

photomakes

Новичок
Клиент
Сообщения
17
Реакции
1
Баллы
3
Понял, что не понял как сделать проверку ещё для урл на артиста и альбом.

Подумал, что верно будет такой вариант прописать
Код:
{if $mse.controller === "artist"}
    {* Сохраняем в переменную $necessary_url эталонный URL *}
    {assign var=necessary_url value="https://{$smarty.server.HTTP_HOST}/artist/{$track.tid}-{$track.artist|translit}"}

    {* Выполняем проверку текущего URL на соответствие с эталонным *}
    {if "https://{$smarty.server.HTTP_HOST}{$smarty.server.REQUEST_URI}" !== "{$necessary_url}"}
        <meta http-equiv="refresh" content="0;URL={$necessary_url}" />
    {/if}
{/if}
Но, что-то не так. Потому что при переходе на артиста, урл отображается правильно, а если стереть часть и оставить только id артиста, то урл ломается до вида /artist/-

Пробовал варианты эталонного урл:
Код:
{assign var=necessary_url value="https://{$smarty.server.HTTP_HOST}/artist/{$track.tid}-{$track.artist|translit}"}
{assign var=necessary_url value="https://{$smarty.server.HTTP_HOST}/artist/{$track.tid}-{$track.artistNames.0|translit}"}
{assign var=necessary_url value="https://{$smarty.server.HTTP_HOST}/artist/{$track.artistId}-{$track.artistNames.0|translit}"}
 

photomakes

Новичок
Клиент
Сообщения
17
Реакции
1
Баллы
3
Апаю тему, так как вопрос нужно решить, а сам ещё не понимаю строение урл данного скрипта. Если есть фак по формированию урлов, то прошу дать ссылку. Так как я не понял, почему в файлах track-list.tpl и track-ajax.tpl один вид урл, а в конструкции эталонного урл другой вид.
 

MSE-Script

Developer
Команда форума
Сообщения
861
Реакции
307
Баллы
63
не понимаю строение урл данного скрипта
URL имеет вид domain.com/track/id, c помощью некоторых доработок скрипта URL можно сделать в виде domain.com/track/id-artist-name.

почему в файлах track-list.tpl и track-ajax.tpl один вид урл
Разные файлы шаблона, разная логика и разные теги. У тегов может быть схожее название, но они все равно обрабатываются разной логикой. Иными словами у track-list.tpl своя кухня, а у track.tpl другая.

Но, что-то не так.
{$track.tid} - передает ID трека только для страницы трека. Для исполнителя и альбома потребуется соответствующий ID. Штатно такой функции нет, придется немного доработать контроллеры:

В файле core/album.php найдите:
PHP:
$data['album']['name'] = $this->results['releases'][$this->albumId]['title'];
После вставьте:
PHP:
$data['album']['id'] = $this->albumId;
В файле core/artist.php найдите:
PHP:
$data['artist_name'] = $artistName;
После вставьте:
PHP:
$data['artist_id'] = $this->artistId;
Для страницы альбома используйте тег {$album.id}, для исполнителей {$artist_id}.

В новой версии добавим полноценный конфигуратор URL.
 

photomakes

Новичок
Клиент
Сообщения
17
Реакции
1
Баллы
3
@MSE-Script,
Внёс изменения.

Использую конструкцию:
Код:
{if $mse.controller === "artist"}
    {* Сохраняем в переменную $necessary_url эталонный URL *}
    {assign var=necessary_url value="https://{$smarty.server.HTTP_HOST}/artist/{$artist_id}-{$track.artist|translit}"}

    {* Выполняем проверку текущего URL на соответствие с эталонным *}
    {if "https://{$smarty.server.HTTP_HOST}{$smarty.server.REQUEST_URI}" !== "{$necessary_url}"}
        <!-- <meta http-equiv="refresh" content="0;URL={$necessary_url}" /> -->
        Текущий URL: `https://{$smarty.server.HTTP_HOST}{$smarty.server.REQUEST_URI}`
        Эталонный URL: `{$necessary_url}`
    {/if}
{/if}
Получаю результат на странице:
Для просмотра содержимого вам необходимо авторизоваться.

В итоге, для артистов тег {$track.artist|translit} не подходит. Можете написать верный вариант тегов для артистов и альбомов?
 

photomakes

Новичок
Клиент
Сообщения
17
Реакции
1
Баллы
3
Используй {$artist_name|translit}
Отлично, конструкция сработала правильно.
Код:
{if $mse.controller === "artist"}
    {* Сохраняем в переменную $necessary_url эталонный URL *}
    {assign var=necessary_url value="https://{$smarty.server.HTTP_HOST}/artist/{$artist_id}-{$artist_name|translit}"}

    {* Выполняем проверку текущего URL на соответствие с эталонным *}
    {if "https://{$smarty.server.HTTP_HOST}{$smarty.server.REQUEST_URI}" !== "{$necessary_url}"}
        <meta http-equiv="refresh" content="0;URL={$necessary_url}" />
    {/if}
{/if}
 

Grey

Активист
Клиент
Сообщения
101
Реакции
10
Баллы
18
Используй {$artist_name|translit}
А для альбома какую конструкцию использовать? так не выходит
Код:
{if $mse.controller === "album"}
    {* Сохраняем в переменную $necessary_url эталонный URL *}
    {assign var=necessary_url value="https://{$smarty.server.HTTP_HOST}/album/{$album.id}-{$album_name|translit}"}

    {* Выполняем проверку текущего URL на соответствие с эталонным *}
    {if "https://{$smarty.server.HTTP_HOST}{$smarty.server.REQUEST_URI}" !== "{$necessary_url}"}
        <meta http-equiv="refresh" content="0;URL={$necessary_url}" />
    {/if}
{/if}
 

photomakes

Новичок
Клиент
Сообщения
17
Реакции
1
Баллы
3
@Grey, для альбома
Код:
{if $mse.controller === "album"}
    {* Сохраняем в переменную $necessary_url эталонный URL *}
    {assign var=necessary_url value="https://{$smarty.server.HTTP_HOST}/album/{$album.id}-{$album.name|translit}"}

    {* Выполняем проверку текущего URL на соответствие с эталонным *}
    {if "https://{$smarty.server.HTTP_HOST}{$smarty.server.REQUEST_URI}" !== "{$necessary_url}"}
        <meta http-equiv="refresh" content="0;URL={$necessary_url}">
    {/if}
{/if}
 
  • Like
Реакции: Grey

Grey

Активист
Клиент
Сообщения
101
Реакции
10
Баллы
18
Еще проблема если в настройках включено "Сохранять найденные треки на сайт"

В базу добавляет /track/62478639 и /track/62478639-denis-klyaver-dve-zvezdy
Тоже самое добавляет 2 варианта как исправить?
 

ovozz

Местный житель
Клиент
Сообщения
300
Реакции
86
Баллы
28
как исправить?
сменить ссылку в шаблоне с /track/62478639 на /track/62478639-denis-klyaver-dve-zvezdy и тогда первого варианта физически не будет
то есть где-то в шаблоне формируется кривая ссылка, с которой у тебя идет редирект
 

Grey

Активист
Клиент
Сообщения
101
Реакции
10
Баллы
18
Есть некоторая проблема при нормальном название трека всё хорошо работает а при названиях J'YGA — ÁNTAES тоесть символ Á и подобные вызывают редиректы постоянные сторонницы ?
 
Последнее редактирование:

Grey

Активист
Клиент
Сообщения
101
Реакции
10
Баллы
18
Есть некоторая проблема при нормальном название трека всё хорошо работает а при названиях J'YGA — ÁNAPES тоесть символ Á и подобные вызывают редиректы постоянные сторонницы ?
Как исправить?
 
Последнее редактирование:
Сверху