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

MSE-Script

Developer
Команда форума
Сообщения
861
Реакции
307
Баллы
63
1) Файл core/track.php, найти:

PHP:
$url = $explodeUrl[0];
Заменить на:
PHP:
$url = $this->MSE->config_system['track_parser'] === 'Zvook' ? intval($explodeUrl[0]) : $explodeUrl[0];
2) Установить плагин для модификации URL: https://mse-script.ru/forum/threads/kak-unikalizirovat-url-ispolnitelja.221/post-1859
3) Сформировать URL в файле track-list.tpl и track-ajax.tpl нужной схемой, например:
Код:
/track/{$track.url}-{$track.artistNames.0|translit}-{$track.name|translit}
 
  • Like
Реакции: John

MSE-Script

Developer
Команда форума
Сообщения
861
Реакции
307
Баллы
63
@Mad Эта конструкция появилась в версии 3.0. Если шаблон был создан ранее, то такого в нем не будет. Для "старых" шаблонов нужно искать ссылку с анкором {$track.name}, что-то похожее на:
HTML:
<a class="pajax-link" href="/{$config.key}/...">{$track.name}</a>
 
  • Like
Реакции: Mad

Mad

Новичок
Клиент
Сообщения
26
Реакции
2
Баллы
3
@Mad Эта конструкция появилась в версии 3.0. Если шаблон был создан ранее, то такого в нем не будет. Для "старых" шаблонов нужно искать ссылку с анкором {$track.name}, что-то похожее на:
HTML:
<a class="pajax-link" href="/{$config.key}/...">{$track.name}</a>
@MSE-Script, да, видимо шаблон был под более раннюю версию, нашел подобную строчку. Благодарю!
 

photomakes

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

Теперь работает два вида урл:
— /track/62478639-denis-klyaver-dve-zvezdy
— /track/62478639

Как сделать, чтобы с /track/62478639 редиректило на /track/62478639-denis-klyaver-dve-zvezdy ?

Таким образом можно избежать дубликата страниц на сайте, если ПС сможет найти оба варианта урл.
 

MSE-Script

Developer
Команда форума
Сообщения
861
Реакции
307
Баллы
63
Добавьте перед закрывающим тегом </head> (файл header.tpl) конструкцию:
PHP:
{if $mse.controller === "track"}
      {* Сохраняем в переменную $necessary_url эталонный URL *}
      {assign var=necessary_url value="https://{$smarty.server.HTTP_HOST}/track/{$track.tid}-online"}

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

photomakes

Новичок
Клиент
Сообщения
17
Реакции
1
Баллы
3
Правильно?
PHP:
{$track.tid}-online
заменить на:
PHP:
{$track.url}-{$track.artistNames.0|translit}-{$track.name|translit}
Получим:
PHP:
{if $mse.controller === "track"}
      {* Сохраняем в переменную $necessary_url эталонный URL *}
      {assign var=necessary_url value="https://{$smarty.server.HTTP_HOST}/track/{$track.url}-{$track.artistNames.0|translit}-{$track.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}
Если нет, то не понял этого:
В переменной $necessary_url задайте эталонный URL.
 

Mirila

Новичок
Клиент
Сообщения
13
Реакции
2
Баллы
3
Правильно?
PHP:
{$track.tid}-online
заменить на:
PHP:
{$track.url}-{$track.artistNames.0|translit}-{$track.name|translit}
Получим:
PHP:
{if $mse.controller === "track"}
      {* Сохраняем в переменную $necessary_url эталонный URL *}
      {assign var=necessary_url value="https://{$smarty.server.HTTP_HOST}/track/{$track.url}-{$track.artistNames.0|translit}-{$track.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}
Если нет, то не понял этого:
Может вот так

{$track.tid}-{$track.artist|translit}-{$track.name|translit}
 

Mirila

Новичок
Клиент
Сообщения
13
Реакции
2
Баллы
3
Добавьте перед закрывающим тегом </head> (файл header.tpl) конструкцию:
PHP:
{if $mse.controller === "track"}
      {* Сохраняем в переменную $necessary_url эталонный URL *}
      {assign var=necessary_url value="https://{$smarty.server.HTTP_HOST}/track/{$track.tid}-online"}

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

В базу добавляет /track/62478639 и /track/62478639-denis-klyaver-dve-zvezdy
 
  • Like
Реакции: Grey

photomakes

Новичок
Клиент
Сообщения
17
Реакции
1
Баллы
3
Эталонный URL, который вы прописали в этой конструкции отличается от фактического. Ищите ошибку.
Я не программист, найти ошибку не могу. Помогите, пожалуйста.

Плюс тоже нужно сделать для сохранения адресов альбомов /album/8392714-shine и артистов /artist/1570843-zvonkij
 

photomakes

Новичок
Клиент
Сообщения
17
Реакции
1
Баллы
3
Фактический выглядит так: /track/{$track.url}-{$track.artistNames.0|translit}-{$track.name|translit}
Так как в файлах track-ajax.tpl и track-list.tpl этот вид урл.

Код:
{assign var=necessary_url value="https://{$smarty.server.HTTP_HOST}/track/{$track.tid}-online"}
Здесь пробовал варианты:
Код:
{assign var=necessary_url value="https://{$smarty.server.HTTP_HOST}/track/{$track.url}-{$track.artistNames.0|translit}-{$track.name|translit}"}
и
Код:
{assign var=necessary_url value="https://{$smarty.server.HTTP_HOST}/track/{$track.tid}-{$track.artist|translit}-{$track.name|translit}"}
 

MSE-Script

Developer
Команда форума
Сообщения
861
Реакции
307
Баллы
63
Добавьте после <body>:
PHP:
{assign var=necessary_url value="https://{$smarty.server.HTTP_HOST}/track/{$track.tid}-{$track.artist|translit}-{$track.name|translit}"}
{$necessary_url}
Вверху страницы появится URL. Скопируйте его и URL просматриваемой страницы из адресной строки браузера сюда.
 
Сверху