Блок случайной статьи

 
Начать новую тему   Ответить на тему    Список форумов Skill-Z CMS Project -> Модификации и дополнения
 
Автор Сообщение
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> &raquo; ';
    }

    $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> &raquo; ';
    }

   $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> &raquo; ' );
    }

    if (!empty($d_panel)) {
        $row['text'] .= '<div align="right" class="gensmall" style="margin-top:3px">'.$d_panel.'&nbsp;</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 как обычно делает интересные вещи.
Можно использовать для показа рандомных "цитат" или баннеров.
Может зарелизишь сборку с исправлениями? Razz
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
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> &raquo; ';
    }
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов Skill-Z CMS Project -> Модификации и дополнения Часовой пояс: GMT + 4
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах