4 / 4 / 0
Регистрация: 07.10.2016
Сообщений: 155
|
|||||||||||
1 | |||||||||||
Можно ли указать ссылку на текущую страницу без обновления?10.06.2022, 10:39. Показов 1931. Ответов 45
Метки нет (Все метки)
Всем привет.
Возник такой вопрос, как можно указать ссылку на текущую страницу, чтобы не было её обновления? Хотя может я некорректно выражаюсь, постараюсь объяснить более понятно. Есть страница, как на рисунке, выбран пункт меню #2, в результате чего в теле страницы отображаются данные соответствующие этому пункту меню. Задача, необходимо в теге <a href=...> указать ссылку к якорю и передать значение переменной. Поэтому, чтобы передать значение я указываю ссылку на эту же страницу, но тогда пункт меню автоматом ставится на #1. Если повторно уже нажать на ту же ссылку, то пункт меню уже не меняется. Пример такой:
Если же указать так:
Первый вариант меня в принципе устраивает, но крайне желательно, чтобы при переходе страницы на саму себя пункт текущего меню тоже не менялся. Если кто понял, что требуется и знает возможно ли это, пожалуйста посоветуйте.
0
|
10.06.2022, 10:39 | |
Ответы с готовыми решениями:
45
Из UserControl'a получить ссылку на текущую страницу Переход на текущую страницу без location Меню без ссылки на текущую страницу Закрыть доступ на прямую ссылку на страницу, без авторизации |
4 / 4 / 0
Регистрация: 07.10.2016
Сообщений: 155
|
||||||||||||||||
10.06.2022, 17:15 [ТС] | 3 | |||||||||||||||
Может я в синтаксисе ещё не совсем разобрался, но проблема и возникла ввиду того, что строка
0
|
2432 / 2282 / 594
Регистрация: 27.05.2011
Сообщений: 7,801
|
|||||||||||
10.06.2022, 17:23 | 4 | ||||||||||
Без вопроса, это я недостер. просто #win5
Добавлено через 2 минуты Создаю страницу из одной ссылки
?a=1 Кликаю, перехожу на ?a=1#anchor2 Все работает Добавлено через 2 минуты P.S. если echo путает, закрой просто пхп и пиши на чистом html
0
|
4 / 4 / 0
Регистрация: 07.10.2016
Сообщений: 155
|
|
10.06.2022, 17:37 [ТС] | 5 |
Хорошо, завтра попробую, кажется я понял о чём Вы говорите, но пока не уверен, что правильно понял. Сегодня уже нет сил думать, а завтра обязательно попробую
0
|
4 / 4 / 0
Регистрация: 07.10.2016
Сообщений: 155
|
||||||
11.06.2022, 07:22 [ТС] | 6 | |||||
Нет, не получилось. Возможно с GET это работает, когда передаётся простая переменная, а, если это значение из массива, то уже получить в другом скрипте путём GET нет возможности. Т. е. значение из массива записей БД, получаемые методом SELECT и хранящиеся в массиве $result в другом скрипте через GET уже не получить, именно для этого и нужно их передавать в переменной через адресную строку, как в этом случае:
Может у кого-то возникнут ещё какие-нибудь мысли?
0
|
1261 / 959 / 225
Регистрация: 01.10.2018
Сообщений: 3,713
|
|
11.06.2022, 10:22 | 7 |
Если вы хотите "подсвечивать" пункт меню на основе фрагмента (это ваш #win5), очевидно это нужно делать при помощи JS. "Фрагменты" не передаются на сервер, так что на PHP вы этого никак не сделаете.
Добавлено через 9 минут Их и не нужно получать "через GET". Все, что нужно, вы считываете повторно из базы данных (как группы записей, так и отдельные записи). Какую роль вообще играют у вас фрагменты? Такое ощущение, что это селекторы категорий для фильтрации. Если это действительно так, то лучше размещать селекторы в путях, например: /win5[?p=1] - первая страница списка объектов категории win5; /win5/1[?p=1] - форма редактирования объекта с идентификатором 1 категории win5 (строка запроса "?p=1" может использоваться для возврата на определенную страницу списка); и т.д. Я на этом целую CMS построил. Правда, в ней обычно "категории" - это точки доступа к коллекциям разнотипных объектов, т.е. хранящихся в разных таблицах, но при помощи представлений (или разделов) базы данных можно расщепить и одну таблицу на категории. Добавлено через 1 минуту Если с путями пока трудно работать, вот вам альтернативный вариант: /main.php?cat_id=win5[&p=1] /main.php?cat_id=win5&edit_id=1[&p=1] А для приближения к первому варианту можете попробовать такой вариант: /main.php?path=win5[&p=1] /main.php?path=win5/1[&p=1]
0
|
4 / 4 / 0
Регистрация: 07.10.2016
Сообщений: 155
|
|
11.06.2022, 13:30 [ТС] | 8 |
Что Вы имеете ввиду под фрагментами, якоря?
Лично у меня #win1-#win... это модальные окна. Есть БД, из которой в таблицу на странице выводятся данные, в конце каждой выведенной записи есть две ссылки <Редактировать> и <Удалить>. Так вот, когда нажимаешь <Редактировать>, то вот эта ссылка <a href=main.php?edit_id=".$result['id']."#win5>Редактировать< запускает модальное окно и соответственно через переменную edit_id передаётся id строки, которую нужно отредактировать, а в модальном окне выводятся все данные принадлежащие этому id. По крайней мере так всё работает, кроме того, что когда обновляется страница (href=main.php...), меню по умолчанию встаёт на первый пункт, а каждый пункт меню выводит на страницу свою таблицу и получается, что на странице уже отображаются записи не редактируемой таблицы, а совершенно другой, что очень неудобно. Но, если выбрать редактирование одной и той же строки повторно, то несмотря на обновление страницы (href=main.php...) меню уже не переключается, но кому нужно дважды редактировать одну и ту же строку? Это, конечно, не критично, но хотелось бы узнать, а можно ли как-то это обойти? Возможно я делаю что-то не так, когда я читал форумы по этому вопросу, там редактирование предлагали несколько иначе, с теми же модальными окнами через скрипты JS. Но у меня с одной стороны почти получилось проще, если не считать вот того неудобства с меню. Поэтому я и хочу узнать, есть ли какой то другой способ передать переменную при ссылке на якорь, не спользуя ссылку на страницу, либо же как можно обновить страницу, чтобы пункт меню не менялся?
0
|
1261 / 959 / 225
Регистрация: 01.10.2018
Сообщений: 3,713
|
|
11.06.2022, 15:44 | 9 |
Да. В оригинале якоря называются фрагментами.
Как можно переключаться при помощи меню, если окна модальные? Выше вам правильно написали. В адресах ссылок, предназначенных для открытия модальных окон (на текущей странице), не должно быть "сетевой составляющей", только фрагмент. Для передачи идентификатора можно использовать сам фрагмент или data-атрибут. Но как это сделать без использования JS, мне трудно представить. Вот это не совсем понятно. Вы при обозначении пунктов меню использовали знак номер, и я подумал, что переключение пунктов у вас тоже выполняется при помощи фрагментов. Как я написал выше, для отдельных таблиц точно не стоит использовать фрагменты, так что подсветку пунктов можно делать даже на сервере. Можно и на клиенте - все равно не будет конфликта фрагментов пунктов меню и фрагментов кнопок. Думаю, основная проблема все же в использовании модальных окон без JS. Если нужна альтернатива JS, то ее следует искать на стороне сервера Современные приложения так и работают: не запускается по каким-то непонятным причинам JS-прокладка, браузер выполняет прямое обращение к серверу, в результате чего открывается отдельная страница с формой редактирования. В последнем случае фрагменты часто вовсе не используются, в ссылках присутствуют адреса только с сетевой составляющей. А JS-прокладка может разобрать этот адрес для получения идентификатора или получить идентификатор отдельно через data-атрибут. JS-код модального окна обычно все равно выполняет запрос к серверу (но другим способом), т.к. данные объекта в списке могли быть неполными и т.п. Поэтому я и назвал этот код прокладкой.
0
|
4 / 4 / 0
Регистрация: 07.10.2016
Сообщений: 155
|
|
11.06.2022, 15:45 [ТС] | 10 |
Переключение меню не использует модальные окна, модальные окна включаются только когда нужно добавить запись, либо отредактировать.
Да, тут возможно я ввёл в заблуждение, на картинке # это просто обозначает порядковый номер, нужно было подписать, как №. Собственно это и ожидалось, иначе до меня бы уже давно было решение, но как говорится попытка не пытка, была надежда, что есть какое-то решение. Ведь почти получилось, да не совсем, видимо придётся дорабатывать через JS, а хотелось, как проще. Не плохо было бы и к фрагментам обращаться с возможностью передачи переменной, но увы есть как есть. А можете объяснить, почему когда при переходе по ссылке <a href=main.php?edit_id=".$result['id']."#win5>Редактировать< в первый раз, текущий пункт меню сбрасывается на первый, а второй и последующий разы меню уже не меняется? Тут не совсем мне понятно, меню выбирается через изменение класса, получается в первый переход класс сбрасывается по умолчанию где в HTML он прописан, а последующие разы уже нет или страница последующие разы уже не перерисовывается?
0
|
1261 / 959 / 225
Регистрация: 01.10.2018
Сообщений: 3,713
|
|
11.06.2022, 15:48 | 11 |
Я это понимаю Речь о том, что когда модальное окно активно, по идее не должно быть возможности переключаться при помощи меню.
0
|
4 / 4 / 0
Регистрация: 07.10.2016
Сообщений: 155
|
|
11.06.2022, 15:50 [ТС] | 12 |
Всё верно, при активном модальном окне никакого доступа к основной странице нет, соответственно и меню переключить нельзя, но содержимое страницы можно читать, вот поэтому и плохо, что при моём способе, после открытия модального окна, пункт меню автоматом переключается на первый. Вот это-то по факту и есть тот минус из-за которого я и поднял тему, а в остальном-то всё шикарно работает и без всяких скриптов JS
0
|
1261 / 959 / 225
Регистрация: 01.10.2018
Сообщений: 3,713
|
|
11.06.2022, 15:55 | 13 |
Сначала нужно понять, как у вас работает меню. Я не увидел в теме ничего кроме придуманного мной способа
0
|
4 / 4 / 0
Регистрация: 07.10.2016
Сообщений: 155
|
|
11.06.2022, 15:57 [ТС] | 14 |
Ну я в кратце уже объяснил Вам, как у меня работает меню. Через скрипт JS просто меняется класс на текущий и всё, а там уже по цепочке, что для каждого активного меню должно выводиться на страницу, то и выводится
0
|
1261 / 959 / 225
Регистрация: 01.10.2018
Сообщений: 3,713
|
|
11.06.2022, 16:00 | 15 |
В адресе должен присутствовать селектор таблицы, тогда можно сделать, чтобы подсветка пунктов не "слетала":
hyde.pageshop.ru/tables Добавлено через 1 минуту Так все-таки JS используется
0
|
4 / 4 / 0
Регистрация: 07.10.2016
Сообщений: 155
|
|
11.06.2022, 16:02 [ТС] | 16 |
Ну я скорее всего правильно понимаю, что первый раз при переходе по ссылке на саму себя, страница перерисовывается полностью, а соответственно текущим активным пунктом меню в HTML указан первый пункт. Последующие разы страница не перерисовывается. Вот, если бы и в первый переход можно было не перерисовывать, тогда было бы здорово, но без обновления страниц работает только ajax, как-то им замутить что ли?
Добавлено через 1 минуту Вообще, конечно, используется, у меня там много чего на JS. Просто данный отрезок сходу ПОЧТИ получился без JS, вот и хотел без него обойтись
0
|
168 / 124 / 42
Регистрация: 25.10.2019
Сообщений: 476
|
|
12.06.2022, 12:04 | 17 |
А правильно ли я понял, что ТС изобретает табы, самым костыльным путём? https://itchief.ru/examples/la... le=tabs-v1
Если область содержимого имеет статичную информацию. - css всё сделает. Если динамическая на каждом запросе - то только js ajax.
0
|
4 / 4 / 0
Регистрация: 07.10.2016
Сообщений: 155
|
|
13.06.2022, 04:12 [ТС] | 18 |
Всё верно, так сказать основное меню для вывода той или иной таблицы на страницу организованно именно так. Ну я так привык, если можно это делать как-то иначе буду благодарен за советы.
Информация динамическая, поэтому исключительно через ajax
0
|
168 / 124 / 42
Регистрация: 25.10.2019
Сообщений: 476
|
||||||||||||||||
13.06.2022, 09:02 | 19 | |||||||||||||||
VKont, не уверен, что прям на 100% понял задание. Не хватает данных.
Но раз мы выбрали ajax, то я понял всё так:
UPD. Вангую трудности о "совместимости атрибута ссылки" и логики php В этом случае мы сможем(из любого вида ссылки) "спарсить" именно значение. Это позволит и работать с массивами, и с запросами, и типизировать.
0
|
1261 / 959 / 225
Регистрация: 01.10.2018
Сообщений: 3,713
|
|
13.06.2022, 09:15 | 20 |
websyst_ru, автору нужна подсветка пунктов меню, в том числе после обновления страницы, так что одним "кликом" тут не обойдешься. Кроме того, возможен конфликт фрагментов пунктов меню и каких-то кнопок, поэтому лучше смотреть в сторону History API.
0
|
13.06.2022, 09:15 | |
13.06.2022, 09:15 | |
Помогаю со студенческими работами здесь
20
Как открыть форму по кнопке, в которой можно указать только ссылку? Можно ли сделать ссылку на конкретную страницу слайдера? Как сделать чтоб при нажатие на ссылку открывалось видео без обновления странице как ссылку сделать кнопкой добавления в друзья (ко мне) без захода на мою страницу Как в плагине добавить ссылку на страницу настроек(или другую страницу) Можно ли залить страницу на хостинг без cms, php и прочего? Выделить текущую ссылку в меню Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |