• Страница 1 из 1
  • 1
Модератор форума: JonMagon  
Модные URL в адресной строке
Rad_van_Cor
Сообщений: 1179
Репутация: 437

Сообщение # 1 | 12:16:35
И так, я хочу сделать стильные адреса страниц в на страницах пользователей типа site.ru/$USERNAME$
Ну а там по ходу можно будет и другие страницы сделать.

Есть уже готовый JS скрипт, который реализован через 404 страницу. Типа если указать в адресной строке адрес типа site.ru/$USERNAME$ то разумеется такой страницы нет, нас перекинет на 404, а там сработает скрипт, который перенесёт нас на страницу пользователя. Но вся эта багодельня работает через iframe. И по ряду причин (перечислять не буду), этот варик не совсем канает.

Хотелось бы просто скрипт., который будет менять URL в адресной строке да и только. Ну или как-то иначе, но что бы без iframe всё это работало.

Можно на JS можно на PHP не суть. Главное что бы работало как полагается.

Komoff
Сообщений: 595
Репутация: 276

Сообщение # 2 | 12:46:50
Не знаю, может на PHP и есть что-то с подменой адреса без фрейма, но я просто использую /index/8-0-$USERNAME$, конечно, это не так эстетично, но на безрыбье...
Вансан
Сообщений: 77
Репутация: 33

Сообщение # 3 | 12:55:29
Цитата (Rad_van_Cor)
Хотелось бы просто скрипт., который будет менять URL в адресной строке да и только.
Изменение url-адреса ведёт к отправке соответствующего запроса на сервер.
Нельзя просто так взять, и поменять url чтобы страница не перезагружалась.

Добавлено (07 Май 2013, 12:55:29)
---------------------------------------------
Всё, что можно менять в адресе без перезагрузки страницы - это хэш (текст после символа #) (window.location.hash).


Absit invidia verbo
Rad_van_Cor
Сообщений: 1179
Репутация: 437

Сообщение # 4 | 13:06:25
Цитата (Komoff)
я просто использую /index/8-0-$USERNAME$

раньше тоже самое использовал.
Затем перешёл на JS скрипт, который переадресовывает с 404. Но сегодня заметил такую фишку.
Во всех браузерах, всё нормльно. Но когда в IE открывается страница с модным адресом (та которая в iframe) она не совсем корректно отображается.
Ну тогда я решил прописать DOCTYPE в файл 404.htm , отображатся страница стала как положено, НО перестала работать высота фрейма 100%.
Тоесть без DOCTYPE высота фрейма 100% работала корректно, но после вставки DOCTYPE, 100% отображается примерно как 100-200px.
Это одна из проблем.

Цитата (Вансан)
Нельзя просто так взять, и поменять url чтобы страница не перезагружалась.

Ну значить нужно сделать редирект, но без дурацких фреймов. Уверен это вполне реально даже на uCoz )

BigBooble
Сообщений: 61
Репутация: 22

Сообщение # 5 | 13:07:03
Не забыл вашу помощь smile Держите http://yraaa.ru/publ/22-1-0-924
Rad_van_Cor
Сообщений: 1179
Репутация: 437

Сообщение # 6 | 13:21:16
BigBooble, спасибо конечно) Но этот скрипт я знаю, про него я и говорил, он сделан через ifreme. А это не то, что мне требуется)

