Перейти к контенту

(SnS) SSI экспорт последних тем и сообщений


Рекомендуемые сообщения

  • Ответы 238
  • Создана
  • Последний ответ

Лучшие авторы в этой теме

мне надо закрыть содержимое вот этого форума: http://ip216.ru/index.php?showforum=2

 

пишем

class ssi_autorun
{
/**
* Auto run function
*/
var $disable_forums = array( 2);


function auto_run()
{

 

в результате вылазят посты от туда....

Ссылка на комментарий
Поделиться на других сайтах

Всеравно не пашет, выложите пожалуйста полную строчку.

 

+1 Тоже пытаюсь закрыть, ничего не выходит.

Может в версии 2.3.3 что-то поменялось?

Моя вина. Фикс:

 

Найти:

count($disable_forums)

Заменить на:

count($this->disable_forums)

Найти:

implode(',', $disable_forums)

Заменить на:

implode(',', $this->disable_forums)

Найти:

		if( $one_topic AND isset($this->ipsclass->input['showtopicinfo']) AND $this->ipsclass->input['showtopicinfo'] )
	{			
		$this->ipsclass->DB->build_query( array( 'select'   => 'tid,title,posts,starter_id,starter_name,forum_id',
												 'from'	 => 'topics',
												 'where'	=> 'tid='.intval($this->ipsclass->input['topic']),
										)	  );

		$sql_result = $this->ipsclass->DB->exec_query();

		if( $row = $this->ipsclass->DB->fetch_row($sql_result) )
		{

Добавить после:

				if( in_array($row['forum_id'], $this->disable_forums) )
			{
				fatal_error("You can't access this topic.");
			}

 

И так 2 раза.

 

А лучше обновить обе функции по инструкцию, залью новую через 5 минут.

Ссылка на комментарий
Поделиться на других сайтах

дописал везде this-> везде, где только можно :D

добавил if в одном месте там ещё ; пропущена ничего не изменилось .... ;)

 

может руки у меня кривые ?

Ссылка на комментарий
Поделиться на других сайтах

дописал везде this-> везде, где только можно :D

добавил if в одном месте там ещё ; пропущена ничего не изменилось .... ;)

 

может руки у меня кривые ?

Пришлите мне ssi.php, мой ник на mail.ru, посмотрю в чём дело.

Ссылка на комментарий
Поделиться на других сайтах

А лучше обновить обе функции по инструкцию, залью новую через 5 минут.

 

Подтверждаю, с фиксом всё работает. ;)

 

Только вот такая особенность,

Например сам форум (подкатегория) по адресу http://forum/index.php?showforum=13

Но главная категория, в которой этот имеет тоже свой ид http://forum/index.php?showforum=14

 

Если прописать главную категорию, то ничего не происходит, нужно прописывать именно подкатегории.

Я думаю не помешала бы функция, закритыя всех подкатегорий, если указывается ид главной. Но это уже так рассуждения. :D

Ссылка на комментарий
Поделиться на других сайтах

Подскажите ещё, как можно убрать дублирующиеся сообщеняя?

Использую вывод последних 10 ssi.php?a=lastposts

 

Получаестя выводит последние 10 сообщений, даже если они написаны в одной теме.

Получается такое

 

Сообщение в тему Конкурс Мистер Прим-чата!

Сообщение в тему Давайте разбудим свою совесть

Сообщение в тему Давайте разбудим свою совесть

Сообщение в тему Давайте разбудим свою совесть

Сообщение в тему Давайте разбудим свою совесть

Сообщение в тему Обсуждение первого Рэп батла.

Сообщение в тему Первый этап Конкурса:D

Сообщение в тему Цепь Словарных Ассоциаций

Сообщение в тему Конкурс Мистер Прим-чата!

Сообщение в тему Цепь Словарных Ассоциаций

Ссылка на комментарий
Поделиться на других сайтах

Если прописать главную категорию, то ничего не происходит, нужно прописывать именно подкатегории.

Я думаю не помешала бы функция, закритыя всех подкатегорий, если указывается ид главной. Но это уже так рассуждения. :D

Учитывая что используется это в порталах и т.д. какой смысл нагружать скрипт лишними запросами и кодом, если можно прописать это руками? ;)

 

Подскажите ещё, как можно убрать дублирующиеся сообщеняя?

Использую вывод последних 10 ssi.php?a=lastposts

Получаестя выводит последние 10 сообщений, даже если они написаны в одной теме.

Примерная мысль: В функции do_last_posts найти в запросе

