index.php<?php
header("Content-Type: text/html;charset=utf-8");
?>
<html>
<head>
<script type="text/javascript">
function ajaxcl (route) {
var xmlhttp;
if ( window.XMLHttpRequest ) {
xmlhttp = new XMLHttpRequest();
} else {
xmlhttp = new ActiveXObject ( "Microsoft.XMLHTTP" );
}
xmlhttp.onreadystatechange = function () {
if ( xmlhttp.readyState == 4 ) {
document.getElementById("content").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open ( "GET", "ajx.php?route="+route+"&rand="+Math.random(), true );
xmlhttp.send ();
return false;
}
</script>
<style type="text/css">
div{
border: 1px solid black;
}
width: 23%;
display: inline-block;
float: right;
}
width: 23%;
display: inline-block;
float: left;
}
width: 50%;
display: inline-block;
padding: 20px;
margin: 7px;
}
</style>
</head>
<body onload="ajaxcl('index')">
<div id="left">
left block<br />
<a onclick="ajaxcl('index')" href="#">Главная</a><br />
<a onclick="ajaxcl('about')" href="#">О Нас</a><br />
<a onclick="ajaxcl('contacts')" href="#">Контакты</a><br />
</div>
<div id="content"></div>
<div id="right">right block</div>
</body>
</html>
ajx.php<?php
header("Content-Type: text/html;charset=utf-8");
$route = isset($_GET['route']) ? $_GET['route'] : 'index';
$indexContent = 'Текст страницы INDEX';
$aboutContent = 'Текст страницы ABOUT';
$contactsContent = 'Текст страницы CONTACTS';
switch($route){
case 'index' :
$content = $indexContent;
break;
case 'about' :
$content = $aboutContent;
break;
case 'contacts' :
$content = $contactsContent;
break;
default :
$content = $indexContent;
break;
}
echo $content;
?>
ну в идеале данные контента страниц подтягиваются из БД - я тебе простейший пример показал.
SEO не дружелюбный вариант, хотя можно и параллельно из метатегами и титлом страницы управлять.
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker