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

Pinned Post (Закрепленный верхний пост) v.1.1


SAT

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

seba

 

проверь первое что бы у тебя в трех местах вызова make_post()

предавалось 3 парамертра :D

 

в первом случае должно выглядеть вот так $this->make_post($post, 0, 1);

во втором так $this->make_post($post, 0, 0);

 

а в третьем так $this->make_post($row, $first, 0);

 

если в закрепленном посте есть каритнка, то она корректно отображается только на той странице, откуда был прикручен пост, на остальных страницах темы картинка не грузится. Баг или так и задумано?

 

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

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

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

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

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

-SAT-

Спасибо, с первым вопросом все ок, не хватало 0 во втором вызове:

>во втором так $this->make_post($post, 0, 0);

А вот картинка так и не грузится на остальных страницах, кроме той где она была. Подскажи хоть какой файл примерно рыть.

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

теперь крепится сразу 2 одинаковых поста, один с шапкой. второй сразу за ним уже без шапки. Это первое. Второе - Вся моя центровка в постах ( и в панели слева тоже) съехала вправо.
Ссылка на комментарий
Поделиться на других сайтах

IPx вроде разумный ты человек, моды пишешь....

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

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

-SAT-

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

стоит у меня еще мод Resize image in , чьего производства наверное в курсе :D. Может это с ним конфликт? Глянь пожалуйста, или хотябы функцию, которую надо проверить.

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

Что-то я никак не пойму... Где выставлять наверх тот пост который мне нужен?[1123777619:1123777660]Иль кэш забыл обновить?[1123777619:1123777840]Да нет, обновил.
Ссылка на комментарий
Поделиться на других сайтах

У тебя при ответе/создании/редактировании поста, в самом низу возле кнопки "ОТПРАВИТЬ" появляется галочка "прикрепить пост?" такого плана вообщем :D
Ссылка на комментарий
Поделиться на других сайтах

А, да. Увидел... А что-то в выпадающих меню постоянно лазел! :D[1123824226:1123824626]Проблемка... Пост не один наверху, а два.

Вот скрин[1123824226:1123825804]И ошибка сверху: IPB Предупреждение [2] Missing argument 3 for make_post() (Строка: 464 файла /sources/lib/topic_linear.php)

Что-то с маркером?

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

Monah

 

вообще лучше снеси все изменения topic_linear.php и установи заново

 

а то я гляжу у тебя добавленно видимо это два раза

 

  //=====================================

  // Render pinned post in topic

  //=====================================

 

  if ( $this->topic['pinned_post'] and ($ibforums->vars['pin_p'] == 1))

  {

 

  $DB->query("SELECT p.*,

      m.id,m.name,m.mgroup,m.email,m.joined,m.posts, m.last_visit, m.last_activity,m.login_anonymous,m.title,m.hide_email, m.warn_level, m.warn_lastwarn,

      me.msnname,me.aim_name,me.icq_number,me.signature, me.website,me.yahoo,me.location, me.avatar_location, me.avatar_type, me.avatar_size

      FROM ".SQL_PREFIX."posts p

        LEFT JOIN ".SQL_PREFIX."members m ON (p.author_id=m.id)

        LEFT JOIN ".SQL_PREFIX."member_extra me ON (me.id=m.id)

      WHERE p.post_pinned = '1' and p.queued != '1' and p.topic_id=".$this->topic['tid']."");

 

  $post = $DB->fetch_row();

 

          $this->make_post($post, 0, 0);

 

      }

 

и видимо в одном из случаев вызова $this->make_post патерян агумент, думаю что опять же это связано со вторым добавлением

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

Да, все ок! Сенкс! Из-за обновления запутался немного...

 

нужно как-то придумать как русским языком нормально апдейт написать, проблемма я понимаю что надо, а сказать не могу :D

 

в общем в любом случае старый if на render pin post надо удалять что бы не путаться при апдейте ;)

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

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

Вот поставил мод все норм пашет... но почему-то он от других постов не отделен пробелом... help!

И еще когда создаешь пост он спрашивает "поднять пост" ....

Можго сделать так чтобы первый пост был поднят всегда(по дефаулту)

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

