Pull to refresh

Как перенести сайт из Google Sites на свой хостинг

Сегодня я бы хотел поделиться своим костыльным велосипедом как перенести сайт с Google Sites (GS) на свой хостинг.



Код


index.php
<?
include "_config.php";
error_reporting(0);
$param=$_GET["param"];
if($param==$_index_page OR $param==$_index_page.'/'){
	$param='';
}
$url = strtolower('https://sites.google.com/site/'.$_google_sites_sitename.'/'.$param);
if (file_get_contents($url)){
	$content = file_get_contents($url);
	include '_parser.php';
	include '_header.php';
	echo $content;
	
	$file_info = new finfo(FILEINFO_MIME);
	$mime_type = $file_info->buffer($content);
	Header ('Content-type: '.$mime_type);
	
	$widgeturl = 'http://'.$_site_url.'/'.$param;
	include "_comments.php";
}else{
	$url='http://'.$_site_url.'/error.php?code=404';
	$content = file_get_contents($url);
	echo $content;
}
?>

Хотел бы прокомментировать код, но здесь и так все ясно.

Далее — _config.php
<?
$_site_url = 'blastorq.url.ph/oldsite';
$_google_sites_sitename = "blastorq";
$_index_page = 'landing';

$_site_url — Адрес сайта на хостинге.
$_google_sites_sitename — Адрес сайта GS без «sites.google.com/site/», у меня, как видите, «sites.google.com/site/blastorq»
$_index_page — Главная страница сайта, то есть та, что… ну, вы поняли. Во всех она обычно index, но у меня — landing.

Потом у нас "_parser.php" — он парсит страницы гугл-сайта, заменяет адреса и т.п.
<?php
	$content = str_replace('<a href="https://sites.google.com/site/'.$_google_sites_sitename.'/" ', '<a href="http://'.$_site_url.'/" ', $content);
	$content = str_replace('https://sites.google.com/site/'.$_google_sites_sitename.'/', 'http://'.$_site_url.'/', $content);
	$content = str_replace('/site/blastorq', '/oldsite', $content);
	$content = str_replace('type="image/x-icon" href="//www.google.com/images/icons/product/sites-16.ico"', 'href="http://'.$_site_url.'/favicon.png" type="image/png"', $content);
	$content = str_replace('<link rel="canonical" href="http://blastorq.url.ph/', '<link rel="canonical" href="http://'.$_site_url.'/', $content);
	$script="if(document.getElementById('sites-chrome-sidebar-left').style.display=='block'){document.getElementById('sites-chrome-sidebar-left').style.display='none';document.getElementById('sites-canvas-wrapper').style.display='block';document.getElementById('displayer').style.background='no-repeat url(http://'.$_site_url.'/pad.png) 1px 0'}else{document.getElementById('sites-chrome-sidebar-left').style.display='block';document.getElementById('displayer').style.background='no-repeat url(http://'.$_site_url.'/pad.png) -16px 0';document.getElementById('sites-canvas-wrapper').style.display='none';}";
	$content = str_replace('-header-horizontal-nav-container" role="navigation">', '-header-horizontal-nav-container" role="navigation"><div id="displayerr" onclick="'.$script.'"><div id="displayer"></div>', $content);
?>

Здесь также почти все понятно.

Еще именно здесь добавляется кнопка для сокрытия/показа сайдбара на телефонах.

Контент:


Сайдбар:


Поехали дальше и у нас "_header.php"
<meta charset="utf-8">
<meta name="viewport" content="width=device-height, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no" />
<meta name="HandheldFriendly" content="True" />
<style>#sites-chrome-footer-wrapper, #sites-chrome-adminfooter-container, .goog-te-ftab-float, #:0.floatContainer, .goog-te-ftab-frame, .skiptranslate, #:0.floatContainer {display:none;}</style><?php
if(**Функция проверки девайса на мобильность**){echo "<style>#sites-chrome-sidebar-left{display:none;}#displayerr{margin:8px;padding:8px;background:#999999;width:17px;border-radius:5px;}#displayer{width: 17px;height: 16px;background: no-repeat url('http://blastorq.url.ph/oldsite/pad.png') 1px 0;}</style>";}?>

Только что мы пытались прикрутить css-стили для кнопки, о которой мы говорили выше.
Функция проверки девайса на мобильность
$useragent=$_SERVER['HTTP_USER_AGENT'];
if(preg_match('/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i',$useragent)||preg_match('/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i',substr($useragent,0,4))){echo "Мобила";}else{echo "Комп";}?>

В _comments.php вы можете поставить блок комментариев, не буду позориться.

Вон код на GitHub: image
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.