Здесь на эту тему было прочитано много советов специалистов. Хотя иногда это было очень общим и не включало предложение не использовать решения Bootstrap или Flexbox для этой дилеммы.
Для всех тех из вас, у кого есть исторический набор фреймов HTML с несколькими фреймами, я хотел бы показать вам, как я сделал это преобразование из исходных файлов кода PHP. Будучи очень благодарным за все профессиональные советы, которые я лично смог собрать по переполнению стека, я хотел бы кое-что вернуть здесь.
Базовая структура макета выглядит следующим образом:
+---------------------------------------------------------+
| (1) |
+---------------------------------------------------------+
| (2) |
+---------------------------------------------------------+
| (3) | frameBody | (4) |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
+---------------------------------------------------------+
| (5) |
+---------------------------------------------------------+
Легенда:
(1) - Заголовок заголовка; (2) - фреймМеню; (3) - пользовательское меню; (4) - Меню пациента; (5) - Нижний колонтитул.
После успешного входа в систему с login.php
меня перенаправляют на site.php
, который берет на себя управление всем веб-сайтом. В этом файле управляются все условия перехода от условий к условиям и, таким образом, к соответствующим другим файлам PHP.
site.php
, однако, также заботится об основном макете веб-сайта, здесь в старом стиле frameset/frame/noframes (пожалуйста, извините за длинность примера кода, но я хочу показать вам, насколько красиво короткий и хорошо структурированный iframe решение может быть):
<?php
// Lots of definitions and introductory stuff, not relevant here
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=<?= strtolower($CHARSET) ?>" />
<meta name="author" content="whoever" />
<meta name="date" content="<?= date('r', filectime($_SERVER['SCRIPT_FILENAME'])) ?>" />
<title><?= $sCompanyName ?></title>
</head>
<frameset name="alles" cols="20,*,20" framespacing="0" frameborder="0" border="0" />
<frameset rows="20,50,120,*,40,20" framespacing="0" frameborder="0" border="0" />
<frame name="headerTitle" src="frameHeader.php" scrolling="no" noresize="noresize" />
<frame name="frameMenu" src="frameMenu.php" scrolling="no" noresize="noresize" />
<?php
if (isset($_REQUEST['sBody']) && $_REQUEST['sBody'] == 'login')
echo '<frame name="frameBody" src="login.php' . $sLanguageString . '">';
else {
?>
<frameset name="Frame1" cols="225,1,*,1,225" framespacing="0" frameborder="0" border="0">
<frame name="userMenu" id="userMenu" src="userMenu.php" />
<frame name="frameBody" src="<?= $sBody . (strlen($sURLParameterString) > 1 ? $sURLParameterString : '') ?>" />
<frame name="patientMenu" id="patientMenu" src="patientMenu.php"/>
</frameset>
<frame name="footerTitle" src="frameFooter.php" scrolling="no" noresize="noresize" />
</frameset>
<?php
}
?>
<noframes>
<body>
<?php
setSysMsg($oSysMsg->getExpression('general', 'noFrameSupport', 'This site is based on frames. But your browser doesn\'t support frames.<br />Your should choose another internet browser.'));
echo getLastSysMsg();
?>
</body>
</noframes>
</frameset>
</html>
Какие сейчас препятствия для легкой конверсии?