но почему-то он от других постов не отделен пробелом... help!

 

в админку бегом настраивать ;)

 

И еще когда создаешь пост он спрашивает "поднять пост" ....

 

ну в чем проблемма галочку ставь или не ставь....

 

Можго сделать так чтобы первый пост был поднят всегда(по дефаулту)

 

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

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

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

-SAT-

я вот заметил еще новость: пропали иконки "Первая страница" и "Последняя страница", которые в общем очень облегчают навигацию. Где рыть? в чем может быть пролема? и насчет все-таки картинок, подскажешь что-нибудь?[1125647831:1125648095]извини по поводу иконок разобрался сам. а вот с картинками так и не смог.

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

seba

если ты имеешь ввиду аттачи, то это двигла IPB....

у мну есть заплатка, но эта заплатка не отптимальна(мне она по крайней мере не нравится), так-как делает много запросов(1 аттач - 1 запрос)...

 

а если не парситься то что в теге IMG, то виновником являются модификации которые конфликтуют.(в данном случае стоит глядеть post_parser.php). Хотя вероятность данного я не понимаю, я на локале над тегом IMG сильно изголялся и всегда пришпиленный пост нормально парсил IMG.

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

-SAT-

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

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

seba

я же говорю если ты говоришь что аттачи не появляются, то просто возьми и препиши функцию парсера аттачей в файле topics.php

другого выхода нет. таким образом написан парсер аттачей, и квотинг аттачей тоже не предусмотрен.

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

-SAT-

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

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

function parse_attachments полностью обновленная, т.е. надо стереть и заново код приведенный ниже записать...

но я бы не советовал ставить!!!!

это делалось на скорую руку, а заниматься этим нет времени, я ща занят скином для своего форума, потом еще планы на два мода....

 

       /*-------------------------------------------------------------------------*/
      // ATTACHMENTS
      /*-------------------------------------------------------------------------*/

      function parse_attachments( $html, $attach_pids, $post_pid, $type='attach_pid', $from='pid', $method='post' )
      {
             global $DB, $forums, $std, $ibforums;
                 //=============================================
                 // Show attachments if "Quote" attachments Tag
                 //=============================================
                 while(preg_match('/attachmentid=([0-9]+)/',$html, $att_id))
                 {
                      if ($att_id[1])
                      {

                      $DB->simple_construct( array( 'select' => '*',
                                                                                'from'   => 'attachments',
                                                                                'where'  => "attach_id=".$att_id[1]
                                                               )      );

                      $DB->simple_exec();
                      $a = $DB->fetch_row();
                      $temp_out = "";
                      $temp_hold = array();
                      //-----------------------------------------
                      // Is it an image, and are we viewing the image in the post?
                      //-----------------------------------------
                      if ( $ibforums->vars['show_img_upload'] and $a['attach_is_image'] )
                      {
                            if ( $a['attach_thumb_location'] AND $a['attach_thumb_width'] )
                            {
                                                      $tmp = $this->html->Show_attachments_img_thumb( $a['attach_thumb_location'],
                                                                                                                                                      $a['attach_thumb_width'],
                                                                                                                                                      $a['attach_thumb_height'],
                                                                                                                                                      $a['attach_id'],
                                                                                                                                                      $std->size_format( $a['attach_filesize'] ),
                                                                                                                                                      $a['attach_hits'],
                                                                                                                                                      $a['attach_file'],
                                                                                                                                                      $method
                                                                                                                                                );

                                                      if ( strstr( $html, '[attachmentid='.$a['attach_id'].']' ) )
                                                      {
                                                              $html = str_replace( '[attachmentid='.$a['attach_id'].']', $tmp, $html );
                                                      }
                                                      else
                                                      {
                                                              $temp_hold['thumb'] .= $tmp . ' ';
                                                      }
                            }
                            else
                            {
                                                      //-----------------------------------------
                                                      // Standard size..
                                                      //-----------------------------------------

                                                      $tmp = $this->html->Show_attachments_img( $a['attach_location'] );

                                                      if ( strstr( $html, '[attachmentid='.$a['attach_id'].']' ) )
                                                      {
                                                              $html = str_replace( '[attachmentid='.$a['attach_id'].']', $tmp, $html );
                                                      }
                                                      else
                                                      {
                                                              $temp_hold['image'] .= $tmp . ' ';
                                                      }
                                              }
                             }
                             else
                             {
                                              //-----------------------------------------
                                              // Full attachment thingy
                                              //-----------------------------------------

                                              $tmp = $this->html->Show_attachments( array (
                                                                                                                                        'hits'  => $a['attach_hits'],
                                                                                                                                        'image' => $ibforums->cache['attachtypes'][ $a['attach_ext'] ]['atype_img'],
                                                                                                                                        'name'  => $a['attach_file'],
                                                                                                                                        $from   => $a[$type],
                                                                                                                                        'id'    => $a['attach_id'],
                                                                                                                                        'method'=> $method,
                                                                                                                                        'size'  => $std->size_format( $a['attach_filesize'] ),
                                                                                                                      )            );

                                              if ( strstr( $html, '[attachmentid='.$a['attach_id'].']' ) )
                                              {
                                                      $html = str_replace( '[attachmentid='.$a['attach_id'].']', $tmp, $html );
                                              }
                                              else
                                              {
                                                      $temp_hold['attach'] .= $tmp;
                                              }
                             }

                              //-----------------------------------------
                              // Anyfink to show?
                              //-----------------------------------------

                              if ( $temp_hold['thumb'] )
                              {
                                      $temp_out = $this->html->show_attachment_title($ibforums->lang['attach_thumbs']) . $temp_hold['thumb'];
                              }

                              if ( $temp_hold['image'] )
                              {
                                      $temp_out .= $this->html->show_attachment_title($ibforums->lang['attach_images']) . $temp_hold['image'];
                              }

                              if ( $temp_hold['attach'] )
                              {
                                      $temp_out .= $this->html->show_attachment_title($ibforums->lang['attach_normal']) . $temp_hold['attach'];
                              }

                              if ( $temp_out )
                              {
                                      $html = str_replace( "<!--IBF.ATTACHMENT_{$a[$type]}-->", $temp_out, $html );
                              }
                      }
              }

             $final_attachments = array();
             if ( count( $attach_pids ) )
             {
                      $DB->simple_construct( array( 'select' => '*',
                                                                                'from'   => 'attachments',
                                                                                'where'  => "$type IN (".implode(",", $attach_pids).")"
                                                               )      );

                      $DB->simple_exec();

                      while ( $a = $DB->fetch_row() )
                      {
                              $final_attachments[ $a[ $type ] ][ $a['attach_id'] ] = $a;
                      }



                      foreach ( $final_attachments as $pid => $data )
                      {

                              $temp_out = "";
                              $temp_hold = array();

                              foreach( $final_attachments[$pid] as $aid => $row )
                              {



                                      //-----------------------------------------
                                      // Is it an image, and are we viewing the image in the post?
                                      //-----------------------------------------

                                      if ( $ibforums->vars['show_img_upload'] and $row['attach_is_image'] )
                                      {
                                              if ( $row['attach_thumb_location'] AND $row['attach_thumb_width'] )
                                              {

                                                      if(!strstr($html, $row['attach_thumb_location']))
                                                      {
                                                          $tmp = $this->html->Show_attachments_img_thumb( $row['attach_thumb_location'],
                                                                                                                                                      $row['attach_thumb_width'],
                                                                                                                                                      $row['attach_thumb_height'],
                                                                                                                                                      $row['attach_id'],
                                                                                                                                                      $std->size_format( $row['attach_filesize'] ),
                                                                                                                                                      $row['attach_hits'],
                                                                                                                                                      $row['attach_file'],
                                                                                                                                                      $method

                                                                                                                                              );


                                                          $temp_hold['thumb'] .= $tmp . ' ';
                                                      }
                                              }
                                              else
                                              {
                                                      //-----------------------------------------
                                                      // Standard size..
                                                      //-----------------------------------------
                                                      if(!strstr( $html, $row['attach_location']))
                                                      {
                                                              $tmp = $this->html->Show_attachments_img( $row['attach_location'] );
                                                              $temp_hold['image'] .= $tmp . ' ';
                                                      }
                                              }
                                      }
                                      else
                                      {
                                              //-----------------------------------------
                                              // Full attachment thingy
                                              //-----------------------------------------
                                              if(!strstr($html, $row['attach_file']))
                                              {
                                                  $tmp = $this->html->Show_attachments( array (
                                                                                                                                        'hits'  => $row['attach_hits'],
                                                                                                                                        'image' => $ibforums->cache['attachtypes'][ $row['attach_ext'] ]['atype_img'],
                                                                                                                                        'name'  => $row['attach_file'],
                                                                                                                                        $from   => $row[$type],
                                                                                                                                        'id'    => $row['attach_id'],
                                                                                                                                        'method'=> $method,
                                                                                                                                        'size'  => $std->size_format( $row['attach_filesize'] ),
                                                                                                                      )            );



                                                  $temp_hold['attach'] .= $tmp;
                                              }
                                      }

                              }
                              //-----------------------------------------
                              // Anyfink to show?
                              //-----------------------------------------

                              if ( $temp_hold['thumb'] )
                              {
                                      $temp_out = $this->html->show_attachment_title($ibforums->lang['attach_thumbs']) . $temp_hold['thumb'];
                              }

                              if ( $temp_hold['image'] )
                              {
                                      $temp_out .= $this->html->show_attachment_title($ibforums->lang['attach_images']) . $temp_hold['image'];
                              }

                              if ( $temp_hold['attach'] )
                              {
                                      $temp_out .= $this->html->show_attachment_title($ibforums->lang['attach_normal']) . $temp_hold['attach'];
                              }

                              if ( $temp_out )
                              {
                                      $html = str_replace( "<!--IBF.ATTACHMENT_{$row[$type]}-->", $temp_out, $html );
                              }

                              }
              }

              return $html;
      }

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

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

