самописный движок

Автор devICE, 21 декабря 2006, 22:22:38

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

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

devICE

вообще реально скрестить SMF с движком собственной разработки? ну например хотябы 10 или больше последних сообщений с форума... ну может плюс регистрация ещё...
Проблемы только в голове.

Mavn

не проблема в принципе :) все что вам нужно использовать это SSI.php примеры использования поставляется в комплекте с дистрибутивом smf ssi_examples.shtml   ssi_examples.php
Документация прилагается
http://www.simplemachines.ru/index.php?topic=1021.0
http://www.simplemachines.ru/index.php?topic=1015.0
http://www.simplemachines.ru/index.php?topic=1008.0
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

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

devICE

#2
global $context, $txt, $scripturl;
$what=ssi_welcome($output_method='array');
foreach ($what as $w)
{
if ($context["user"]["is_guest"])
$welcome=$txt["welcome_guest"];
else
$welcome=$txt["hello_member"]."<b>".$context["user"]["name"]."</b>".allowedTo("pm_read")?", ".$txt[152]." <a href=\"".$scripturl."?action=pm\">".$context["user"]["messages"]." ".($context["user"]["messages"]=="1"?$txt[471]:$txt[153])."</a>".$txt["newmessages4"]." ".$context["user"]["unread_messages"]." К".($context["user"]["unread_messages"]=="1"?$txt['newmessages0']:$txt["newmessages1"]):''.'.';
}


Сделал чтобы выводил welcome-строку. Для гостя выводит нормально и полностью, а вот для авторизованного пользователя ", у Вас 0 сообщений, 0 новых" ... Что делать? Как я понял проблема начинается с allowedTo("pm_read")...

Решение найдено!
Сделал следующим образом:
global $scripturl;
$what=ssi_welcome($output_method='array');
if ($what["is_guest"]!=1)
{
$welcome="<b>".$what["username"]."</b> у вас <a href=\"".$scripturl."?action=pm\">".$what["messages"]." сообщений</a>, ".$what["unread_messages"]." новых.";
}

При желании можно добавить и приветствие гостя...
Проблемы только в голове.

devICE

#3
Как вывести форму логина так как хочу я, т.е. все поля в одной строке. И как кнопку логаута поместить куда надо? Т.к. стандартные функции уносят всё вверх страницы...
global $scripturl,$sc,$context;
$data=ssi_welcome($output_method='array');
if ($data["is_guest"]!=1)
{
$_SESSION["logout_url"]="http://localhost/devCMS/";
$welcome="<b>".$data["username"]."</b> у вас <a href=\"".$scripturl."?action=pm\">".$data["messages"]." сообщений</a>, ".$data["unread_messages"]." новых. <a href=\"".$scripturl."?action=logout;sesc=".$sc."\">Выйти</a>";
} else {
$_SESSION["login_url"]="http://localhost/devCMS/";
$welcome="<form action=\"".$scripturl."?action=login2\" method=post accept-charset=\"".$context["character_set"]."\">
Авторизация:
&nbsp;<input type=text id=user name=user size=9 />
&nbsp;<input type=password name=passwrd id=passwrd size=9 />
&nbsp;<input type=submit value=\"Войти\" />
</form>
<a href=\"".$scripturl."?action=register\">Регистрация</a>";
}

Вот решение проблемы!

P.S.: Спасибо Mavn'у за подсказку в решении этой "проблемы" :)
Проблемы только в голове.

devICE

Теперь следующее дело. Надо бы сделать такие же сворачивающиеся панели. Чесслово не хочеться ковырять темы SMF, может кто кодом прямым поможет? :)
Проблемы только в голове.

devICE

#5
Фуф, еле сделал вывод списка онлайн пользователей. Тестировалось на локалхосте, если кто проверит отпишитесь...
$data=ssi_whosOnline($output_method='array');
$users="<div class=\"small_txt\" align=left>Пользователей: ".$data["num_users"]."</div>";
foreach($data["users"] as $key=>$value)
{
$users.="<div class=\"small_txt\" align=left>".$data["users"][$key]["username"]."</div>";
}


Данный код пока ещё не полностью работоспособен. Проблема состоит в том, что когда у пользователя выходит время сессии, скрипт по прежнему (незнаю по каким причинам таким неведомым) продолжает отображать пользователя в списке онлайн. Если кто знает решение - подскажите. Буду рад помощи.
Проблемы только в голове.

devICE

#6
Ошибка, приведённый выше код работает отлично, проблема состоит в другом. Когда я захожу на форум, а потом обратно, то всё отлично работает. А когда просто обновляю страничку и жду когда он отобразит список, то ничего не происходит. Как я заметил почему-то не обнуляется массив со списком онлайн пользователей. Что можете в данном случае посоветовать?

Решение найдено!
unset($data);
$data=ssi_logOnline($output_method='array');
$users="<div class=\"small_txt\" align=left>Всего: ".$data["total_users"]."</div>
<div class=\"small_txt\" align=left>Гостей: ".$data["guests"]."</div>
<div class=\"small_txt\" align=left>Пользователей: ".$data["num_users"]."</div>";
if (!empty($data["users"]))
{
foreach($data["users"] as $key=>$value)
{
$users.="<div class=\"small_txt\" align=left><li><a href=\"".$data["users"][$key]["href"]."\">".$data["users"][$key]["username"]."</a></li></div>";
}
}

Разница лишь в используемой функции, до этого я использовал ssi_whosOnline(), в данном коде используется ssi_logOnline().
Проблемы только в голове.