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

ROZWIĄZANY: Thanks Mod Advanced zlicznie ilosci podziekowan


Łukasz

Rekomendowane odpowiedzi

  • Manager

Witaj,

zapodaj dane do FTP i ACP i zobaczę, co da się zrobić. Nie mam niestety nigdzie możliwości sprawdzenia, ale nie podejrzewam problemów. ;)

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Odnośnik do komentarza
Udostępnij na innych stronach

1. otwórz sources/action_public/topics.php

znajdź:

CODE-BOX
if ($this->ipsclass->vars['thanks_mod_enable'])

{

$member_thanks = explode(',',$row['post_thanks']);

if ( ( in_array($this->topic['forum_id'], explode(',',$this->ipsclass->vars['thanks_forums'])) or (!$this->ipsclass->vars['thanks_forum_lim']) )

and ( in_array($this->ipsclass->member['mgroup'], explode(',',$this->ipsclass->vars['thanks_from_groups'])) or (!$this->ipsclass->vars['thanks_from_grp_lim']) )

and ( in_array($poster['mgroup'], explode(',',$this->ipsclass->vars['thanks_to_groups'])) or (!$this->ipsclass->vars['thanks_to_grp_lim']) )

and ($this->ipsclass->member['id']) )

{

if ( (!in_array($this->ipsclass->member['id'],$member_thanks)) and ($this->ipsclass->member['id'] != $row['author_id']) and ($row['pid'] == $this->topic['topic_firstpost']))

{

$row['thanks_button'] = $this->ipsclass->compiled_templates['skin_topic']->button_thanks($row['pid'] );

}

}

if ( ( in_array($this->ipsclass->member['mgroup'], explode(',',$this->ipsclass->vars['thanks_view_groups'])) or (!$this->ipsclass->vars['thanks_view_grp_lim']) )

and ( (count($member_thanks) > 0) && ($member_thanks[0] != "") ) )

{

$in_thanks = (count($member_thanks)==2) ? $row['post_thanks'] : implode(',',$member_thanks);

$this->ipsclass->DB->query( "SELECT m.members_display_name,m.id,m.mgroup, g.g_id,g.prefix,g.suffix FROM ibf_members m

LEFT JOIN ibf_groups g ON ( m.mgroup=g.g_id )

WHERE id IN ({$in_thanks}) " );

while($who_thanks = $this->ipsclass->DB->fetch_row())

{

$show_thanks .= "<a href='{$this->ipsclass->base_url}showuser={$who_thanks['id']}'>";

$show_thanks .= $who_thanks['prefix'].$who_thanks['members_display_name'].$who_thanks['suffix'];

$show_thanks .= "</a>, ";

$show_thanks_finish = substr($show_thanks, 0, -2);

}

$row['who_thanks'] = $this->ipsclass->compiled_templates['skin_global']->thanks_separator( $show_thanks_finish );

}

}

Zamień na:

CODE-BOX
if ($this->ipsclass->vars['thanks_mod_enable'])

{

$member_thanks = explode(',',$row['post_thanks']);

if ( ( in_array($this->topic['forum_id'], explode(',',$this->ipsclass->vars['thanks_forums'])) or (!$this->ipsclass->vars['thanks_forum_lim']) )

and ( in_array($this->ipsclass->member['mgroup'], explode(',',$this->ipsclass->vars['thanks_from_groups'])) or (!$this->ipsclass->vars['thanks_from_grp_lim']) )

and ( in_array($poster['mgroup'], explode(',',$this->ipsclass->vars['thanks_to_groups'])) or (!$this->ipsclass->vars['thanks_to_grp_lim']) )

and ($this->ipsclass->member['id']) )

{

if ( (!in_array($this->ipsclass->member['id'],$member_thanks)) and ($this->ipsclass->member['id'] != $row['author_id']) and ($row['pid'] == $this->topic['topic_firstpost']))

{

$row['thanks_button'] = $this->ipsclass->compiled_templates['skin_topic']->button_thanks($row['pid'] );

}

}

if ( ( in_array($this->ipsclass->member['mgroup'], explode(',',$this->ipsclass->vars['thanks_view_groups'])) or (!$this->ipsclass->vars['thanks_view_grp_lim']) )

and ( (count($member_thanks) > 0) && ($member_thanks[0] != "") ) )

{

$memberJoined = implode(',',$member_thanks);

$count = count(explode(',',$memberJoined));

$in_thanks = (count($member_thanks)==2) ? $row['post_thanks'] : $memberJoined;

$this->ipsclass->DB->query( "SELECT m.members_display_name,m.id,m.mgroup, g.g_id,g.prefix,g.suffix FROM ibf_members m

LEFT JOIN ibf_groups g ON ( m.mgroup=g.g_id )

WHERE id IN ({$in_thanks}) " );

while($who_thanks = $this->ipsclass->DB->fetch_row())

{

$show_thanks .= "<a href='{$this->ipsclass->base_url}showuser={$who_thanks['id']}'>";

$show_thanks .= $who_thanks['prefix'].$who_thanks['members_display_name'].$who_thanks['suffix'];

$show_thanks .= "</a>, ";

$show_thanks_finish = substr($show_thanks, 0, -2);

}

$row['who_thanks'] = $this->ipsclass->compiled_templates['skin_global']->thanks_separator( $show_thanks_finish, $count );

}

}

Przejdź do ACP -> LOOK & FEEL -> Dany skin -> Edit Template HTML -> Edit Template HTML -> thanks_separator

Kliknij w przycisk z opcjami i wybierz Edit Data Variables...

zamień całą zawartość na:

CODE-BOX
$who, $count

kliknij na Save & Close

następnie w szablonie znajdź

CODE-BOX
<tr><td class="row1" colspan="2"><b>{$this->ipsclass->lang['thx_who']}</b><br />

i zamień na

CODE-BOX
<tr><td class="row1" colspan="2"><b>$count {$this->ipsclass->lang['thx_who']}</b><br />

Podziękowania dla ,,Spanner'' za wykonanie modyfikacji

Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager

Buaahah. No tak, tylko spanner mógł zrobić po raz kolejny taką manianę. ;)

Jego nowy kodzik, kodziunio:

$count = count(explode(',',$memberJoined));

Do tej pory myślałem, że masta blasta, za jakiego on się uważa nie jest w stanie zrobić jakiejś głupoty w jednej linii kodu. Myliłem się.

No, kto mi powie, jaką podstawową regułę złamał?

Wystarczy ten jego masakryczny kod, tj.:

$memberJoined = implode(',',$member_thanks);
$count = count(explode(',',$memberJoined));

Zamienić na:

$IleThanksow = count( $member_thanks );
$memberJoined = implode(',',$member_thanks);

I w bicie użyć $IleThanksow zamiast $count.

Ręce opadają.

Myślałem o robocie w nazwa.pl, ale jak takich ludzi zatrudniają to ja podziękuję. ;)

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager

To normalne błędy w sztuce, nie jeden, ale dwa, przy czym jeden woła o pomstę do nieba. Jeśli się coś tworzy, to robi się to z głową, zoptymalizowane, a nie taka maniana, ale kończę już bo znów zlecą na mnie gromy, że wyrażam się niepochlebnie o mojej niby konkurencji, a tak naprawdę prowadzę merytoryczną dysputę. ;)

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Odnośnik do komentarza
Udostępnij na innych stronach

Buaahah. No tak, tylko spanner mógł zrobić po raz kolejny taką manianę. ;)

Jego nowy kodzik, kodziunio:

$count = count(explode(',',$memberJoined));

Do tej pory myślałem, że masta blasta, za jakiego on się uważa nie jest w stanie zrobić jakiejś głupoty w jednej linii kodu. Myliłem się.

No, kto mi powie, jaką podstawową regułę złamał?

Wystarczy ten jego masakryczny kod, tj.:

$memberJoined = implode(',',$member_thanks);
$count = count(explode(',',$memberJoined));

Zamienić na:

$IleThanksow = count( $memberJoined );
$memberJoined = implode(',',$member_thanks);

I w bicie użyć $IleThanksow zamiast $count.

Ręce opadają.

Myślałem o robocie w nazwa.pl, ale jak takich ludzi zatrudniają to ja podziękuję. ;)

Niestety ale nie działa twój sposób ;)

Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager

Sorry, z uniesienia zły skopiowałem.

Zamiast:

$IleThanksow = count( $memberJoined );

Użyj:

$IleThanksow = count( $member_thanks );

Kod już poprawiłem.

Edit Data Variables... - też edytuj i dodaj tam $IleThanksow. To chyba wiadome, prawda? ;)

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager
Informacja:
Problem ROZWIĄZANY. Jeśli są jakiekolwiek wątpliwości, pytania proszę o założenie nowego tematu.
Wszelkie uzasadnione reklamacje/pretensje/sugestie/rady przyjmuje ekipa forum.

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager

Z:

$memberJoined = implode(',',$member_thanks);
$count = count(explode(',',$memberJoined));

Na:

$IleThanksow = count ( $member_thanks );

Nie działa?

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Odnośnik do komentarza
Udostępnij na innych stronach

nie teraz mam

	IPS Driver Error
There appears to be an error with the database.
You can try to refresh the page by clicking here

masz dane do acp do testowego forum co ci wysłałem i do ftp sam zobacz jak nie wierzysz

Edytowane przez meler
Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager

Śmiga jak żyleta!

Tylko zapomniałeś, a ja nie zauważyłem, że to:

$row['who_thanks'] = $this->ipsclass->compiled_templates['skin_global']->thanks_separator( $show_thanks_finish );

należy zamienić jeszcze na:

$row['who_thanks'] = $this->ipsclass->compiled_templates['skin_global']->thanks_separator( $show_thanks_finish, $IleThanksow );

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager

I bez żadnego implode'a, explode'a, tworzenia nowej zmiennej i liczenia. Któż tak robi? ;)

ten implode, a potem explode można porównać do przesypywania z jednego worka do drugiego by na końcu i tak wysypać to na ziemię. ;)

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager
Informacja:
Problem ROZWIĄZANY. Jeśli są jakiekolwiek wątpliwości, pytania proszę o założenie nowego tematu.
Wszelkie uzasadnione reklamacje/pretensje/sugestie/rady przyjmuje ekipa forum.

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager

Gdzieś tam wyczytałem, że potrzebujesz tez nazwy autora postu w tym szablonie. Proszę, oto, co wymodziłem w 3 minuty.

Otwórz plik: sources/action_public/topics.php

Znajdź:

$row['who_thanks'] = $this->ipsclass->compiled_templates['skin_global']->thanks_separator( $show_thanks_finish, $IleThanksow );

Zamień na:

$row['who_thanks'] = $this->ipsclass->compiled_templates['skin_global']->thanks_separator( $show_thanks_finish, $IleThanksow, $row['author_name'] );

Zapisz i wyślij.

Przejdź do:

ACP > LOOK & FEEL > ( wybór skina ) > Edit Template HTML > All Global HTML >> thanks_separator

Znajdź:

<tr><td class="row1" colspan="2"><b>

Dodaj po:

{$AuthorName}

Zapisz.

Otwórz edycję zmiennych dla tego bitu (Edit Data Variables...), na końcu dodaj:

, $AuthorName=""

Zapisz.

Nie zapomnij edytować langa by zmienić formę Autor postu upija się na koszt XX uzytkowników:.

I nie błądź następnym razem. ;)

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Odnośnik do komentarza
Udostępnij na innych stronach

Gość Spanner

A ten znowu zaczyna, przejżyj sobie kod i zobacz jak dodawane są thanksy, a zobaczysz celowość mojego działania, to twoje zliczanie kantuje o 1 podziękowanie. Dlaczego? bo do bazy zawsze jest zapisywany podziekował,podziekowa,

czyli przecinek na końcu, na początku rozbijasz po przecinkach i masz nawet taki piękny warunek if($count == 2) wstaw $row['thanks'] czyli idąc twoim tropem musisz na samym końcu odjąć 1 od sumy, aby wartość była poprawna. Oczywiśie twój kod jest optymalniejszy ... lol jak już jesteś taki optymalizator to po kiego grzyba tworzysz dodatkową zmienną, jak można od razu do bitu przekazać count($zmienna). Więc nie ucz nikogo optymalizacji jeśli sam z nią jesteś na bakier.

Edit. Co już zaczynasz zazdrościć że ktoś, może na moim forum pisać mając u Ciebie konto, że tak wszystkim dogryzasz ??

Edit2. jeśli chodzi o autora, to kolejne optymalne rozwiazanie ;) walić nowe zmienne, ciekawe ile ich jeszcze tam przekażesz. Poza tym robiąc tak jak Ty o pokazałeś nie zrobisz jednego. w jednym zasobie językowym nie umieścisz całego tekstu, tylko musisz go sklejać z kawałków, jakbyś o tym nie wiedział to istnieje jeszcze cos takiego jak sprintf() którego się używa w takim wypadku w php i bez problemu jedną zmienną załatwiasz wszystkie te rzeczy...

EOT

ps. ... usune PS'a bo będzie znowu ze awantury wszczynam ;)

Edytowane przez Spanner
Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager
Informacja:
Problem ROZWIĄZANY. Jeśli są jakiekolwiek wątpliwości, pytania proszę o założenie nowego tematu.
Wszelkie uzasadnione reklamacje/pretensje/sugestie/rady przyjmuje ekipa forum.

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Odnośnik do komentarza
Udostępnij na innych stronach

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • 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ę.