Добавлено (07 Май 2013, 13:21:16)
---------------------------------------------
Вот ещё такое накопал, код для 404, тут сделано только адреса не /$USERNAME$ а /id$ID$
Не суть, можно переписать. И вроде бы без iframe.
И когда страница загружается, если правым кнопкой мыши кликнуть в любом месте, в выпадающем меню (когда есть фрейм) есть раздел, типа показать только фрейм. В этом случае такого нет. Вроде бы не через фрейм работает. Но если посмотреть исходный код страницы, то увидим код 404.
Не пойму как работает этот скрипт. Но в IE страница с модным адресом вообще пустая. Так что этот варик тоже не катит(

Код
<html>  
  <head>  
  <meta name="robots" content="noindex,nofollow">  
  <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/yui/2.6.0/build/yahoo-dom-event/yahoo-dom-event.js"></script>  
  <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/yui/2.6.0/build/connection/connection-min.js"></script>  
  <title>...</title>  
  <style type="text/css">  
  body {margin:0;background:#FFFFFF}  
  body, td {font-family:Tahoma,Arial;font-size:12pt;color:#666666}  
  #mop0 {display:none}  
  </style>  
  </head>  
  <body >  
  <div id="mop0">1</div>  
  <div id="mop1">Страница не найдена</div>  
  <script type="text/javascript">  
  var mylink = location.href;  
  mylink = mylink.replace('http://'+location.host+'/', '');  
  if(mylink.substr(0,2) == 'id') {  
  mylink = mylink.substr(2);  
  start_pers();  
  } else {document.title='Ошибка'}  

  function start_pers() {  
  function include(id,file){  
  YAHOO.util.Event.onAvailable(id,function(){  
  var ok = function(o){  
  if(o.responseText !== undefined){  
  YAHOO.util.Dom.get(id).innerHTML = o.responseText;  
  }  
  }  
  YAHOO.util.Connect.asyncRequest('GET', file, {success:ok});  
  });  
  }  

  // Arguments: ID of the target element, path to the file  
  new include('mop1','/index/8-'+mylink+'');  
  }  
  </script>  
  </body>  
  </html>


Вансан
Сообщений: 77
Репутация: 33

Сообщение # 7 | 23:38:03
Rad_van_Cor, а можно сделать например так:
Создать в корне папку users, там создать файл index.html, в котором прописать скрипт, который через функцию load выгружает всю необходимую информацию со страницы пользователя.
Логин пользователя будет получаться через location.hash, а лучше даже через location.search, так логичнее. В случае, если указан некорректный логин - будет 404, если часть location.search в адресе вообще пропущена - можно выводить список всех пользователей.
В итоге получим ссылки вида:
  • site.ru/users - список пользователей;
  • site.ru/users?$USERNAME$ - персональная страница пользователя.

    Ну это так, навскидку smile

    Минус - если JS отключен - работать ничего не будет.
    Хотя, если JS отключен, то на сайте вообще половина всего работать не будет...

  • Absit invidia verbo
    Rad_van_Cor
    Сообщений: 1179
    Репутация: 437

    Сообщение # 8 | 01:18:29
    Вансан, спасибо за интересную идею. Но адрес должен быть site.ru/$USERNAME$ а не site.ru/users?$USERNAME$
    Это важно)

    fflesh
    Сообщений: 1784
    Репутация: 1314

    Сообщение # 9 | 12:36:55
    Rad_van_Cor,
    Цитата (Rad_van_Cor)
    Но адрес должен быть site.ru/$USERNAME$ а не site.ru/users?$USERNAME$
    Это важно)

    Либо через хэш либо никак.
    Так тоже не подойдет, я так понял: site.ru/?$USERNAME$

    Всё написанное выше - моё личное мнение и на абсолютную правоту не претендует.
    Есть вопросы лично ко мне - пиши сюда: http://likbezz.ru/forum/8
    Сообщение отредактировал fflesh - Среда, 08 Май 2013, 12:37:35
    Rad_van_Cor
    Сообщений: 1179
    Репутация: 437

    Сообщение # 10 | 13:12:38
    Цитата (fflesh)
    Либо через хэш либо никак.

    Даже с помощью стороннего PHP ну или юкозовского PHP ?

    Если через хэш. Какие плюсы и минусы у этого варианта?

    Вансан
    Сообщений: 77
    Репутация: 33

    Сообщение # 11 | 15:28:26
    Цитата (fflesh)
    Так тоже не подойдет, я так понял: site.ru/?$USERNAME$
    Попытка передать параметр через search вызовет всё ту же 404.
    Цитата (Rad_van_Cor)
    Ну значить нужно сделать редирект, но без дурацких фреймов. Уверен это вполне реально даже на uCoz )
    Редирект - это вот такой сценарий: пользователь переходит по ссылке site.ru/$USERNAME$ а его перебрасывает на site.ru/index/8-0-$USERNAME$.
    Если вас это устроит - такое сделать более чем просто. В той же 404 изменить скрипт на перенаправление и всё.
    Цитата (Rad_van_Cor)
    Если через хэш. Какие плюсы и минусы у этого варианта?
    Из плюсов пожалуй только более короткий и красивый url.
    Из минусов можно отметить чуть более долгую загрузку страниц. В случае, если передавать параметр через кэш - будет ещё невозможность перейти на профиль пользователя с главной страницы сайта (в случае, если ссылка открывается в этом же окне), и придётся сам скрипт помещать на главную страницу сайта.
    Потому лучше передавать через search. Тогда в любом случае будет идти перенаправление на 404, а там уже отработает скрипт.

    Absit invidia verbo
    Rad_van_Cor
    Сообщений: 1179
    Репутация: 437

    Сообщение # 12 | 15:56:29
    Цитата (Вансан)
    Редирект - это вот такой сценарий: пользователь переходит по ссылке site.ru/$USERNAME$ а его перебрасывает на site.ru/index/8-0-$USERNAME$.

    Ах, ну да, я как то и не подумал. Не то.

    С хэшем понял, в общем морочно. Через search не так красиво получается.

    Так что наверное придётся юзать по старинки через 404 и iframe

    Ну только если нет какого то более разумного варианта на PHP. За PHP ни кто ни чего так и не написал.

    SMESHARARAM
    Сообщений: 1
    Репутация: 0

    Сообщение # 13 | 06:54:18
    Лови)) вроде бы без iframe. На своём сайте пробовал,работает. 404 менять можно.
    http://uc-portaller.ru/load/33-1-0-3609

    Добавлено (16 Фев 2015, 06:54:18)
    ---------------------------------------------

    Цитата SMESHARARAM ()
    http://uc-portaller.ru/load/33-1-0-3609

    На IE всё работает.
    8b
    Сообщений: 1
    Репутация: 0

    Сообщение # 14 | 20:11:07
    SMESHARARAM, однако пор***ха там и все слова не та

    Добавлено (10 Ноя 2020, 20:18:33)
    ---------------------------------------------
    А реализовать URL профиля легко

    Берем резиновый iframe

    <style>
    html, body, div, iframe {margin:0 !important;padding:0 !important;height:100% !important; width:100% !important; overflow:hidden;}
    iframe {display:block; border:none;}
    </style><iframe src="/index/8" scrolling="no"></iframe> (/index/8)

    Это в 404 А меню вставляем $USERNAME$

    При ошибке будет перекидывать на

    На персональную страницу с URL в вашем случае https://site.ru/username

    С системным шаблоном не пробовал так как у меня свой шаблон без системных кодов

    • Страница 1 из 1
    • 1
    Поиск: