Создание страниц при помощи SSI.php

Автор Mavn, 15 Октябрь 2009, 16:12:08

« назад - далее »

0 Пользователи и 1 Гость просматривают эту тему.

Mavn

15 Октябрь 2009, 16:12:08 Последнее редактирование: 05 Ноябрь 2010, 05:48:40 от digger
Думаю далеко не все в курсе того, что при помощи файлика SSI.php можно создавать свои страницы которые будут вписываться в дизайн форума, причем сделать это будет очень легко. Довольно простое решение, которое и решили оформить в виде документации.

<?php
//Load SSI
require(dirname(__FILE__) . '/SSI.php');

//Page title
$context['page_title'] = 'Заголовок страницы';
$context['page_title_html_safe'] = 'Заголовок страницы';

// Set up linktree
$context['linktree'][] = array(
  
'url' => $_SERVER['PHP_SELF'],
  
'name' => 'пункт меню linktree ',
);

// Initialize the template
template_init();

// Load headers
template_header();

// Load template function
template_main();

// Load footer
template_footer();

// Set up the main template
function template_main()
{

echo 
'Привет МИР!!!!!!!!!!!';
}

?>



а теперь разберем что за что отвечает

$context['page_title'], $context['page_title_html_safe'] - указываем заголовок страницы, поскольку в разных версиях SMF используются разные переменные то соотвественно и указываем 2 переменные.

// Set up linktree
$context['linktree'][] = array(
  
'url' => $_SERVER['PHP_SELF'],
  
'name' => 'пункт меню linktree ',
);

Пункт меню навигации. Для того, чтобы указать руками ссылку, куда должно нас перенаправлять при нажатии, делаем следущее:
 'url' => $_SERVER['PHP_SELF'], меняем на  'url' => 'http://www.simplemachines.ru',

template_header(); подгружаем шапку
template_main(); подгружаем наше наполнение
template_footer(); подгружаем подвал

function template_main() информация между шапкой и подвалом.

как видите всего несколько срочек кода и страница готова.

Пример можно посмотреть при использовании Яндекс и Гугл поиска на нашем форуме.

PS Для тех кто еще не в курсе при наведении мыши на строку поиска появится выбор поисковых систем
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

Gnostis

ТО ли руки из ж, тол лыжи плохо едут.

Есть внутренний сайт Site.local на нем кртится форум site.local/forum, в корне сайта создал файл site.local/webmorda.php куда полностью скопировал весь текст примера.
Но возникла проблема сгенерированная страница использует не совсем верные пути, вместо site.local/forum/Theme/.... использует site.local/Theme/...
Аналогично с меню, site.local/index.php

Движок SMF RC2. Есть два варианта либо Apach/php не верно сконфигурированы, либо форум указывает не верные пути.

Mavn

у себя только что сделал проблем не заметил все пути нормально отображаются!
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

Gnostis

Форум изначально устанавливался на  site.local, после переехал на site.local/forum, все пути были исправлены через repair_setings.php, завтра буду курить значит в чем проблема...

Gnostis

С проблемой разобрался. Отлаживал я все заходя по IP  адресу сервера. Если обращаться по псевдониму все работает на ура.
Спасибо, за статью =)

sinner

Вместо заголовка пишется адрес страницы. Как это можно исправить?

Заранее спасибо!

Drakonsa

Цитата: sinner от 20 Ноябрь 2009, 16:39:28
Вместо заголовка пишется адрес страницы. Как это можно исправить?

Заранее спасибо!
//Page title
$context['page_title'] = 'Заголовок страницы';
$context['page_title_html_safe'] = 'Заголовок страницы';
Есть?

sinner

Цитата: Drakonsa от 20 Ноябрь 2009, 23:26:26
//Page title
$context['page_title'] = 'Заголовок страницы';
$context['page_title_html_safe'] = 'Заголовок страницы';
Есть?

Вот что у меня:

<?php
//Load SSI
require(dirname(__FILE__) . '/SSI.php');

// Initialize the template
template_init();

// Load headers
template_header();

// Load template function
template_main();

// Load footer
template_footer();


//Page title
$context['page_title'] = 'Заголовок страницы';
$context['page_title_html_safe'] = 'Заголовок страницы';

// Set up linktree
$context['linktree'][] = array(
  
'url' => $_SERVER['PHP_SELF'],
  
'name' => '/',
);

// Set up the main template
function template_main()
{

echo 
'страничка...';
}

?>
   



http://kidsforum.kulichki.com/pages1.php - страничка.

Drakonsa

Цитата: sinner от 21 Ноябрь 2009, 08:04:19
Вот что у меня:

http://kidsforum.kulichki.com/pages1.php - страничка.
<?php
//Load SSI
require(dirname(__FILE__) . '/SSI.php');

//Page title
$context['page_title'] = 'Заголовок страницы';
$context['page_title_html_safe'] = 'Заголовок страницы';

// Set up linktree
$context['linktree'][] = array(
  
'url' => $_SERVER['PHP_SELF'],
  
'name' => '/',
);

// Initialize the template
template_init();

// Load headers
template_header();

// Load template function
template_main();

// Load footer
template_footer();


// Set up the main template
function template_main()
{

echo 
'страничка...';
}

?>
 


[/php]

sinner

Спасибо!!! Всё заработало. Теперь у меня на форуме есть всё)

:)

maks47

Вопросы
1- что нужно добавить чтобы пользователи могли комментировать ?
2 - При помощи чего проще составить страницу ? Т.е. добавление картинок(к примеру текст обтекал картинку), чтобы было понятно пользователю. Текст оформить отдельно и добавить в базовый файл.

ksamochkin

у меня ошибку выдает Fatal error: Cannot redeclare ssi_shutdown() (previously declared in...............SSI.php on line 199

Mavn

смотрите свой файл ssi функция ssi_shutdown()  прописана несколько раз
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

ksamochkin

1 раз

// This shuts down the SSI and shows the footer.
function ssi_shutdown()
{
if (!isset($_GET['ssi_function']) || $_GET['ssi_function'] != 'shutdown')
template_footer();
}

Buranek

maks47, хош комменты, ставь тинипортал или симплпортал, там создавай статью и ставь флажок напротив включить комменты  настройках статьи.

trora

форум в утф8
страница создается, правда в нотепад++ приходится преобразовывать в утф8 текст на русском.
подскажите как в страницу вставить код
<div id="p4ydocid_">загрузка...</div><script language="Javascript" SRC="http://адрес сайта/utf8/"></script>
в хтмл страницу- просто, а в пхп- ну никак не получается.
(чую- не хватает каких то тэгов пхп... может скобок или еще чего... )
я не доллар чтоб всем нравиться

Mavn

покажи свою страницу и чего делал и что нужно получить в итоге
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

trora

http://www.z0w.ru/forum/upload.html
эта- работает
http://www.z0w.ru/forum/upload2.php эта- нет
хотел вставить скрипт отправки фотки в пхп страницу- не получилось. пробовал по всякому, разумеется кроме правильного решения idiot
вставлял в страницу- сделанную по вашему примеру
код
<?php
//Load SSI
require(dirname(__FILE__) . '/SSI.php');

// Initialize the template
template_init();

// Load headers
template_header();

// Load template function
template_main();

// Load footer
template_footer();


//Page title
$context['page_title'] = 'Заголовок страницы';
$context['page_title_html_safe'] = 'Заголовок страницы';

// Set up linktree
$context['linktree'][] = array(
  
'url' => $_SERVER['PHP_SELF'],
  
'name' => 'пункт меню linktree ',
);

// Set up the main template
function template_main()
{

echo 
'12345 фото';
}

<
div id="p4ydocid_">загрузка...</div><script language="Javascript" SRC="http://pic4you.ru/uploadform/1277/utf8/"></script>

?>


я не доллар чтоб всем нравиться

Mavn


function template_main()
{
echo 
'12345 фото';
echo 
'<div id="p4ydocid_">загрузка...</div><script language="Javascript" SRC="http://pic4you.ru/uploadform/1277/utf8/"></script>';
}

?>
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

trora

Mavn   спасибо. я б не додумался что скрипт надо просто вывести как сообщение, а не исполнять как код
я не доллар чтоб всем нравиться

cshome

А как сделать доступ к данной странице только после авторизации? Что бы к ней доступа без авторизации на форуме не было?

Mavn

SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

Солярис

При помощи размещенных здесь инструкций попытался создать подобную страницу у себя на форуме. Делал все в точности как указано в первом сообщении
Но получились кривое отображение:
1. В области приветствия пользователя не отображаются баннеры, которые добавляются в Ad Managment
2. В области копирайтов присутствует только упоминание про сайтмэп, копирайты движка отсутствую.

В чем может быть проблема? Может в самом файле SSI ошибки имеются?
Кстати, если перезалить файл SSI из дистрибутива будут ли работать после этого различные моды? Этот файл может быть с ними каким-либо образом связан?

Заранее спасибо за помощь.

Vyrd

Спасибо! Удобно создавать страницы таким способом.

А вот если мне например нужно на созданной странице поменять шапку (диз.) и изменить некоторые параметры самой страницы в плане дизайна, но чтоб основная тема форума была без изменений?
SMF 1.1.11 и SMF 2.0 RC5

Mavn

Теоретически просто
Вариант 1
1. Создаем файл index.template.php с нужной шапкой
2. Создаем папку Themes/new-theme
3. Кладем в папку index.template.php все стили картинки скрипты на примере можно посмотреть в соседней папке например core что там лежит помимо файла.
4. Устанавливаем тему оформления
5. Делаем вызов темы оформления через ssi $ssi_theme = '5'; где 5 id темы оформления который можно посмотреть в списке тем оформления!

Вариант 2
Переопределить переменную template_header например назвать template_header_myself и соотвественно переписать header под себя выделив его например в отдельный файл а в самом верху файла страницы сделать вызов файла как это делается с SSI.php
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

Vyrd

Спасибо!
пошёл по первому пути :)......и  дошёл уже как раз-таки до " $ssi_theme = '5'; " и не пойму, в какое место вписать?
SMF 1.1.11 и SMF 2.0 RC5

Mavn

SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

maugli77

24 Сентябрь 2010, 18:04:59 #27 Последнее редактирование: 24 Сентябрь 2010, 21:36:14 от maugli77
Здравствуйте! Извините за глупый вопрос. Подскажите пожалуйста куда в данном коде(из первого поста)
<?php
//Load SSI
require(dirname(__FILE__) . '/SSI.php');

// Initialize the template
template_init();

// Load headers
template_header();

// Load template function
template_main();

// Load footer
template_footer();


//Page title
$context['page_title'] = 'Заголовок страницы';
$context['page_title_html_safe'] = 'Заголовок страницы';

// Set up linktree
$context['linktree'][] = array(
  
'url' => $_SERVER['PHP_SELF'],
  
'name' => 'пункт меню linktree ',
);

// Set up the main template
function template_main()
{

echo 
'Привет МИР!!!!!!!!!!!';
}

?>
 

нужно вставить код для редиректа у меня он такой
header('Location: '.urldecode($_GET['url']));
Чтобы данную страницу можно было использовать для файла редиректа  go.php

sss2019

КАк правильно сделать страницу для smf 2?

Я все сделал как написал manv, вот так

<?php
//Load SSI
require(dirname(__FILE__) . '/SSI.php');

// Initialize the template
template_init();

// Load headers
template_header();

// Load template function
template_main();

// Load footer
template_footer();


//Page title
$context['page_title'] = 'Заголовок страницы';
$context['page_title_html_safe'] = 'Заголовок страницы';

// Set up linktree
$context['linktree'][] = array(
  
'url' => $_SERVER['PHP_SELF'],
  
'name' => 'пункт меню linktree ',
);

// Set up the main template
function template_main()
{

echo 
'Привет МИР!!!!!!!!!!!';
}

?>


Но у меня не отображается заголовок страницы и пункт меню linktree.

digger®

Цитата: sss2019 от 04 Ноябрь 2010, 08:36:40
КАк правильно сделать страницу для smf 2?

Я все сделал как написал manv, вот так

<?php
//Load SSI
require(dirname(__FILE__) . '/SSI.php');

// Initialize the template
template_init();

// Load headers
template_header();

// Load template function
template_main();

// Load footer
template_footer();


//Page title
$context['page_title'] = 'Заголовок страницы';
$context['page_title_html_safe'] = 'Заголовок страницы';

// Set up linktree
$context['linktree'][] = array(
  
'url' => $_SERVER['PHP_SELF'],
  
'name' => 'пункт меню linktree ',
);

