|
Автор |
Сообщение |
j4ck
Зарегистрирован: 26/05/07 09:49 Сообщения: 15
|
Добавлено: 31/01/08 23:31 |
|
|
Модификация для mod_blog
Позволяет выводить случайную статью в блоке.
Для этого необходимо вызвать блок с параметром
random={ид_блога}
Каждый раз при обновлении страницы будет выводится рандомная статья из указанного блога.
Код: |
/**
dump single article to box
@param integer use article id to fetch
'random=blog_id' - random article fom blog
*/
function make_article_box ($article_id, $size = 0, $align='left') {
$core = &core_c::get_instance();
$article_id_ = $article_id;
$article_id = ( substr($article_id,0,6)=='random') ? 'random' : intval($article_id);
if ($article_id=='random') {
$rand_blog = intval(substr($article_id_, 7));
}
// [TEST] $articles_blog_id = 1;
$sql_select = ($size!=0) ? "description as text" : 'text';
$sql = "SELECT id, {$sql_select}, name, text_type, caption, show_comments, blog_id, c_comm_count";
$sql .= (($article_id=='random') ? ', rand() as random':'');
$sql .= (" FROM " . BLOG_TABLE);
$sql .= (($article_id=='random') ? " WHERE blog_id = {$rand_blog} ORDER BY random " : " WHERE id={$article_id} ");
$sql .= "LIMIT 1;";
if( !($result = $core->db->sql_query($sql)) || !($row = $core->db->sql_fetchrow($result)) ) { // || $core->db->sql_affectedrows($result)==0
$core->errprint("$sql Невозможно загрузить статью в блоке ss_make_article_box ( \$article_id = $article_id )");
return 0;
}
if ($article_id=='random') $article_id = $row['id'];
$d_panel = '';
if ($core->userdata['user_level'] == ADMIN || $core->userdata['user_level'] == MOD) {
$d_panel .= '<a href="'.append_sid($core->mod_url.'act=blog&cmd=mod&id=' . $article_id) .'" title="'.$core->lang['mod_edit'].'">' . $core->lang['mod_edit'] .'</a> » ';
}
$count = array();
if ($row['show_comments']==1) {
$count['count'] = $row['c_comm_count']; // cached!
$count['text'] = (empty($count['count'])) ? 'Комментировать' : 'Комментарии ('.$count['count'].')';
$d_panel .= '<a class="gensmall" href="'. $this->base_url . 'cmd=p&id='.$article_id.'#docomment">'.$count['text'].'</a> » ';
}
$t_name = "ab" . ss_generate_rid();
$core->template->set_filenames(array($t_name=>'blocks/article.tpl'));
$core->template->reset_var('TEXT');
$row['text'] = message_decode($row['text'], $row['text_type']);
if ($size != 0) {
$url = append_sid($this->base_url . "cmd=p&id=" . ( (empty($row['name'])) ? $article_id : $row['name']), $row['blog_id'] );
# $row['text'] .= '...'; //substr($row['text'],0,$size);
$d_panel .= ( '<a class="gensmall" href="'.$url.'" title="читать дальше - '.$row['caption'].'">Читать дальше </a> » ' );
}
if (!empty($d_panel)) {
$row['text'] .= '<div align="right" class="gensmall" style="margin-top:3px">'.$d_panel.' </div>';
}
$core->template->assign_vars(
array(
'TEXT' => $row['text'],
'ALIGN' => $align,
'COMM_COUNT' => (empty($row['c_comm_count']) ? $core->lang['No'] : $row['c_comm_count']),
));
/*
$core->template->assign_var_from_handle('TEXT', "ab{$articles_blog_id}");
$core->template->assign_var_from_handle('TEXT', "ab{$articles_blog_id}_output");
*/
return $t_name;
}
|
Заменить одноименный метод в модуле /modules/mod_blog/blog.php[/code] |
|
Вернуться к началу |
|
|
surg30n Skill+Z Developer
Зарегистрирован: 1/11/05 00:19 Сообщения: 198
|
Добавлено: 1/02/08 11:40 |
|
|
Jack как обычно делает интересные вещи.
Можно использовать для показа рандомных "цитат" или баннеров.
Может зарелизишь сборку с исправлениями? |
|
Вернуться к началу |
|
|
j4ck
Зарегистрирован: 26/05/07 09:49 Сообщения: 15
|
Добавлено: 2/02/08 12:27 |
|
|
Нашел ошибочку в методе - неправильно генерится ссылка на "комментарии".
Исправление:
Код: |
$url = $this->make_url($article_id, $row['blog_id'], $row['name']);
if ($row['show_comments']==1) {
$count['count'] = $row['c_comm_count']; // cached!
$count['text'] = (empty($count['count'])) ? 'Комментировать' : 'Комментарии ('.$count['count'].')';
$d_panel .= '<a class="gensmall" href="'. $url . '#docomment">' . $count['text'] . '</a> » ';
}
|
|
|
Вернуться к началу |
|
|
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|
|