Skocz do zawartości
"Idzie nowe..." - o zmianach i nie tylko ×
Przeniesienie zakupów z IPS Marketplace / Moving bought items from IPS Marketplace ×

OmegaOne

Użytkownik
  • Postów

    124
  • Dołączył

  • Ostatnia wizyta

Treść opublikowana przez OmegaOne

  1. Tej doklejki tam na dole razem z <?php if.. nie powinno być a zakodowany adres url w base64_decode() to chińska strona. Zakladam ze ktoś ci się bawił forum...
  2. Dał byś link do forum gdzie masz zainstalowanego tego skina.
  3. Skoro mam sobie zgadywać jak wygląda HTML i CSS w skinie podobnym do podstawowego to zgaduje ze #branding img { width: xxpx; }
  4. <div class="cat_icon"> <a href="http://warez-x.pl/forum/3-pobieraj/"> <img alt="" src="http://warez-x.pl/public/style_images/master/cat_3.png"> </a> </div> Ikonkę masz w divie z klasa 'cat_icon' jak wg ciebie zmiana w css w klasie .cat_3 ma to ruszyć?
  5. To jest przecież ten skin, skoro kupiłeś zgłoś problem autorowi.
  6. To nie mod, to tło w animowanym gifie i cień tekstu w css
  7. Tu wersja na listach. <style type="text/css"> /************************************************************************/ /* RESET (Thanks to YUI) */ body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,textarea,p,blockquote,th,td { margin:0; padding:0; } table { border-collapse:collapse; border-spacing:0; } fieldset,img { border:0; } address,caption,cite,code,dfn,th,var { font-style:normal; font-weight:normal; } ol,ul { list-style:none; } caption,th { text-align:left; } h1,h2,h3,h4,h5,h6 { font-size:100%; font-weight:normal; } q:before,q:after { content:''; } abbr,acronym { border:0; } hr { display: none; } address{ display: inline; } /************************************************************************/ .utility-links { background: #333; color: #ccc; padding: 10px; overflow: hidden; font-family: Verdana, Arial, sans-serif; font-size: 11px; border: 1px solid blue; } .utility-links h3 { padding: 0 0 10px 0; clear: both; font-size: 14px; font-weight: bold; border: 1px solid yellow; } /* linki */ .utility-links a { color: #ccc; padding:2px 10px; display: block; text-decoration: none; } .utility-links a.rss { background: url('http://s1.cdn.imgwykop.pl/img/feed_icon.gif') no-repeat 10px 3px; /* ikonka rss wykopowa | zmienic na wlasna */ padding-left: 27px; border: 1px solid white; } .utility-links a:hover { color: #fff; background-color: #444; } .utility-links ul { float: left; margin: 0 10px 0 0; border: 1px solid red; } .utility-links ul.last { margin: 0; border: 1px solid green; } .utility-links li { } </style> </head> <body> <div class="utility-links"> <h3>Przydatne linki...</h3> <ul> <li><a href="#" title="">Idea Wykopu</a></li> <li><a href="#" title="">Regulamin</a></li> <li><a href="#" title="">Reklama</a></li> <li><a href="#" title="">Blog</a></li> <li><a href="#" title="">Polityka prywatności</a></li> <li><a href="#" title="">Pomoc</a></li> <li><a href="#" title="">Kontakt</a></li> </ul> <ul> <li><a href="#" title="">Katalog grup</a></li> <li><a href="#" title="">Dodatki</a></li> <li><a href="#" title="">Wykopywarka</a></li> <li><a href="#" title="">Widget Wykopu</a></li> <li><a href="#" title="">Widget Netvibes</a></li> <li><a href="#" title="">Widget iGoogle</a></li> </ul> <ul class="last"> <li><a href="#" title="">Ranking użytkowników</a></li> <li><a href="#" title="">Zamów koszulkę</a></li> <li><a class="rss" href="#" title="">wykopane</a></li> <li><a class="rss" href="#" title="">wykopalisko</a></li> <li><a class="rss" href="#" title="">komentarze</a></li> </ul> </div> </body> </html> Kolorowe ramki dla jasności gdzie co się zmienia. a u siebie daj .FooterLink:hover zamiast .FooterLink a:hover
  8. Wszystko już jasne. Czyste dane są w $member["field_1"] do $member["field_18"] a formatowanie z choinki można zmienić w tej samej grupie skina w bicie customField__generic.
  9. Witam, Mam małą zagwozdkę. Modyfikuje sobie skin [grupa profil, bit modernProfile] i wklejam dla testu <php>var_dump($member['custom_fields']['profile_info']['location']);</php> dostaję string(348) "<dt>Miejscowość:</dt> <dd> <!--hook.if.skin_profile.customField__generic.genericIsArray.pre.startif--><!--hook.if.skin_profile.customField__generic.genericIsArray.pre.else--> Szczecin <!--hook.if.skin_profile.customField__generic.genericIsArray.post.else--><!--hook.if.skin_profile.customField__generic.genericIsArray.post.endif--> </dd>" Chciałbym dostać czyste dane tak jak zostały zapisane do bazy [bez dd,dt], ew. tak jak zostało to zdefiniowane w acp konfigu customField dla 'location' <span class='ft'>{title}:</span><span class='fc'>{content}</span> Dodam jeszcze że $member to tablica usera którego profil właśnie oglądam, a nie aktualnie zalogowanego. Jak i gdzie wyłączyć to formatowanie z choinki, ew. jak inaczej dostać się do tych danych?
  10. w sumie strzelam ale może zamiast include() dać include_once()
  11. Dziękuje za szybki odzew i potwierdzenie jedynego jak widać słusznego rozwiązania. w ad 5 odpowiedziałeś mi i na pytanie nr 2 skoro ad6 'raczej tak' to mam kolejne pytania zakładając ze korzystasz z dhostingu jaki jest tam limit Ilości danych przesłanych z/do baz danych na dobre i ten nieszczęsny timeout na skrypty php bo to w sumie 2 najpoważniejsze bolączki hostingu z nazwy. ad p.s. done
  12. Witam ponownie Mam problem z aktualizacja z ipb 2.3.6 do 3.0.5. Dostaje ten oto komunikat. To jest 7 krok aktualizacji Fatal error: Maximum execution time of 30 seconds exceeded in /ftp/dev/forum/ips_kernel/classConvertCharset.php on line 585 baza to jakieś 200mb 80k postów i 2,5k zarejestrowanych userów wszystko w latin2 Teraz pytanka 1. czy gdyby baza była w utf8 ten krok byłby pominięty, jak mniemam chodzi o konwersje znaków 2. konwersje gdzie? w bazie czy na wewnętrznych plikach 3. czy zrobienie tego upgrade na localu i wgranie zaktualizowanych plików i bazy załatwi problem po poprawieniu konfiguracji? 4. czy ten sam krok występuje przy każdej aktualizacji czy tylko z ipb 2 na ipb 3 (głownie chodzi o to czy przy kazdej nastepnej aktualizacji bedzie to samo) 5. czy skrypt aktualizacyjny nie ma np. ukrytej konfiguracji gdzie można było by to wyłączyć 6. czy ew zmiana hostingu z nazwy na np dhosting opcja współdzielony personal+ pozwoli uniknąć tego typu niespodzianek w przyszlosci będę wdzięczny za ew. pomoc i wszelkie konstruktywne opinie.
  13. Słowem wstępu. Zadanie jest proste, kod ma pobierać dane o temacie z uwzględnieniem ustawień user/gość na forum, listę postów pozwalając na stronicowanie i sortowanie wg daty wraz z awatarem autora. Treść postu powinna zostać sparsowana tak by tagi bbcode zostały zamienione na html. Aby użyć funkcji należy mieć zainicjowany rejestr i kontroler a w konstruktorze klasy muszą znajdować się poniższe skróty, ale to chyba jest dość oczywiste. $this->DB = $this->registry->DB(); $this->settings =& $this->registry->fetchSettings(); $this->request =& $this->registry->fetchRequest(); $this->lang = $this->registry->getClass('class_localization'); $this->member = $this->registry->member(); $this->memberData =& $this->registry->member()->fetchMemberData(); $this->cache = $this->registry->cache(); $this->caches =& $this->registry->cache()->fetchCaches(); Funkcja info o temacie wejście tid -> id tematu wyjście false lub tablica z danymi tematu. //---------------------------------------------------------------------------------- // Informacje o temacie wg ID //---------------------------------------------------------------------------------- public function get_topic_info( $tid = 0 ) { //----------------------------------------- // id tematu jest niepoprawne, wychodzimy //----------------------------------------- if ( intval($tid) <= 0 ) { return FALSE; } //----------------------------------------- // zapytanie do bazy o dane tematu //----------------------------------------- $this->DB->build( array( 'select' => '*', 'from' => 'topics', 'where' => 'tid=' . intval($tid) ) ); $this->DB->execute(); $topic = $this->DB->fetch(); //----------------------------------------- // temat nie jest zatwierdzony, wychodzimy //----------------------------------------- if ( $topic['approved'] != 1) { return FALSE; } //----------------------------------------- // nie ma uprawnień do oglądania // tematów z tego forum, wychodzimy //----------------------------------------- if ( $this->registry->class_forums->forumsCheckAccess( $topic['forum_id'], 1, 'forum', $topic, TRUE) == FALSE ) { return FALSE; } //----------------------------------------- // do tej pory ok, wychodzimy //----------------------------------------- return $topic; } Funkcja lista postów z tematu wejście tid -> id tematu, page -> nr strony, limit -> ile postów na stronie, sort_field -> wg której kolumny sortujemy, sort_order -> jak sortujemy asc/desc wyjście false lub tablica z danymi postów. //---------------------------------------------------------------------------------- // lista postów wg ID tematu //---------------------------------------------------------------------------------- public function get_post_list ( $tid = 0, $page = 1, $limit = 10, $sort_field = 'pid', $sort_order = 'asc' ) { //----------------------------------------- // id tematu jest niepoprawne, wychodzimy //----------------------------------------- if ( intval($tid) <= 0 ) { return FALSE; } $tid = intval($tid); //----------------------------------------- // zapytanie o ilość postów w temacie //----------------------------------------- $this->DB->build( array( 'select' => 'COUNT(*) as pcount', 'from' => 'posts', 'where' => 'topic_id=' . $tid . ' and queued=0' ) ); $post_count = $this->DB->fetch( $this->DB->execute() ); //----------------------------------------- // tematu nie ma w bazie, // lub temat nie ma postów, wychodzimy //----------------------------------------- if ( $post_count <= 0 ) { return FALSE; } //----------------------------------------- // nr strony, ilość postów na stronie // przeliczenie pozycji startowej i // końcowej limitu //----------------------------------------- $page = ( intval($page) <= 1 ) ? 1 : intval($page); $post_pp = (intval($limit) <= 0 ) ? ( ( intval( $this->settings['au_cutoff'] ) <= 0 ) ? 10 : intval( $this->settings['au_cutoff'] ) ) : intval($limit); $post_start = $post_pp * ( $page - 1 ); $post_end = $post_start + $post_pp; //----------------------------------------- // strona która nie istnieje, wychodzimy //----------------------------------------- if ( $post_start > $post_count ) { return FALSE; } //----------------------------------------- // sortowanie a-z, z-a i wg jakiego pola //----------------------------------------- $sort_order = ( $sort_order != 'asc') ? 'desc' : 'asc'; $sort_options = array('pid', 'post_date' ); $sort_field = ( !in_array($sort_field, $sort_options, TRUE) ) ? $sort_options[0] : $sort_field; //----------------------------------------- // ustawienie joina dodatkowych tabel //----------------------------------------- $_joins = array( array( /*'select' => 'm.member_id as mid,m.name,m.member_group_id,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, m.members_display_name, m.members_seo_name, m.has_gallery, m.has_blog, m.members_bitoptions',*/ 'select' => 'm.member_id, m.name, m.member_group_id, m.warn_level, m.members_display_name, m.members_seo_name', 'from' => array( 'members' => 'm' ), 'where' => 'm.member_id=p.author_id', 'type' => 'left' ), array( 'select' => 'pp.avatar_type, pp.avatar_location, pp.avatar_size, pp_reputation_points',//'pp.*', 'from' => array( 'profile_portal' => 'pp' ), 'where' => 'm.member_id=pp.pp_member_id', 'type' => 'left' ), /*array( 'select' => 'g.g_access_cp', 'from' => array( 'groups' => 'g' ), 'where' => 'g.g_id=m.member_group_id', 'type' => 'left' )*/ ); //----------------------------------------- // join keszu postów jeśli jest //----------------------------------------- if ( IPSContentCache::isEnabled() ) { if ( IPSContentCache::fetchSettingValue('post') ) { $_joins[] = IPSContentCache::join( 'post', 'p.pid' ); } } //----------------------------------------- // zapytanie o dane postów //----------------------------------------- $this->DB->build( array( 'select' => 'p.*', 'from' => array( 'posts' => 'p' ), 'where' => 'topic_id='.$tid.' and queued=0', 'order' => $sort_field .' '. $sort_order, 'add_join' => $_joins, 'limit' => array( $post_start, $post_end ) ) ); $oq = $this->DB->execute(); while ( $row = $this->DB->fetch( $oq ) ) { //----------------------------------------- // parsowanie danych, avatar, // bbcode -> html tresci postu itp //----------------------------------------- $post[] = $this->parse_post( $row ); } //----------------------------------------- // do tej pory ok, wychodzimy //----------------------------------------- return $post; } Funkcja parsująca usera i treść postu wejscie tablica -> post pobrany z bazy z poprzedniej funkcji wyjscie tablica zwracajac sparsowane i skonwertowane dane w postaci array ( 'content' => dane posta, 'poster' => dane autora postu ) public function parse_post( $row = array() ) { $poster = array(); //var_dump( $row ); //----------------------------------------- // user czy gość? //----------------------------------------- if ( $row['author_id'] != 0 ) { //----------------------------------------- // user jest w keszu? //----------------------------------------- if ( isset( $this->cached_members[ $row['author_id'] ] ) ) { //----------------------------------------- // wiec wczytujemy //----------------------------------------- $poster = $this->cached_members[ $row['author_id'] ]; } else { //----------------------------------------- // nie ma, wiec setup usera i zbieramy dane //----------------------------------------- //---------------------------------------------------------------------------------- // pełny setup usera /* $poster = IPSMember::buildDisplayData( $row, array( 'signature' => 1, 'customFields' => 1, 'warn' => 1, 'avatar' => 1, 'checkFormat' => 1, 'cfLocation' => 'topic' ) ); */ // poniżej uproszczona wersja //---------------------------------------------------------------------------------- $poster['id'] = intval($row['author_id']); $poster['display_name'] = $row['members_display_name']; $poster['seo_name'] = ( $row['members_seo_name'] !='' ) ? $row['members_seo_name'] : IPSText::makeSeoTitle( $row['members_display_name'] ); //----------------------------------------- // awatar w postaci ścieżki nie tagu img //----------------------------------------- $poster['avatar'] = preg_replace( "#<img(?:.+?)src=[\"'](\S+?)['\"][^>]+?>#is", "\\1", IPSMember::buildAvatar( $row ) ); $poster['group_title'] = $this->caches['group_cache'][$row['member_group_id']]['g_title']; $poster['warn_level'] = ( intval($row['warn_level']) <= 0 ) ? 0 : intval($row['warn_level']); //----------------------------------------- // reputacja usera //----------------------------------------- if( $this->settings['reputation_enabled'] ) { $poster['rep_total'] = $row['pp_reputation_points'] ? $row['pp_reputation_points'] : 0; } //----------------------------------------- // dodajemy do keszu //----------------------------------------- $this->cached_members[ $row['author_id'] ] = $poster; } } else { //----------------------------------------- // setup gościa //----------------------------------------- //---------------------------------------------------------------------------------- // pełny setup gościa // $poster = IPSMember::setUpGuest( $row['author_name'] ); // poniżej uproszczona wersja //---------------------------------------------------------------------------------- $poster['id'] = 0; $poster['display_name'] = $this->settings['guest_name_pre'] . $row['author_name'] . $this->settings['guest_name_suf']; $poster['seo_name'] = IPSText::makeSeoTitle( $poster['display_name']); $poster['avatar'] = ''; $poster['group_title'] = $this->caches['group_cache'][$this->settings['guest_group']]['g_title']; $poster['warn_level'] = 0; $poster['rep_points'] = 0; } //----------------------------------------- // tresc posta w keszu? //----------------------------------------- if ( ! $row['cache_content'] ) { //----------------------------------------- // parsujemy wg ustawień //----------------------------------------- IPSText::getTextClass( 'bbcode' )->parse_html = 0; IPSText::getTextClass( 'bbcode' )->parse_nl2br = 1; IPSText::getTextClass( 'bbcode' )->parse_bbcode = 1; IPSText::getTextClass( 'bbcode' )->parse_smilies = 1;//$row['use_emo']; IPSText::getTextClass( 'bbcode' )->parsing_section = 'topics'; IPSText::getTextClass( 'bbcode' )->parsing_mgroup = $row['member_group_id']; IPSText::getTextClass( 'bbcode' )->parsing_mgroup_others = $row['mgroup_others']; $row['post'] = IPSText::getTextClass( 'bbcode' )->preDisplayParse( $row['post'] ); //----------------------------------------- // updatujemy kesz // przy ustawieniach wlasnych lepiej jednak nie //----------------------------------------- //IPSContentCache::update( $row['pid'], 'post', $row['post'] ); } else { //----------------------------------------- // uzywamy danych z keszu //----------------------------------------- $row['post'] = '<!--cached-' . gmdate( 'r', $row['cache_updated'] ) . '-->' . $row['cache_content']; } //----------------------------------------- // szybki fix z <#EMO_DIR#> na katalog emotek //----------------------------------------- $row['post'] = str_replace('<#EMO_DIR#>', $this->registry->output->skin['set_emo_dir'], $row['post']); $row['post'] = IPSText::getTextClass( 'bbcode' )->memberViewImages( $row['post'] ); //----------------------------------------- // setup tresci //----------------------------------------- $content['pid'] = $row['pid']; $content['post'] = $row['post']; $content['post_date'] = $row['post_date']; unset($row); return array( 'content' => $content, 'poster' => $poster ); } to chyba tyle, może się to komuś do czegoś przyda wersja lekko testowana, wszelka konstruktywna krytyka mile widziana
  14. Dzięki i bez obaw podzielę się wynikami, jestem mniej więcej w połowie drogi. W sumie takie spostrzeżenie... Zapytania do bazy to mogli by nieco zoptymalizować bo póki co to jakieś dziwne tam konstrukcje występują, przydało by się tez więcej trzymania się dry i kiss. Nie żebym ja był jakimś guru, i tak wiem która godzina
  15. Dzieki opcji 2 właśnie mniej więcej szukałem. W jednym miejscu jest pobieranie postów forumowym builderem db, parsowanie treści, autora postu i kesz. Pozostało to tylko ubrać w zgrabna funkcje.
  16. Dzieki i zaciekawiło, ale logowanie i obsługę uzyszkodnika już mam dzięki artom dla deva. I właśnie teraz przydało by mi sie listowanie tematów czy postów jako powiedzmy komentarzy. Normalnie pobieram liste z bazy tego co mi potrzeba (tematu) osobnym zapytaniem i wynik przepuszczam przez forumowy parser (bbcode->html) jesli chodzi o tresc posta, podobnie jest z awatarem postu tak ze zwraca mi odpowiedni obrazek. Wydaje mi sie jednak ze to jest podejscie niejako dookola problemu. Zapewne jest jakas funkcja ktora przyjmnie parametry w stylu topic_id, ofset limit i wypluje dane w postaci tablicy z przypisanym userem i sparsowanyą lub nie trescia. tylko jeszcze tego nie znalazlem ;/ a tego w sdk dla ipb 3 nie ma.
  17. Witam W sumie krótkie pytanie Czy korzystając z klasy sources\classes\post\classPost można pobrać listę tematów lub postów wg id, jeśli tak to jak? Próbuję to zrobić z zewnętrznej aplikacji, forum to v3.0.3 rejestr i kontroler wgrany i zainicjowany bo tablice aktualnie zalogowanego usera mogę vardumpować Jeśli się mylę to proszę mnie poprawić require_once( IPSLib::getAppDir( 'forums' ) . '/app_class_forums.php' ); $appClass = new app_class_forums( $this->registry ); require_once( IPSLib::getAppDir( 'forums' ) . '/sources/classes/post/classPost.php' ); $post = new classPost( $this->registry ); i co dalej? $post->setIsPreview( false ); $post->setAuthor( 2 ); $post->setForumID( 62 ); $post->setTopicID(5803); $post->setPostID(585001); $post->setPublished( true ); $temp = $post->getTopicData(); var_dump($temp); które z ustawień sa konieczne, które zbędne i co jest nie tak ze zwraca pusta tablice. Forum, topic, post id sa poprawne i dostępne dla gościa. Wiem ze mogę pobrać to sobie zewnętrznym zapytaniem z bazy ale liczyłem na to ze uda się w taki sposób by od razu dostać sparsowaną treść postu bbcode na html i wyświetlić wg ostawień aktualnie zalogowanego usera. Będę dźwięczny za każdą wskazówkę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.