ssi.php - вопрос о ssi_recent_posts()

Автор Roman_Grishin, 27 августа 2009, 13:20:14

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

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

Roman_Grishin

этот код ssi_recent_posts() выводит последние сообщения так, как на форуме, т.е. во всю щирину страницы. А на сайте блок, куда я хотел выводить последние сообщения - раза в два меньше по ширине, и этот код выводит косячно... что сделать, чтобы настроить вывод сообщений как надо?
не знаю как объяснить...
в общем, на форуме так:

[раздел]_____Тема_____Автор_____Дата

а на сайте получается криво:
[раздел]___Те
ма__
___
Автор_________

Дата
Христианский форум для всех! - Видение G12 в России!
►СПАСИБО ВСЕМ УЧАСТНИКАМ ЭТОГО ФОРУМА, БЛАГОДАРЯ ВАМ У МЕНЯ ФОРУМ РАБОТАЕТ БЕЗ ПРОБЛЕМ◄

BIOHAZARD

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

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

Roman_Grishin

спасибо, сейчас попробую))
а ничего, что везде и всегда пишут "никогда и ни за что не изменяйте файл ssi.php" ??
Христианский форум для всех! - Видение G12 в России!
►СПАСИБО ВСЕМ УЧАСТНИКАМ ЭТОГО ФОРУМА, БЛАГОДАРЯ ВАМ У МЕНЯ ФОРУМ РАБОТАЕТ БЕЗ ПРОБЛЕМ◄

Roman_Grishin

решил убрать из таблицы вывод даты сообщения, все стало как надо))

в общем, файл ssi.php до редактирования содержал в функции recentPosts вот какие строчки:

echo '
	
	
<table border="0" class="ssi_table">'
;
	
foreach (
$posts as $post)
	
	
echo 
'
	
	
	
<tr>
	
	
	
	
<td align="right" valign="top" nowrap="nowrap">
	
	
	
	
	
['
$post['board']['link'], ']
	
	
	
	
</td>
	
	
	
	
<td valign="top">
	
	
	
	
	
<a href="'
$post['href'], '">'$post['subject'], '</a>
	
	
	
	
	
'
$txt['by'], ' '$post['poster']['link'], '
	
	
	
	
	
'
$post['new'] ? '' '<a href="' $scripturl '?topic=' $post['topic'] . '.msg' $post['new_from'] . ';topicseen#new" rel="nofollow"><img src="' $settings['lang_images_url'] . '/new.gif" alt="' $txt['new'] . '" border="0" /></a>''
	
	
	
	
</td>
	
	
	
	
<td align="right" nowrap="nowrap">
	
	
	
	
	
'
$post['time'], '
	
	
	
	
</td>
	
	
	
</tr>'
;
	
echo 
'
	
	
</table>'
;

И после редактирования:

echo '
	
	
<table border="0" class="ssi_table">'
;
	
foreach (
$posts as $post)
	
	
echo 
'
	
	
	
<tr>
	
	
	
	
<td align="right" valign="top" nowrap="nowrap">
	
	
	
	
	
['
$post['board']['link'], ']
	
	
	
	
</td>
	
	
	
	
<td valign="top">
	
	
	
	
	
<a href="'
$post['href'], '">'$post['subject'], '</a>
	
	
	
	
	
'
$txt['by'], ' '$post['poster']['link'], '
	
	
	
	
	
'
$post['new'] ? '' '<a href="' $scripturl '?topic=' $post['topic'] . '.msg' $post['new_from'] . ';topicseen#new" rel="nofollow"><img src="' $settings['lang_images_url'] . '/new.gif" alt="' $txt['new'] . '" border="0" /></a>''
	
	
	
	
</td>
	
	
	
	
</tr>'
;
	
echo 
'
	
	
</table>'
;


ВСЕМ СПАСИБО!
Христианский форум для всех! - Видение G12 в России!
►СПАСИБО ВСЕМ УЧАСТНИКАМ ЭТОГО ФОРУМА, БЛАГОДАРЯ ВАМ У МЕНЯ ФОРУМ РАБОТАЕТ БЕЗ ПРОБЛЕМ◄

digger®

Цитата: Roman_Grishin от 27 августа 2009, 14:47:53
спасибо, сейчас попробую))
а ничего, что везде и всегда пишут "никогда и ни за что не изменяйте файл ssi.php" ??

Правильно пишут. А в конкретном случае точно незачем это было делать.

Roman_Grishin

