Всем привет! Был у меня старенький сайт из 3-х Frame -ах.(1меню, 2основной_контент и 3новости). Решил переделать на Div-ах. Все сделал, но не понял, как открывать ссылки на php файлы в одном и том же Dive? То есть раньше у меня все ссылки в фрейме меню имели таргет на открытие в фрейме 2. А как теперь сделать также на DIV ? Изначально в Div основоной_контент указана общая инфа, а если нажать на другую ссылку из меню нужно чтобы эта инфа заменилась на другой контент (там будет инклуд php файла). Наверно, коряво изложил, но думаю суть понятна.
Добрый день! Если Вы имете страрый сайт, в котором ссылки открывались в iframe, а хотите в одном div то можно сделать просто на JS HTML: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Test</title> <style> #view_frame{display: none} #content{ border: 1px solid black; margin-top: 20px; } </style> </head> <body> <div> <a href="start.html" target = "view_frame">Oсновной_контент</a> <a href="page1.html" target = "view_frame" >Страница 1</a> <a href="page2.html" target = "view_frame" >Страница 2</a> <a href="page3.html" target = "view_frame" >Страница 3</a> </div> <div id="content"></div> <iframe src="" name="view_frame" id="view_frame" ></iframe> </body> <script> viewFrm = document.getElementById("view_frame"); viewDiv = document.getElementById("content"); viewFrm.src="start.html"; viewFrm.onload = (event) => { viewDiv.innerHTML = view_frame.document.body.innerHTML; }; </script> </html> start.html HTML: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> </head> <body> Основной контент </body> </html> page1.html HTML: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> </head> <body> Страница 1 </body> </html> page2.htm HTML: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> </head> <body> Страница 2 </body> </html> page3.html HTML: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> </head> <body> Страница 3 </body> </html> Удачи!
Спасибо за ответ, только возник вопрос, а вот весь контент, который на страницах 1,2,3 он загружается сразу? А потом только отображается при нажатии на конкретную ссылку? Дело в том, что на этих страницах у меня большие списки информации, а страниц таких около 30, и не хотелось бы, чтобы все это грузило сервер, а чтобы было так, что инфа загружалась только та, на которую нажал пользователь. Еще нашел такой скрипт, меняющий контент Div: Код (Text): <div id="myDiv"> <table> <tr><th> Добро пожаловать!</th></tr></table> </div> <button onclick="changeText()">Change Text</button> <script> function changeText() { const myDiv = document.getElementById("myDiv"); myDiv.innerHTML = "<table><tr> <th>Основной Контент </th></tr></table>"; } </script> Но он в строке myDiv.innerHTML = "<table><tr> <th>Основной Контент </th></tr></table>"; вставляет только HTML данные, а код PHP не вставляет, а у меня там должно быть вставка include "сontent.php"
Добрый день! Контент не загружается сразу, а только стартовая страница start.html Код (Javascript): viewFrm.src="start.html"; Если эту строку убрать, то странницы будут загружаться только по клику. Если страницы на PHP, то на сервере создаётcя и отправляется в браузер HTML документ. Например, если такой start.php PHP: <?PHP session_start(); $la = $_SESSION["la"]; $str["ru"]="Oсновной контент"; $str["en"]="Main content"; ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> </head> <body> <? echo $str[$la] ?> </body> </html> Если есть такой content.php PHP: <? echo $str[$la] то есно можно заменить на include PHP: <?PHP session_start(); $la = $_SESSION["la"]; $str["ru"]="Oсновной контент"; $str["en"]="Main content"; ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> </head> <body> <? include("content.php") ?> </body> </html> В Вашем примере строку Код (Javascript): myDiv.innerHTML = "<table><tr> <th>Основной Контент </th></tr></table>"; можно в PHP записть так PHP: Но он в строке myDiv.innerHTML = "<? include('content.php')?>"; Если в content.php PHP: echo "<table><tr> <th>Основной Контент </th></tr></table>"; Удачи!
@Vladimir Kheifets, на форуме PHP в разделе «PHP для новичков» сразу уводить ТС'а на JS – это западло. С таким подходом лучше постить на киберфоруме. Там JS сейчас в почете, а пых задвинули. @Paxan-1, то что вы спрашиваете – это основы работы PHP. Данный раздел предназначен все же для новичков, а не «нулевичков». Будет лучше, если вы с основами познакомитесь самостоятельно, а потом уже мы вам поможем. Либо, если вникать самому не интересно, можно попросить сделать за вас. Там халява предполагается, но особо не приветствуется. --- Добавлено --- P.S. Ваш хостинг поддерживает PHP/MySQL? Если да, лучше сделать нормально на PHP/MySQL, чем как попало на JS.
Если вникать самому не интересно и тем более не интересно платить за разработку, можно взять почти любую бесплатную CMS или какой-нибудь простой движок для морды сайта, например G-Drive. Там все просто: Код (Text): INSERT INTO `site_categories` (`id`, `name`, `content`, `bits`) VALUES ('', 'Home', '<h1>It works!</h1>\r\n<p>This is a home page.</p>', 0), ('page-1', 'Страница 1', 'Контент', 0), ('page-2', 'Страница 2', 'Контент', 0), ('page-3', 'Страница 3', 'Контент', 0); PHP: <!DOCTYPE html> <html> <head> <title><?= $page['name'] ?> | Site</title> </head> <body> <nav>здесь ваша менюшка</nav> <div> <?= $page['content'] ?> </div> </body> </html> Можно использовать и вложенные шаблоны, контроллеры и т.п.