// Set up the main template
function template_main()
{

echo 
'Привет МИР!!!!!!!!!!!';
}

?>


Но у меня не отображается заголовок страницы и пункт меню linktree.

$context нужно заполнить перед вызовом template_init();

sss2019

Что за контекст?

Напиши пожалуста пример правильной страницы, а то что то нигде не найду.

sss2019

Цитата: digger от 05 Ноябрь 2010, 05:47:28
$context нужно заполнить перед вызовом template_init();
Как его заполнить, там же итак написано "Заголовок страницы"


Солярис

19 Февраль 2011, 15:15:23 #33 Последнее редактирование: 19 Февраль 2011, 15:28:49 от Солярис
//Load SSI
require(dirname(__FILE__) . '/SSI.php');


В данной строке при открытии файла показывается ошибка.

Дело в том, у меня файл создается в другой папке, а не в корне директории, в которой лежит файл SSI.php. Думаю, что в этом и проблема.

Как в этом случае необходимо правильно прописать вызов файла SSI.php?

И почему-то не показывается правильно футер? Вместо нормального отображения копирайта движка отображается лишь это:
| Sitemap
Страница сгенерирована за 0.108 секунд. Запросов: 5.


Заранее спасибо.

BIOHAZARD

Цитата: Солярис от 19 Февраль 2011, 15:15:23Дело в том, у меня файл создается в другой папке, а не в корне директории, в которой лежит файл SSI.php. Думаю, что в этом и проблема.

Как в этом случае необходимо правильно прописать вызов файла SSI.php?
мы же не телепаты, чтоб знать где что у вас лежит
можно просто указать полный путь к SSI от корня на хостинге, можно указать относительный путь
Мои моды:
  • RedirectPage
  • Counters
  • CustomSearch
  • SypexDumper
   адаптирую темы    1.1.хx<=>2.0задавая вопросы, старайтесь сразу указывать конечную цель, предполагаемый Вами путь не обязательно окажется самым коротким

Любые моды на заказ

Солярис

Цитата: BIOHAZARD от 19 Февраль 2011, 20:16:25
мы же не телепаты, чтоб знать где что у вас лежит
можно просто указать полный путь к SSI от корня на хостинге, можно указать относительный путь
И причем же здесь реплика про телепатов?
Я спрашиваю про то, какой непосредственно код тогда нужно указать вверху файла для вызова SSI.php?
К примеру, такой:
require("/home/forum/SSI.php");
Вот про такой код у меня речь и ведется в вопросе. Про путь я не спрашивал, главное, как правильно прописать код вызова.

При этом, все-таки, как быть с футером? Почему он полностью не отображается?

Bugo

Можно так:

global $boarddir;
require_once($boarddir . '/SSI.php');

Насчёт футера — зависит от того, что вы сделали перед этим, начиная от момента, когда всё было нормально.

BIOHAZARD

Цитата: Bugo от 19 Февраль 2011, 22:57:55
Можно так:

global $boarddir;
require_once($boarddir . '/SSI.php');
судя по тому, что написано у Соляриса, нельзя.
Он SSI использует в левом файле, в котором $boarddir взяться неоткуда.

Цитата: Солярис от 19 Февраль 2011, 21:47:19
И причем же здесь реплика про телепатов?
при том, что ваш вопрос относится к разряду "я правильно еду?" ни я, ни кто-либо другой на этом форуме понятия не имеют, по какому адресу на хостинге у вас лежит SSI, возможно, что require("/home/forum/SSI.php") правильный путь, а может и нет, я на вашем сервере не был

попробуйте создать в папке с SSI и запустить в браузере файл с содержанием:

<?php
echo "require_once('"dirname(__FILE__), "/SSI.php');";
?>
Мои моды:
  • RedirectPage
  • Counters
  • CustomSearch
  • SypexDumper
   адаптирую темы    1.1.хx<=>2.0задавая вопросы, старайтесь сразу указывать конечную цель, предполагаемый Вами путь не обязательно окажется самым коротким

Любые моды на заказ

Солярис

03 Март 2011, 17:37:05 #38 Последнее редактирование: 04 Март 2011, 00:46:17 от Солярис
Цитата: Bugo от 19 Февраль 2011, 22:57:55
Насчёт футера — зависит от того, что вы сделали перед этим, начиная от момента, когда всё было нормально.
Ничего не делал. Я как только попробовал выводить страницы при помощи SSI у меня сразу футер начал вот так странно отображаться.
Но только на это странице, которая создается подобным образом. На остальном форуме футер отображается как и положено.