Цитата: digger от 27 августа 2009, 20:56:49
А в конкретном случае точно незачем это было делать.
почему?
Христианский форум для всех! - Видение G12 в России!
►СПАСИБО ВСЕМ УЧАСТНИКАМ ЭТОГО ФОРУМА, БЛАГОДАРЯ ВАМ У МЕНЯ ФОРУМ РАБОТАЕТ БЕЗ ПРОБЛЕМ◄

BIOHAZARD

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

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


Roman_Grishin

ой... вот я значит как накосячил(((
а если я залью неизмененный ssi.php а свой назову, например, ssF.php и в своей сайте поменяю в первой строчке, чтоб не ssi.php, а ssF.php подключался, работать будет?
Христианский форум для всех! - Видение G12 в России!
►СПАСИБО ВСЕМ УЧАСТНИКАМ ЭТОГО ФОРУМА, БЛАГОДАРЯ ВАМ У МЕНЯ ФОРУМ РАБОТАЕТ БЕЗ ПРОБЛЕМ◄

BIOHAZARD

Цитата: Roman_Grishin от 28 августа 2009, 17:55:35
ой... вот я значит как накосячил(((
а если я залью неизмененный ssi.php а свой назову, например, ssF.php и в своей сайте поменяю в первой строчке, чтоб не ssi.php, а ssF.php подключался, работать будет?
не, ты не правильно понял digger'a
мы с тобой забыли, что функциям в SSI могут передаваться параметры, при этом возвращать функция может не только текст, но и массив данных, который ты можешь дальше разбирать, как душе угодно

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

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

Roman_Grishin

Цитата: BIOHAZARD от 28 августа 2009, 19:55:16
не, ты не правильно понял digger'a
мы с тобой забыли, что функциям в SSI могут передаваться параметры, при этом возвращать функция может не только текст, но и массив данных, который ты можешь дальше разбирать, как душе угодно

так что возвращай SSI к первоначальному состоянию и вызывай ssi_recent_posts с нужными параметрами
в  ssi_recent_posts нет параметра "html код таблицы, в которую SSI выводит список"
:)
я всего лишь то изменил таблицу - там таблица с 3 столбцами, первый - Раздел, второй - тема и автор, третий - дата.
а мне не надо дату, я просто весь столбец удалил который дату показывает... и поменял $post['poster']['link'] на $post['poster']['name'] чтоб не ссылка была, а имя...

понимаете,
Цитата: digger от 28 августа 2009, 09:24:53
Потому что

$recent_posts 
ssi_recent_posts('array');

foreach (
$recent_posts as $recent_post) {
 
выводим каждый $recent_post как хотим
}


я вообще не врубилсо как это делать и что это =)
Христианский форум для всех! - Видение G12 в России!
►СПАСИБО ВСЕМ УЧАСТНИКАМ ЭТОГО ФОРУМА, БЛАГОДАРЯ ВАМ У МЕНЯ ФОРУМ РАБОТАЕТ БЕЗ ПРОБЛЕМ◄

BIOHAZARD

Смотрим определение функции:

function ssi_recentPosts($num_recent 8$exclude_boards null$include_boards null$output_method 'echo')
{
	
global 
$context$settings$scripturl$txt$db_prefix$user_info;
	
global 
$modSettings$smcFunc;
           ...

здесь мы видим, что в функцию передаётся целых черыре параметра, интересует нас последний
ниже в функции есть блок:

// Just return it.
	
if (
$output_method != 'echo' || empty($posts))   // то что нас интересует!!
	
	
return 
$posts;                                // а вот и массив с данными

	
echo 

	
	
<table border="0" class="ssi_table">'
;    // хотя можем вывести код таблицы
	
foreach (
$posts as $post)
	
	
echo 
'
	
	
	
<tr>
	
	
	
	
<td align="right" valign="top" nowrap="nowrap">
	
	
	
	
	
['
$post['board']['link'], ']
                       ...

Таким образом, если последний параметр не равен 'echo', то результатом функции будет массив с данными о последних сообщениях, а не код таблицы с данными, который мы дальше
Цитата: digger от 28 августа 2009, 09:24:53

foreach ($recent_posts as $recent_post) {
 
выводим каждый $recent_post как хотим
}

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

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

Roman_Grishin

Отлично! так понятно объяснил что даже я понял)) спасибо!
Христианский форум для всех! - Видение G12 в России!
►СПАСИБО ВСЕМ УЧАСТНИКАМ ЭТОГО ФОРУМА, БЛАГОДАРЯ ВАМ У МЕНЯ ФОРУМ РАБОТАЕТ БЕЗ ПРОБЛЕМ◄