Страницы сайтов в модальном окне

InstantCMS 2.X
#1 30 сентября 2020 в 02:01
Друзья, подскажите плиз прием как упаковать страницу сайта в модальное окно.
Один раз случайно получилось но потом удалил и не смог повторить. помню что с помощью div.
Понравилось что на мобильной версии оно открывает таким приемом мгновенно, не надо ждать загрузки страницы. Как приложение.

Спасибо.
#2 30 сентября 2020 в 10:47
/forum/thread21964-1.html
instantcms.ru/addons/modal.html
#3 30 сентября 2020 в 12:27
Открыть просто но есть но.
1 Сходу могут не работать некоторые поля и js скрипты
2 Модальное окно из default шаблона для таких целей непригодно.

У меня есть решение goodmade.ru/instantcms2/237-avtopodgruzka-zapisei-i-prosmotr-zapisei-v-modalnom-okne.html
Но пункт 1 остаётся, возможно придётся подправлять под работу с вашими полями, js скриптами.
#4 1 октября 2020 в 17:26

Иллюстрация
1 — Создайте файл get_item_modal.css

  1.  
  2. body.modal_opened{ }
  3.  
  4. .getItemModal {
  5. display: none;
  6. position: fixed;
  7. z-index: 9999999;
  8. left: 0;
  9. top: 0;
  10. width: 100%;
  11. height: 100%;
  12. overflow: auto;
  13. background-color: rgb(0,0,0);
  14. background-color: rgba(0,0,0,0.4);
  15. }
  16.  
  17. .getItemModal::-webkit-scrollbar {
  18. display: none;
  19. }
  20. .getItemModal {
  21. -ms-overflow-style: none;
  22. scrollbar-width: none;
  23. }
  24.  
  25. .getItemModal-content {
  26. position: relative;
  27. background-color: #fefefe;
  28. margin: auto;
  29. padding: 0;
  30. border: 1px solid #888;
  31. width: 620px;
  32. padding:20px;
  33. border-radius:8px;
  34. box-shadow: 0 4px 8px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19);
  35. animation-name: animateshow;
  36. animation-duration: 0.4s;
  37. top:50px;
  38. }
  39.  
  40. .getItemModal.hidden {
  41. opacity: 0;
  42. transition: opacity 0.7s;
  43. }
  44. .getItemModal.hidden .getItemModal-content {
  45. opacity: 0;
  46. transition: opacity 0.4s;
  47.  
  48. }
  49.  
  50. .getItemModal-close {
  51. color: #aaa;
  52. float: right;
  53. font-size: 28px;
  54. font-weight: bold;
  55. margin-top:5px;
  56. margin-right:-18px;
  57. }
  58.  
  59. .getItemModal-close:hover,
  60. .getItemModal-close:focus {
  61. color: black;
  62. text-decoration: none;
  63. cursor: pointer;
  64. }
  65.  
  66. .getItemModal-header {
  67. padding: 2px 10px;
  68. margin-top:-20px;
  69. }
  70.  
  71. .getItemModal-body {}
  72.  
  73. .getItemModal-footer {
  74. padding: 2px 16px;
  75. background-color: #5cb85c;
  76. color: white;
  77. }
  78.  
  79.  
  80. @keyframes animateshow {
  81. from {top: -300px; opacity: 0}
  82. to {top: 50px; opacity: 1}
  83. }
  84.  
  85.  
  86.  
  87.  
  88. @media (max-width: 576px){
  89. .getItemModal-content {
  90. width:400px;
  91. box-sizing:border-box;
  92. }
  93. }
  94.  
  95.  
  96.  

