[Другое] Публикация статей на сайтах

Статус
В этой теме нельзя размещать новые ответы.

poxa

Писатель
Регистрация
8 Янв 2009
Сообщения
6
Реакции
0
Требуется скрипт(небольшая CMS) публикации статей на сайтах.
Основная задача скрипта:
1. Каждый сайт состоит в группе и принадлежит какой-то теме
2. Публикация статей происходит в автоматическом режиме.
Есть уже некоторые наметки:
PHP:
<?php
// Адрес страницы
define('PAGE_NAME', 'Tovary_i_uslugi');
// Имя скрипта
define('SCRIPT_NAME', 'getNews.php');
// Title по умолчанию
define('TITLE', ' ');
@ini_set('max_execution_time', 600);
@ini_set('display_errors', 0);
// Путь до скриптов
define('DOC_ROOT', $_SERVER['DOCUMENT_ROOT'].'/');
// Адрес сервера
define('SERVER', 'wsproject.ru');
// Код портала
define('CODE', '92cb1599c6faecb88ffc9c2de22906b1');
// Хронилище статей
define('DB_FILE', 'getNews.db');
// Пораметр
define('PARAM_NAME', 'path');
// Расширение
define('EXT', '.html');
// Статус mod_rewrite
define('REWRITE', true);
// Количество новостей на странице
define('ARTICLE_ON_PAGE', 999);
// Количество ссылок на другие новости
define('RELINK_NEWS_COUNT', 5);
// Keywords по умолчанию
define('KEYWORDS', ' ');
// Description по умолчанию
define('DESCRIPTION', ' ');
if(isset($_GET['update'])) { print portal::Update(); }
elseif(isset($_GET['get'])) { switch ($_GET['get']) { case 'config': print serialize(array( 'code'=>CODE, 'level2'=>PAGE_NAME, 'title'=>TITLE, 'keywords'=>KEYWORDS, 'desctiptipn'=>DESCRIPTION )); break; } }
elseif(isset($_GET['page']) && isset($_GET['level']) && is_numeric($_GET['page'])) { $portal = new portal(); $level = $_GET['level']; if($level == 2) { foreach ($portal->getLevel($level) as $link => $cur) { if($cur['id'] == $_GET['page']) { header('Location: '.PAGE_NAME.'/'.$link.'.html'); die(); } } } header("HTTP/1.0 404 Not found"); print '<h1>Статья не найдена</h1>'; }
else
{
	$portal = new portal();
    ?>
КОД ШАБЛОНА САЙТА
<?php
}
// Класс портала
class portal { var $path; var $page; var $Content = array(); var $News = array(); var $shortList = array(); var $Title; var $Keywords; var $Description; var $Header; var $curNews = 0; var $curShort = 0; var $newsCount = 0; function __construct() { if(isset($_GET[PARAM_NAME]) && sizeof(explode('/', $_GET[PARAM_NAME])) == 1) { if(ereg('^'.PAGE_NAME.'[0-9]{0,3}$', $_GET[PARAM_NAME])) { preg_match('/[0-9]{0,3}$/', $_GET[PARAM_NAME], $match); $_GET['page'] = $match[0]; $_GET[PARAM_NAME] = substr($_GET[PARAM_NAME], 0, strlen(PAGE_NAME)); } } $this->path = explode('/', isset($_GET[PARAM_NAME]) ? $_GET[PARAM_NAME] : PAGE_NAME); $this->page = (int) (empty($_GET['page']) ? 0 : $_GET['page']); $this->levelWatch(); $this->botLogs(); } function portal() { $this->__construct(); } function getLevel() { $file = DOC_ROOT . DB_FILE; if( is_file($file) ) { $level = file_get_contents($file); $result = unserialize($level); $this->newsCount = sizeof($result); return $result; } else { return false; } } function getShortList($count) { $result = array(); $id = 0; foreach($this->shortList as $key=>$val) { if($this->curShort <= $id && $id < $this->curShort + $count) { $result[$key] = $val; } $id++; } $this->curShort += $count; return $result; } function getNewsList($count, $from = false) { if($from !== false) { $this->curNews = $from; } $result = array(); $id = 0; foreach($this->News as $key=>$val) { if($this->curNews <= $id && $id < $this->curNews + $count) { $result[$key] = $val; } $id++; } $this->curNews += $count; return $result; } function shortList($newsArr, $lev, $from = '', $count = RELINK_NEWS_COUNT, $pagenation = false) { $short = array(); $onpage = $count; $check = empty($from) ? true : false; foreach($newsArr as $key=>$item) { if( $key != $from && ( ($pagenation!==false && (int)($pagenation / $onpage) >= $this->page ) || $pagenation === false) ) { if($count != 0 && $check) { $short[] = array( 'link_only' => 0, 'link'=>(REWRITE ? '/' : '/'.SCRIPT_NAME.'?'.PARAM_NAME.'=').$lev.'/'.$key.EXT, 'name'=>$item['title'], 'text'=>$item['desc'], 'date'=>$item['date'], 'p'=>$item['p'] ); $count--; } } else { $check = true; } if($pagenation) { $pagenation = $pagenation + 1; } } return $short; } function levelWatch($pagenation = 1) { if( $this->path[0] == PAGE_NAME ) { $this->Content = $this->getLevel(); if( isset($this->path[1]) ) { $this->News = $this->Content[$this->path[1]]; $this->News['title'] .= isset($this->News['textis'][0]) ? ' - '.$this->News['textis'][0]['text'] : ''; $this->shortList = $this->shortList($this->Content, PAGE_NAME, $this->path[1]); } else { $this->News = $this->shortList($this->Content, PAGE_NAME, '', ARTICLE_ON_PAGE, $pagenation); } } $this->Title = isset($this->News['title']) ? $this->News['title'] : TITLE; unset($this->News['title']); $this->Keywords = isset($this->News['keys']) ? $this->News['keys'] : KEYWORDS; unset($this->News['keys']); $this->Description = isset($this->News['desc']) ? $this->News['desc'] : DESCRIPTION; unset($this->News['desc']); $this->Header = isset($this->News['h1']) ? $this->News['h1'] : false; } 	
	function Update()
	{
		$result = '';
		$Responce = file_get_contents('http://'.SERVER.'/pool/'.CODE);
		if($Responce == '') {
			$Responce = dn_get_contents();
			if ($Responce == '')
				return "get_contents - error;\n";
		}
		$newsArr = unserialize($Responce);
		if( portal::fileWrite( DOC_ROOT . DB_FILE, serialize($newsArr[2]) ) )
		{
			$result .= "level 2 - ok;\n";
		}
		else
		{
			$result .= "level 2 - error;\n";
		}
		return $result;
	}
 function fileWrite($file, $con) { if(!function_exists('file_put_contents')) { if (!$handle = fopen($file, 'w+')) { return false; } if (fwrite($handle, $con) === FALSE) { return false; } return true; } else { return file_put_contents($file, $con); } } function botLogs() { $logFile = DOC_ROOT . 'botLogs.log'; $ref = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : ''; $url = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : ''; $agent = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : ''; $ip = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : ''; if(substr_count($agent, 'Googlebot') || substr_count($agent, 'Yandex') || substr_count($agent, 'Rambler') ) { $log = date("Y-m-d H:j:s") . "\t{$agent} ({$ip})\t{$url}\t{$ref}\n"; if ($handle = fopen($logFile, 'a+')) { fwrite($handle, $log); } } } function getNavigationString($countPage = false, $curPage = false, $linkBase = false, $echo = false) { $countPage = $countPage !== false ? $countPage : (int) ($this->newsCount / ARTICLE_ON_PAGE); $curPage = $curPage !== false ? $curPage : $this->page; $linkBase = $linkBase !== false ? $linkBase : (REWRITE ? '/' : '/'.SCRIPT_NAME.'?'.PARAM_NAME.'=').PAGE_NAME; if(!function_exists('b')) { function b($p, $curPage) { if($curPage == ($p-1)) { return '<b>'.$p.'</b>'; } else { return $p; } } } $nav = ''; $countPage = ceil($countPage); if($countPage <= 1) { return $nav; } $nav .= '<p class="navstring">Страницы : '; $nav .= $curPage!=0 ? '&nbsp;<a href="'.$linkBase.($curPage-1).EXT.'" class="arrowback">&laquo;</a>&nbsp; ' : ''; if($countPage < 10) { for ($p = 0; $p < $countPage; $p++) { $nav .= '&nbsp;<a href="'.$linkBase.$p.EXT.'">'.b($p+1, $curPage).'</a>&nbsp; '; } } elseif($curPage < 9) { for ($p = 0; $p < 10; $p++) { $nav .= '&nbsp;<a href="'.$linkBase.$p.EXT.'">'.b($p+1, $curPage).'</a>&nbsp; '; } $nav .= ' ... '; $nav .= '&nbsp;<a href="'.$linkBase.($countPage-1).EXT.'">'.b($countPage, $curPage).'</a>&nbsp; '; } elseif( ($countPage - $curPage) < 9) { $nav .= '&nbsp;<a href="'.$linkBase.'.html">1</a>&nbsp; '; $nav .= ' ... '; for ($p = ($countPage - 10); $p < ($countPage ); $p++) { $nav .= '&nbsp;<a href="'.$linkBase.$p.EXT.'">'.b($p+1, $curPage).'</a>&nbsp; '; } } else { for ($p = 0; $p < 3; $p++) { $nav .= '&nbsp;<a href="'.$linkBase.$p.EXT.'">'.b($p+1, $curPage).'</a>&nbsp; '; } $nav .= ' ... '; for ($p = $curPage -2 ; $p < $curPage +3; $p++) { $nav .= '&nbsp;<a href="'.$linkBase.$p.EXT.'">'.b($p+1, $curPage).'</a>&nbsp; '; } $nav .= ' ... '; for ($p = ($countPage - 3); $p < ($countPage); $p++) { $nav .= '&nbsp;<a href="'.$linkBase.$p.EXT.'">'.b($p+1, $curPage).'</a>&nbsp; '; } } $nav .= $curPage!=($countPage-1) ? '&nbsp;<a href="'.$linkBase.($curPage+1).EXT.'" class="arrownext">&raquo;</a>&nbsp; ' : ''; $nav .= '</p>'; if($echo) { print $nav; return true; } else { return $nav; } }
	 }
	  	 		function dn_get_contents()
	{
		$fp = @fsockopen(SERVER,80);
		if(!$fp) return '';
		$out = 'GET /pool/'. CODE ." HTTP/1.0\r\nHost: ". SERVER ."\r\nConnection: Close\r\n\r\n";
		fwrite($fp, $out);
		while (!feof($fp))
		{
			@$val .= @fgets($fp, 128);
		}
		fclose($fp);
		$val = explode("\r\n\r\n", $val);
		$val = $val[1];
		return $val;
	} ?>
это вариант кода который размещается на сайте для публикации на нем статей, работает он совместно с файлами getNews.db(здесь хранится контент) и .htaccess(задается ЧПУ). Но вот разобраться как управляется данный скрипт пока не получилось.
Может есть бесплатная версия или помогите разобраться с управлением скрипта.
 
что значит "Публикация статей происходит в автоматическом режиме"? Статьи генерируются или они уже есть в базе и публикуются в запланированное время, или еще как-то?
Я бы заюзал под это дело WP с плагином article import - полный автомат получится.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху