Рейтинг:0

Как отобразить контактную форму, не зависящую от системы управления контентом, которую я разработал, только без iframe?

флаг sg

Я разработал простой, независимая от системы управления контентом[1] Контактная форма PHP-HTML-JavaScript-CSS, которую я обычно встраиваю в iframe, но я больше не хочу использовать iframe из-за того, что форма частично отображается на мобильном дисплее, и для просмотра всего этого требуется прокрутка.

Я могу использовать этот CSS как частичное решение:

Экран @media и (max-width:733px) {
    #prcf_iframe {
        высота: 547 пикселей;
    }
}

Это не «пиксельное идеальное» решение и не что-то близкое к пиксельному идеальному, потому что на некоторых мобильных дисплеях форма либо все еще имеет некоторую область прокрутки, либо, на других мобильных дисплеях, внезапно появляется дополнительная «мертвая зона».


Как я могу показать эту независимую от CMS форму в Drupal без использования iframe?
1. Из-за того, что форма по своему дизайну не зависит от CMS, она также не должна быть частью модуля Drupal.

Jaypan avatar
флаг de
Форма только HTML? Что происходит при подаче — отправляются ли данные? Получено из удаленного API? Отправлено в удаленный API?
флаг sg
@Jaypan форма представляет собой файлы PHP, содержащие HTML, а также файлы JS и файлы CSS. Данные отправляются в мою учетную запись Gmail, поэтому я не боюсь SQL-инъекций.
Jaypan avatar
флаг de
Вы можете попробовать вставить все это в тело узла как есть. Убедитесь, что тело узла допускает полный текст.
флаг sg
@Jaypan исходный код формы несколько модульный и состоит из различных файлов и каталогов. Я могу создать один большой кластер, но предпочитаю этого не делать, потому что мне сложно поддерживать код ("опечатка в строке 500"). Возможно, вы хотели скомпилировать все в HTML раньше, но, к сожалению, я не знаю такого компилятора, который сделает из всего один гигантский HTML.
Jaypan avatar
флаг de
Ну, или так, или делайте это правильным способом Drupal. Но вы не хотите делать это правильно, как в Drupal, поэтому ваши возможности ограничены. Я предполагаю, что другой вариант - поместить файл в вашу файловую систему и связать с ним - Drupal не будет создан в случае, если фактический файл существует. Однако вы не получите ничего из Drupal, включая тему или что-то еще.
флаг sg
@Jaypan Я готов сделать это и в Drupal (контакт или веб-форма), но если я могу использовать эту конкретную форму, независимую от CMS, лучше всего, по крайней мере, в некоторых обстоятельствах. Я не совсем понял «перетащите файл в вашу файловую систему и свяжите его», если вы хотите сделать его отдельным файлом без эстетики темы, чем нет, я согласен, что не должен этого делать.
Jaypan avatar
флаг de
Способы Drupal заключаются в создании модуля и использовании Form API для создания вашей формы, изменения веб-формы или изменения контактной формы.Затем вы прикрепите свой CSS/JS к форме в зависимости от того, какой метод вы выберете.
Jaypan avatar
флаг de
И да, вы меня правильно поняли насчёт закидывания файла в вашу файловую систему.
apaderno avatar
флаг us
Показывать независимую от CMS форму в Drupal — плохая идея. Если целью является ввод данных, которые будет использовать внешний API, форма Drupal с обработчиком отправки, который отправляет данные на сайт внешнего API, — это путь, если у вас уже есть сайт Drupal. Понятно, что это зависит от того, какой тип интеграции с Drupal требуется. Я так понимаю интеграция с друпалом нужна, иначе не покажешь внешнюю страницу в друпале.
Рейтинг:1
флаг cn

«Форма, не зависящая от CMS, которая не является частью модуля Drupal», также может считаться «сторонним PHP-скриптом», что представляет угрозу безопасности.

Вы сами написали этот код, так что можете поручиться за него. Но вы в основном спрашиваете: «Как я могу внедрить PHP-скрипт в Drupal?», чего Drupal не хочет, чтобы вы делали, поскольку он может обойти различные функции безопасности Drupal.

Это означает, что ответ на ваш вопрос: «Это сложно, и будут компромиссы».

Вот три подхода, которые вы можете использовать.

Подход: Разместите скрипт на том же сервере, но отдельно от Drupal.

Один из подходов состоит в том, чтобы разместить сценарий в собственном каталоге на вашем сервере, а затем исключить этот каталог из Drupal. Это исключение можно сделать на уровне сервера, чтобы Drupal никогда не видел скрипт, а скрипт не видел Drupal.

В этом случае скрипт не будет частью сайта Drupal, поэтому у вас не будет темы.

Конфигурация сервера зависит от вашего сервера; вы можете погуглить.

Подход: встроить его в iframe

Вы сказали, что вам не нравится прокрутка в ваших фреймах, но есть много библиотек JS, чтобы обойти это, например iframe-изменение размера. Однако это вопрос о переполнении стека.

Подход: использовать веб-форму

Перепишите форму, чтобы использовать Веб-форма модуль. Да, это больше не будет зависеть от CMS. Но Webform — это один из лучших вспомогательных модулей Drupal, который может делать практически все — многие организации выбирают Drupal из-за этого модуля. Таким образом, он, очевидно, может работать с контактной формой любой сложности, и это даст вам полную интеграцию с Drupal.

Рейтинг:0
флаг id

Использовать PHP-модуль, на свой страх и риск.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.