не идет инсталяция на локалхосте. долго думает, а потом выдает

Fatal error: Maximum execution time of 30 seconds exceeded in z:\home\fixx.ru\www\forums\ips_kernel\class_db_mysql.php on line 485

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

Привет,

У вас ошибка в коде.

Вы отделили код в функции make_post. У нее есть проверка если пост принадлежит игнорированного пользвателя, то он не отображаеться. Так как код бил в цикле while, то если он не должен отображаться, через continue цикъл продолжает со следуещего поста. Но сейчась код не в цикле, а в функции. continue надо заменит на return, иначе если в теме есть пост игнориронного пользвателя, PHP видаеть fatal error и тема вообще не отображаеться

 

function make_post($row, $first, $marker)
       {

 global $ibforums, $forums, $DB, $std, $print;

	 $return = $this->lib->parse_row( $row );
	 
	 $poster = $return['poster'];
	 $row    = $return['row'];
	 
	 //-----------------------------------------
	 // Are we giving this bloke a good ignoring?
	 //-----------------------------------------
	 
	 if ( $ibforums->member['ignored_users'] )
	 {
   if ( strstr( $ibforums->member['ignored_users'], ','.$poster['id'].',' ) and $ibforums->input['p'] != $row['pid'] )
   {
  	 if ( ! strstr( $ibforums->vars['cannot_ignore_groups'], ','.$poster['mgroup'].',' ) )
  	 {
     $this->output .= $this->lib->html->render_row_hidden( $row, $poster );
     return;
  	 }
   }
	 }	
	 
	 if($marker == 1)
	 {
   $this->output .="<div class=\"borderwrap\"><div class=\"maintitle\"><br /></div>";
   $this->output .= $this->lib->html->RenderRow( $row, $poster );
   $this->output .="</div>";
	 }
	 else
	 {
   $this->output .= $this->lib->html->RenderRow( $row, $poster );
	 }

}

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

Согласен с Darhazer'ом, нужно continue; заменить на return '';.

 

Еще есть одна недоработка (хотя кто знает, может быть так и задумывалось ) в прикрепленных постах не выводится информация о последнем редактировании :D .

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


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

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

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