2 => array( 'select' => 't.*',

и заменить на

2 => array( 'select' => 'DISTINCT(t.tid), t.title, t.forum_id',

 

Если после этого пропадёт часть информации в выводимых данных, нужно недостающие поля из таблицы topics внести по аналогии в эту строку.

Ссылка на комментарий
Поделиться на других сайтах

Учитывая что используется это в порталах и т.д. какой смысл нагружать скрипт лишними запросами и кодом, если можно прописать это руками? :D

 

я понимаю, что это долго и проблемно, но я не согласен, это была бы хорошая функция. Дело в том что в закрытом форуме могут организовываться подфорумы, а это уже полный ручной контроль, создал ветку - поменяй файл.

 

кстати я в код не вглядывался, там фильтр идет по Группам или только по disable_forums, может стоит отображать с правами опред группы (ее можно оговорить и в переменной), это был бы идеальный вариант и менять не так много.

Ссылка на комментарий
Поделиться на других сайтах

Только по $this->disable_forums и approved поста и топика.

 

Сделаю в будующем, когда буду применять этот мод или меня кто-то подтолкнёт на это.

Ссылка на комментарий
Поделиться на других сайтах

:D опять неловко, но есть проблема

 

вставляем код... в файл из текущего каталога 1.php

 

<? 

  echo "DDDDDDDDDDDDDDD";

  $_GET['a'] = 'lasttopics';

//   chdir('');

  include("ssi.php");

  echo "FFFFFFFFFFFFFFF";
?>

 

запускаем и получаем:

DDDDDDDDDDDDDDDрезультат_работы_ssi.php

 

а должно быть:

DDDDDDDDDDDDDDDрезультат_работы_ssi.phpFFFFFFFFFFFFFFF

 

с вариантом:

@ob_start();
include("http://domain.com/forums/ssi.php?a=lastposts&show=10");
$ssi_html = @ob_get_contents();
@ob_end_clean();

то же самое, он дает верный результат, но его никуда не вставишь.

 

такое ощущуние что стоит die или что то другое, что останавливает выполнение скрипта...

 

(я файлы подшивать не могу так что ssi.php не прилагаю)

Ссылка на комментарий
Поделиться на других сайтах

В ssi.php убрать exit наверное надо.
Ссылка на комментарий
Поделиться на других сайтах

:D глупо получилось сам задал вопрос и сам ответил на него. действительно в конце всех функций надо убрать exit(). иначе он завершает выполнение скрипта, поэтому страница за скриптом не выводится.
Ссылка на комментарий
Поделиться на других сайтах

  • 3 недели спустя...

вобще после использования появилось предложение оформить это всё как функцию, в качестве инклюда использовать неудобно. особенно когда надо на одной странице сделать 2 запроса (например последние темы и последние сообщения). 2 раза инклюд не сделаешь, надо как то по другому оформлять. да и переменные так вводить тоже не очень удобно. лучше сделать функцию и вызывать её или класс, который подключать.

 

лучше результат возвращать переменной чем там выводить. или в виде парсера входной переменной.

 

кроме того неудобно работает disable_forums для закрытия форумов. Если форумов много или они меняются с ней работать совсем неудобно. Во первых на форуме скорее придется вести список открытых, чем список закрытых веток. Да и массовое указание подветок тоже неудобно.... лучше этот механизм пересмотреть.

 

ну и exit убрать надо, а то ничего не сработает.

 

:D а так полезный скрипт...

Ссылка на комментарий
Поделиться на других сайтах

Это зависит от того что за сайт. Большинству людей функциональности мода хватает, а если выкладывать другую версию, то начнутся недовольства что всё сложно :D

 

Так уж и быть, выведу настройку в админку.

 

Спасибо.

Ссылка на комментарий
Поделиться на других сайтах

Это специально сделано, чтобы можно было длинну задавать. Если нуэны бб=коды, достаточно закомментировать(или удалить) кусок:

			$row['post'] = $parser->strip_all_tags( $row['post'] );
		$row['post'] = preg_replace("#([^\s<>'\"/\.\\-\?&\n\r\%]{80})#i", " \\1"."<br />", $row['post']);
		$row['post'] = str_replace( "\n", '<br />', trim($row['post']) );
		if( $len and (strlen( $row['post'] ) > $len) )
		{
			$row['post'] = substr( $row['post'], 0, $len ) . '...';
			$row['post'] = preg_replace( "/&(#(\d+;?)?)?\.\.\.$/", '...', $row['post'] );
		}

 

Если же вам нужны только некоторые бб-коды, то нужно отдельно разбираться.

Закомментировал эти строчки. Тэги все рисуются. Но проблема со смайликами, ссылка формируется относительная. И неверная. В итоге смайлики не отображаются.

Ссылка на комментарий
Поделиться на других сайтах

Попробуйте после этого добавить:

str_replace("style_emoticons", "{$this->ipsclass->vars['board_url']}/style_emoticons", $row['post']);

Ссылка на комментарий
Поделиться на других сайтах

  • 3 недели спустя...
кстати, а так и задуманно, что смайлики и bb коды не должны замещаться, или это у меня опять что то глючит. уменя такое ощущуние создается что скрипт просто тупо делает выборку из БД, обрезает и выводит, ничего не меняя...
Ссылка на комментарий
Поделиться на других сайтах

Поднимите глаза на пару постов вверх :D

 

http://www.ibresource.ru/forums/index.php?...st&p=297120

 

P.S. Да, так и задумано, потому что многие бб-коды(например цитата) могу испортить внешний вид страницы, на которую выводиться список будет, кроме того при обрезке сложно контролировать закрытие тегов. Так что при выводе постов куда-то вне форума оформление подовляющее большинство админов убирает.

Ссылка на комментарий
Поделиться на других сайтах

Попытался)) однако не вышло)

http://project-siti.info/forum/ssi.php?a=l...icss&len=50

я так думаю, что ошибся где то в редактировании ssi.php. Добрые люди, пришлите мне его в ПМ плиз)

Спасибо)

Ссылка на комментарий
Поделиться на других сайтах

Наверное я в инструкции ошибся и написал lasttopicss. Последняя 's' — лишняя.

 

Работает.

Ссылка на комментарий
Поделиться на других сайтах

Ага. Спасибо) а я тут над темплейтсами этими издеваюсь, а все мои издевки бестолку.

Вон как таблицу урезал http://project-siti.info/forum/ssi_templates/last_posts.html

А она все равно большая http://project-siti.info (под меню)

Почему она не воспринимает изменение шаблона?

Или хотя бы как границы инклюда можно задать ( я в ПХП не очень)?

Ссылка на комментарий
Поделиться на других сайтах

У меня ширина в обоих случаях одинаковая. Но всёже попробуйте в шаблоне написать честно width='100px' а не как у вас сейчас :D
Ссылка на комментарий
Поделиться на других сайтах

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.