Вернуться   Форум SAPE.RU > Система SAPE.ru > Вопросы по работе системы

-->
Ответ
 
Опции темы
Старый 28.08.2007, 21:21   #11
Специалист
 
Регистрация: 04.06.2007
Адрес: Saint-Petersburg, Russia
Сообщений: 106
Вес репутации: 0
extrasoft не любят в этих краяхextrasoft не любят в этих краях
Отправить сообщение для extrasoft с помощью ICQ
По умолчанию

<?php
ini_set("display_errors",1);
ini_set("max_execution_time",90);
error_reporting(E_ALL);
// ini_set("session.use_trans_sid",on);
// ini_set('session.use_cookies', true);
// ini_set('session.use_only_cookies', true);
ini_set('url_rewriter.tags', '');

error_reporting(E_ALL);

setlocale(LC_ALL,"ru_RU.CP1251");

// вспомогательные файлы
require("./config.php"); // настройки доступа к БД
require("./modules.php"); // файл описания модулей
require("./settings.php"); // настройки сайта
require("./tables.php"); // таблицы
require("./functions.php"); // глобальные функции

//$start_time = getmicrotime();
// подключаем классы
require("./classes/class.template.php");
require("./classes/class.item.php");
require("./classes/class.list.php");
require("./classes/class.tree.php");
require("./classes/class.pages.php");
require("./classes/class.sysmess.php");
require("./classes/class.mailer.php");
require("./classes/class.section.php");
require("./classes/class.meta.php");
require("./classes/class.site.php");
require("./classes/class.news.php");
require("./classes/class.banner.php");
require("./classes/class.settings.php");
require("./classes/class.settings_groups.php");
require("./classes/class.faq.php");
require("./classes/class.link.php");
require("./classes/class.counter.php");
require("./classes/class.checklink.php");
require("./classes/class.book.php");

// текущая страница
$page = getVar('page','default');

session_start();
$GLOBALS['systemMess'] = new cSysMessStack();

// соединение с MySQL сервером
if (!($db = mysql_connect($db_host, $db_username, $db_password)))
die(ERR_DB_NOT_CONNECTED);

//Устанавливаем кодировку БД
mysql_query("SET NAMES cp1251");
mysql_query("SET COLLATION_CONNECTION=CP1251_GENERAL_CI");

// выбор нужной БД
if (!mysql_select_db($db_dbname, $db))
die(ERR_DB_NOT_SELECTED);

//загружаем настройки
load_sets();

$GLOBALS['curr_node_id']=getInt('node_id',TREE_ROOT_NODE_ID);
//создаем дерево
$GLOBALS['tree'] = new cOrderedTree();
$GLOBALS['tree']->load();

//Возвращает id первого узла в массиве имен $urls. Каждый последующий элемент - родитель предыдущего
function getNodeId($urls)
{
if (count($urls)==0) return TREE_ROOT_NODE_ID;


$url=reset($urls);

//Смотрим: а есть ли вообще url_name? Может быть, явно указан id?
if (preg_match('/^rubric([0-9]+)$/i',$url,$regs))
{
$id=intval($regs[1]);
$sql="SELECT id FROM `".TABLE_SHOP_NODES."` WHERE id='".$id."'";
$res=doSQL($sql,__LINE__,__FILE__);
if (mysql_num_rows($res)) return $id;
return TREE_ROOT_NODE_ID;
}

//Пытаемся получить id прямой выборкой (с надеждой, что таких имен больше нет)
$sql = "SELECT id FROM `".TABLE_SHOP_NODES."` WHERE `url_name`='".$url."'";
$res = doSQL($sql,__LINE__,__FILE__);

//Если ничего не найдено, то такого узла нет
if (mysql_num_rows($res)<1)
return TREE_ROOT_NODE_ID;

//Если найден ровно один узел, то он - искомый
if (mysql_num_rows($res)==1)
{
$r=mysql_fetch_array($res);
return $r['id'];
}

//Если найдено более одного узла, то нужно учитывать еще и родительские узлы

//Убираем первый элемент массива и пытаемся искать
$new_urls=$urls;
foreach ($new_urls as $key=>$url)
{
unset($new_urls[$key]);
break;
}
$parent_id=getNodeId($new_urls);

$sql = "SELECT id FROM `".TABLE_SHOP_NODES."` WHERE `url_name`='".$url."' AND parent_id='".$parent_id."'";
$res = doSQL($sql,__LINE__,__FILE__);
$r=mysql_fetch_array($res);
return $r['id'];
}