2 - Создайте файл get_item_modal.js

  1.  
  2. $(document).ready(function(){
  3.  
  4.  
  5.  
  6.  
  7. $(document).on("click",".get_item_modal",function()
  8. {
  9.  
  10. renderGetItemModal();
  11. var getItemModal = $("#getItemModal");
  12. $(document).on("click",".getItemModal-close",function()
  13. { getItemModal.addClass('hidden'); setTimeout(function(){getItemModal.remove();$('body').removeClass('modal_opened');}, 500); });
  14.  
  15. url = $(this).attr('href');
  16.  
  17. $('#getItemModalWrap').load(url, '',
  18. function() {
  19.  
  20. $('body').addClass('modal_opened');
  21. getItemModal.show();
  22.  
  23. });
  24. return false;
  25.  
  26. });
  27.  
  28. });
  29.  
  30.  
  31.  
  32.  
  33. renderGetItemModal = function(is_title=false) {
  34.  
  35. if(!is_title){
  36. var header = '<h2></h2>';
  37. }else{
  38. var header = '';
  39. }
  40.  
  41. var modalHtml = [
  42. '<div id="getItemModal" class="getItemModal"><div class="getItemModal-content">',
  43.  
  44. '<div class="getItemModal-header">',
  45. '<span class="getItemModal-close">&times;</span>',
  46. '</div>',
  47.  
  48. '<div class="getItemModal-body">',
  49. '<div id="getItemModalWrap"></div>',
  50. '</div>',
  51.  
  52. '</div>',
  53. '</div>'].join('');
  54.  
  55. $('#getItemModal').remove();
  56.  
  57. $('body').append(modalHtml);
  58.  
  59. };
  60.  
  61.  
3 — Подключите эти два файла, например в файле main.tpl

4 - Для ссылок на запись добавьте класс get_item_modal
#5 2 октября 2020 в 13:33


Друзья, подскажите плиз прием как упаковать страницу сайта в модальное окно.
Один раз случайно получилось но потом удалил и не смог повторить. помню что с помощью div.
Понравилось что на мобильной версии оно открывает таким приемом мгновенно, не надо ждать загрузки страницы. Как приложение.

Спасибо.

@Happy2019

Всё это делается элементарно стандартными средствами системы. Создаёте страницу сайта, которую нужно показать в ajax-окне (или запись в типе контента, как вам удобно). Далее нам нужно вызвать это модальное окно. Предположим, вы хотите чтобы в сайдбаре была кнопка, при нажатии на которую открывались правила сайта. Или что-то еще. Создаём меню, в поле ссылка указываем ссылку на содержимое ajax-окна, а в поле класс пишем ajax-modal.

Готово. Теперь при нажатии на эту кнопку у вас открывается содержимое какой-либо страницы или записи. Обратите внимание, что открывается именно содержимое, без формы комментирования.

Вот вам пример. У меня есть сайт, где в определенном типе контента расположены организации. Мне понадобилось, чтобы внутри записи контента была кнопка, при нажатии на которую открывалось бы модальное окно с правилами добавления отзывов.



При нажатии на кнопку получаем:



Ну а далее всё зависит только от вашей фантазии — можно средствами css оформить это окно как душе угодно. Но, это уже другая история.
#6 3 октября 2020 в 11:45
makework, а вы гляньте на такое модальное окно на своём сайте
Иллюстрация
На мобильном оно вовсе обрезано по высоте и поле выбора города там не умещается. И вы тут стилями явно не смогли ничего сделать )
А теперь вы рекомендуете выводить в нём текст статьи ))
#7 3 октября 2020 в 17:35
GoodMade, как называется тема? Как упаковать "страницу". Выбор города является страницей?

На мобильном оно вовсе обрезано по высоте и поле выбора города там не умещается. И вы тут стилями явно не смогли ничего сделать )

GoodMade

А надо? Вы ещë мне про окно с уведомлениям на сайте расскажите — как более 4-х уже также не умещаются в область просмотра.
#8 3 октября 2020 в 21:40
А можно личную страницу в модальном окне вывести? Товар в интернет магазине?
#9 3 октября 2020 в 21:48


А можно личную страницу в модальном окне вывести? Товар в интернет магазине ?

@alexandr22

Конечно можно. Указываем ссылку users/{user.id} и также присваиваем ссылке класс ajax-modal. Получаем так



Повторюсь, вывести в модальном окне можно абсолютно всё, даже фильтр
#10 22 ноября 2020 в 21:03



Иллюстрация
1 — Создайте файл get_item_modal.css

  1.  
  2. body.modal_opened{ }
  3.  
  4. .getItemModal {
  5. display: none;
  6. position: fixed;
  7. z-index: 9999999;
  8. left: 0;
  9. top: 0;
  10. width: 100%;
  11. height: 100%;
  12. overflow: auto;
  13. background-color: rgb(0,0,0);
  14. background-color: rgba(0,0,0,0.4);
  15. }
  16.  
  17. .getItemModal::-webkit-scrollbar {
  18. display: none;
  19. }
  20. .getItemModal {
  21. -ms-overflow-style: none;
  22. scrollbar-width: none;
  23. }
  24.  
  25. .getItemModal-content {
  26. position: relative;
  27. background-color: #fefefe;
  28. margin: auto;
  29. padding: 0;
  30. border: 1px solid #888;
  31. width: 620px;
  32. padding:20px;
  33. border-radius:8px;
  34. box-shadow: 0 4px 8px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19);
  35. animation-name: animateshow;
  36. animation-duration: 0.4s;
  37. top:50px;
  38. }
  39.  
  40. .getItemModal.hidden {
  41. opacity: 0;
  42. transition: opacity 0.7s;
  43. }
  44. .getItemModal.hidden .getItemModal-content {
  45. opacity: 0;
  46. transition: opacity 0.4s;
  47.  
  48. }
  49.  
  50. .getItemModal-close {
  51. color: #aaa;
  52. float: right;
  53. font-size: 28px;
  54. font-weight: bold;
  55. margin-top:5px;
  56. margin-right:-18px;
  57. }
  58.  
  59. .getItemModal-close:hover,
  60. .getItemModal-close:focus {
  61. color: black;
  62. text-decoration: none;
  63. cursor: pointer;
  64. }
  65.  
  66. .getItemModal-header {
  67. padding: 2px 10px;
  68. margin-top:-20px;
  69. }
  70.  
  71. .getItemModal-body {}
  72.  
  73. .getItemModal-footer {
  74. padding: 2px 16px;
  75. background-color: #5cb85c;
  76. color: white;
  77. }
  78.  
  79.  
  80. @keyframes animateshow {
  81. from {top: -300px; opacity: 0}
  82. to {top: 50px; opacity: 1}
  83. }
  84.  
  85.  
  86.  
  87.  
  88. @media (max-width: 576px){
  89. .getItemModal-content {
  90. width:400px;
  91. box-sizing:border-box;
  92. }
  93. }
  94.  
  95.  
  96.  

2 - Создайте файл get_item_modal.js

  1.  
  2. $(document).ready(function(){
  3.  
  4.  
  5.  
  6.  
  7. $(document).on("click",".get_item_modal",function()
  8. {
  9.  
  10. renderGetItemModal();
  11. var getItemModal = $("#getItemModal");
  12. $(document).on("click",".getItemModal-close",function()
  13. { getItemModal.addClass('hidden'); setTimeout(function(){getItemModal.remove();$('body').removeClass('modal_opened');}, 500); });
  14.  
  15. url = $(this).attr('href');
  16.  
  17. $('#getItemModalWrap').load(url, '',
  18. function() {
  19.  
  20. $('body').addClass('modal_opened');
  21. getItemModal.show();
  22.  
  23. });
  24. return false;
  25.  
  26. });
  27.  
  28. });
  29.  
  30.  
  31.  
  32.  
  33. renderGetItemModal = function(is_title=false) {
  34.  
  35. if(!is_title){
  36. var header = '';
  37. }else{
  38. var header = '';
  39. }
  40.  
  41. var modalHtml = [
  42. '',
  43.  
  44. '',
  45. '&times;',
  46. '',
  47.  
  48. '',
  49. '',
  50. '',
  51.  
  52. '',
  53. ''].join('');
  54.  
  55. $('#getItemModal').remove();
  56.  
  57. $('body').append(modalHtml);
  58.  
  59. };
  60.  
  61.  
3 — Подключите эти два файла, например в файле main.tpl

4 - Для ссылок на запись добавьте класс get_item_modal

GoodMade

Проверил. Метод рабочий, с одним "но" модальное окно отрывается по второму клику по ссылке. Подскажите пожалуйста, почему так может быть?
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.