Шаннар

А как можно сделать своё описание действия страницы для «Кто онлайн»?

В смысле, для находящихся на test.php чтобы писало заданный $txt['whoall_test']?

В Who.php сходу не разобрался...

Можно ли просто написать что-то вроде

$context['member']['action'] = 'whoall_test';

Bugo

В RC5 (может и в RC4) новый хук добавили — integrate_whos_online, с помощью которого легко добавлять (на практике не проверял). В остальных версиях — копать, копать, копать. Изучайте, как это реализовано в SimplePortal, например.

Plut

16 Май 2011, 08:04:13 #41 Последнее редактирование: 16 Май 2011, 08:33:07 от Plut
У меня такой вопрос: я хочу GenericMenu.template.php разбить на два файла, часть функций оставить в оригинальном, часть функций перенести в, например, GenericMenus.template.php, в  GenericMenu.template.php дать ссылку на GenericMenus.template.php. Каким образом это сделать? Какой адрес ссылки должен быть?

Mavn

Цитата: Plut от 16 Май 2011, 08:04:13
У меня такой вопрос: я хочу GenericMenu.template.php разбить на два файла, часть функций оставить в оригинальном, часть функций перенести в, например, GenericMenus.template.php, в  GenericMenu.template.php дать ссылку на GenericMenus.template.php. Каким образом это сделать? Какой адрес ссылки должен быть?
и к чему этот вопрос ? он каким то образом относится к SSI.php?
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

Jacket

22 Август 2011, 09:02:58 #43 Последнее редактирование: 22 Август 2011, 09:54:21 от vaan937
Обьясните пожалуйста неучу как правильно с помощью кода ниже запретить просмотр страницы гостям(. У меня не получается
if ($context['user']['is_logged'])
{
echo'text';
}
else
{
echo'text';
}

Макар

if ( $context [ 'user' ][ 'is_гость' ]) { echo 'сюда низя' ; } else { echo 'добро пожаловать или посторонним вход воспрещен' ; }
Если Вы здесь недавно, не обольщайтесь тоном некоторых дискуссий.
Все чаще слова - юзай поиск, приобретают смысл - иди в ж..........  Приобретение смысла автоматизированно - Ответы на любой вопрос по SMF
Не пишите несколько сообщений подряд - тут вам не Twitter  >:( в остальных ситуациях мы не сильно зверствуем 2funny

Jacket

Я видимо криворук донельзя :facepalm: не получается

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
</head>
<?php
//Load SSI
require(dirname(__FILE__) . '/SSI.php');

// Initialize the template
template_init();

// Load headers
template_header();

// Load template function
template_main();

// Load footer
template_footer();


//Page title
$context['page_title'] = 'Тест';
$context['page_title_html_safe'] = 'Тест';

// Set up linktree
$context['linktree'][] = array(
  
'url' => $_SERVER['PHP_SELF'],
  
'name' => '/',
);

// Set up the main template
function template_main()
{

echo 
'<center>Данные приведены на 22 августа(Понедельник) 2011 года</center>'

}
{
echo
if ( 
$context 'user' ][ 'is_guest' ]) { echo 'сюда низя' ; } else { echo 'добро пожаловать или посторонним вход воспрещен' ;
}
  
?>
 
<body>
Текст html
</body>
</html>

где я криворук?

Mavn

SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

Jacket

Когда я вставляю код для запрета гостям просматривать страницу, то у меня страница либо не отображается вообще (белая страничка) или же данный код просто не срабатывает. Вот я и не знаю как правильно его поместить. Для теста брал код кнопок из меню, вставлял на страницу и они работали. А вот сделать страницу недоступной для гостя не получается (

Mavn

1. мне не понятно с чего было принято решение об использовании вот этого

<body>
Текст html
</body>
</html>

2. Конструкция приведенная выше отображает гостю все что в  if, авторизованным в else
3. Соответственно для того чтобы информация отображалась только пользователям нужно пихать ее в else, а гостей через if посылать лесом. Об этом в общем то писалось выше.
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

Jacket

Огромное спасибо, теперь буду знать