//url_name
$curr_url_name = getVar('url_name');
$curr_node_id=TREE_ROOT_NODE_ID;
if (!empty($curr_url_name))
{
//получаем строку запроса
$req = $_SERVER['REQUEST_URI'];

//Отрезаем имя подпапки
$a=basename(get_set('site_host'));
$a='/'.$a.'/';

if (substr($req,0,strlen($a))==$a)
$req=substr($req,strlen($a));

$req=ereg_replace('page([0-9]+)[/]?$','',$req);
$req=ereg_replace('site_([0-9]+)\.html$','',$req);
//echo "Строка запроса $req<br>";

//Получаем все звенья пути к рубрике
$urls=explode("/",$req);
foreach ($urls as $key=>$url)
if ($url=='') unset($urls[$key]);
$urls=array_reverse($urls);
$curr_node_id=getNodeId($urls);
}

// подключаем страницу
require("./pages/page.".$PAGES[$page].'.php');

// инициализация шаблона
$tpl = new cTemplate('./templates');
// подключение главного шаблона страницы
$tpl->loadTemplateFile($PAGE_TEMPLATE);

// подключаем нужные модули и инициализируем их
foreach ($PAGE_MODULES as $module)
{
require_once("modules/mod.".$MODULES[$module][0].".php");
$OBJECTS_MOD[$module] = new $MODULES[$module][1]();
$OBJECTS_MOD[$module]->Init();
}

// запускаем
foreach ($PAGE_MODULES as $module)
$OBJECTS_MOD[$module]->Run();

define('_SAPE_USER', '!!!');
require_once($_SERVER['DOCUMENT_ROOT'].'/'._SAPE_USER.'/sape.php');
$sape = new SAPE_client();
$PAGE_LINKS = $sape->return_links();

// собираем страницу
$tpl->parseBlock('_INIT', array(
'PAGE_TITLE' => $PAGE_TITLE,
'PAGE_DESCRIPTION' => $PAGE_DESCRIPTION,
'PAGE_KEYWORDS' => $PAGE_KEYWORDS,
'PAGE_LINKS' => $PAGE_LINKS,
'BASE_HREF' => str_replace('index.php','','http://'.$_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME'])));

// и отображаем
$tpl->show();

mysql_close($db);
//echo getmicrotime()-$start_time;
?>
extrasoft вне форума   Ответить с цитированием
Старый 28.08.2007, 21:31   #12
Специалист
 
Регистрация: 04.06.2007
Адрес: Saint-Petersburg, Russia
Сообщений: 106
Вес репутации: 0
extrasoft не любят в этих краяхextrasoft не любят в этих краях
Отправить сообщение для extrasoft с помощью ICQ
По умолчанию

Я думаю, должно быть как-то так.

Не забудьте новый макрос разместить в теле шаблонов. Например, в общем хэдере.

Ну и конечно подставить свой Id партнера.

Изменения - в конце кода, надеюсь сами найдете и поймете.
extrasoft вне форума   Ответить с цитированием
Старый 29.08.2007, 16:52   #13
Новичок
 
Регистрация: 28.08.2007
Сообщений: 10
Вес репутации: 0
BotaniQ на пути к лучшему
По умолчанию

extasoft - спасибо - работает
BotaniQ вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Установка кода на SMF DkWix Установка кода на различные движки 60 28.05.2016 15:57
Установка кода skat Вопросы от новичков 3 08.07.2010 19:04
Установка кода на Elg partner Установка кода на различные движки 0 10.06.2008 14:49
Установка кода на CMS 2++ stranger Установка кода на различные движки 1 12.02.2008 19:32
Установка кода на IPB 2.X.X V!rus Ошибки при работе с системой 4 29.08.2007 20:38


Часовой пояс GMT +3, время: 02:40.