Skocz do zawartości


- - - - -

[IP.Board 3.1.x] Odznaczenie użytkowników z ostrzeżeniem


  • Proszę się zalogować aby odpowiedzieć
4 odpowiedzi na ten temat

#1 Spanner

Spanner

    PHP & IP.Board Developer

  • Administrator
  • 5435 postów
  • Płeć:Mężczyzna
  • Skąd:KrK
  • Wersja:IP.Board 3.3.x

Napisany 10 listopad 2010 - 16:57

Czasami chcielibyśmy, aby na stronie głównej forum użytkownicy, którzy dostali ostrzeżenie, byli jakoś specjalnie odznaczeni i aby to odznaczenie było widoczne dla wszystkich. Poniższy artykuł opisuje jak tego dokonać.

Dodany obrazek


Otwórz: admin/applications/forums/modules_public/forums/boards.php

Znajdź:

				//-----------------------------------------
				// Member?
				//-----------------------------------------
				
				else
				{
					if ( empty( $cached[ $result['member_id'] ] ) )
					{
						$cached[ $result['member_id'] ] = 1;

						$result['member_name'] = IPSLib::makeNameFormatted( $result['member_name'], $result['member_group'] );
						
						if ( $result['login_type'] )
						{
							if ( $this->memberData['g_access_cp'] and ($this->settings['disable_admin_anon'] != 1) )
							{
								$active['NAMES'][] = "<a href='" . $this->registry->getClass('output')->buildSEOUrl( "showuser={$result['member_id']}", 'public', $result['seo_name'], 'showuser' ) . "' title='$last_date'>{$result['member_name']}</a>*";
								$active['ANON']++;
							}
							else
							{
								$active['ANON']++;
							}
						}
						else
						{
							$active['MEMBERS']++;
							$active['NAMES'][] = "<a href='" . $this->registry->getClass('output')->buildSEOUrl( "showuser={$result['member_id']}", 'public', $result['seo_name'], 'showuser' ) ."' title='$last_date'>{$result['member_name']}</a>";
						}
					}
				}

Zamień na:

				//-----------------------------------------
				// Member?
				//-----------------------------------------
				
				else
				{
					if ( empty( $cached[ $result['member_id'] ] ) )
					{
						$cached[ $result['member_id'] ] = 1;

						$result['member_name'] = IPSLib::makeNameFormatted( $result['member_name'], $result['member_group'] );
						
						$memberDetails = IPSMember::buildDisplayData( $result['member_id'] );
						
						if(!is_null($memberDetails['warn_level']) && $memberDetails['warn_level'] > 0)
						{
							$result['member_name'] = $this->registry->getClass('output')->getReplacement('warn_info').$result['member_name'];
						}
						
						if ( $result['login_type'] )
						{
							if ( $this->memberData['g_access_cp'] and ($this->settings['disable_admin_anon'] != 1) )
							{
								$active['NAMES'][] = "<a href='" . $this->registry->getClass('output')->buildSEOUrl( "showuser={$result['member_id']}", 'public', $result['seo_name'], 'showuser' ) . "' title='$last_date'>{$result['member_name']}</a>*";
								$active['ANON']++;
							}
							else
							{
								$active['ANON']++;
							}
						}
						else
						{
							$active['MEMBERS']++;
							$active['NAMES'][] = "<a href='" . $this->registry->getClass('output')->buildSEOUrl( "showuser={$result['member_id']}", 'public', $result['seo_name'], 'showuser' ) ."' title='$last_date'>{$result['member_name']}</a>";
						}
					}
				}

Zapisz zmiany i wgraj plik

Następnie zaloguj się do ACP i przejdź na zakładkę Skiny & Języki. Dla danego skina z menu rozwijanego wybierz opcję Zarządzaj zamiennikami. Następnie wybierz dodaj nowy zamiennik i uzupełnij następująco formularz:

Klucz zamiennika warn_info
Zawartość zamiennika
<img src="{style_image_url}/warn_info.gif" /> 

a na koniec wgraj dołączony obrazek do katalogu /public/style_images/x/ gdzie X to jest katalog skina

Polska wersja artykułu: Odznaczenie użytkowników z ostrzeżeniem
Angielska wersja artykułu: Mark members with warn

Ten post został wypromowany na artykuł

Załączone pliki



#2 Kombajn

Kombajn

    Obeznany z IP.Board

  • Premium
  • PipPipPip
  • 566 postów
  • Płeć:Nie powiem
  • Wersja:n/a

Napisany 10 listopad 2010 - 17:29

Działa elegancko jednak...

- Co zrobić aby wykrzyknik był za nickiem z lekką spacją
- "Zawartość zamiennika" może być dla niektórych nieczytelna i będą wklejać na pałe link do wszystkich skinów ;)
- Co zrobić aby wykrzyknik był również widoczny w "Użytkownicy on-line dzisiaj:" (Hook (IM) Members Online Today)

#3 Spanner

Spanner

    PHP & IP.Board Developer

  • Administrator
  • 5435 postów
  • Płeć:Mężczyzna
  • Skąd:KrK
  • Wersja:IP.Board 3.3.x

Napisany 10 listopad 2010 - 18:11

Ad 1. zamień:
$result['member_name'] = $this->registry->getClass('output')->getReplacement('warn_info').$result['member_name'];

na:

$result['member_name'] .= ' '.$this->registry->getClass('output')->getReplacement('warn_info');

Ad 2. aaa już wiem o co Ci chodzi ... hmm zostało to sparsowane podczas pisania - już poprawiłem to

Ad 3. Chcesz zmienić plik XML czy plik Hooka ? jeśli to pierwsze to otwórz XML, jeśli to drugie to otwórz plik /hooks/membersOnlineToday....

znajdź:

$this->DB->build( array( 'select'   => 'm.member_id, m.members_display_name, m.member_group_id, m.last_activity, m.members_seo_name',
									 'from'	 => array( 'members' => 'm' ),
									 'where'	=> "m.member_id <> 0 AND m.members_display_name <> '' AND m.last_activity > ".time()." - {$numcheck}{$exclude}",
									 'add_join' => array( 0 => array( 'from'   => array( 'groups' => 'g' ),
																	  'where'  => 'm.member_group_id=g.g_id',
																	  'type'   => 'left' ) ),
																	  'order'  => "m.members_display_name ASC",
							)	   );
			$outer = $this->DB->execute();

Zamień na:

$this->DB->build( array( 'select'   => 'm.member_id, m.members_display_name, m.member_group_id, m.last_activity, m.members_seo_name, m.warn_level',
									 'from'	 => array( 'members' => 'm' ),
									 'where'	=> "m.member_id <> 0 AND m.members_display_name <> '' AND m.last_activity > ".time()." - {$numcheck}{$exclude}",
									 'add_join' => array( 0 => array( 'from'   => array( 'groups' => 'g' ),
																	  'where'  => 'm.member_group_id=g.g_id',
																	  'type'   => 'left' ) ),
																	  'order'  => "m.members_display_name ASC",
							)	   );
			$outer = $this->DB->execute();

Znajdź:

$link = IPSLib::makeProfileLink( IPSLib::makeNameFormatted( $user['members_display_name'], $user['member_group_id'] ), $user['member_id'], $user['members_seo_name'] );

Zamień na:
(jeśli ma być ikonka przed nazwą użytkownika)
$link = IPSLib::makeProfileLink( ((!is_null($user['warn_level']) && $user['warn_level'] > 0) ? $this->registry->getClass('output')->getReplacement('warn_info') : ''). IPSLib::makeNameFormatted( $user['members_display_name'], $user['member_group_id'] ), $user['member_id'], $user['members_seo_name'] );

Jeśli ma być po nazwie użytkownika
$link = IPSLib::makeProfileLink( IPSLib::makeNameFormatted( $user['members_display_name'], $user['member_group_id'] ).((!is_null($user['warn_level']) && $user['warn_level'] > 0) ? ' '.$this->registry->getClass('output')->getReplacement('warn_info') : ''), $user['member_id'], $user['members_seo_name'] );


#4 Kombajn

Kombajn

    Obeznany z IP.Board

  • Premium
  • PipPipPip
  • 566 postów
  • Płeć:Nie powiem
  • Wersja:n/a

Napisany 10 listopad 2010 - 18:24

Bosko!  Zdecydowanie bosko. Dzięki wielkie.

#5 Vader

Vader

    Coś tam wie o IP.Board

  • Premium
  • PipPip
  • 257 postów
  • Płeć:Mężczyzna
  • Skąd:Szwecja
  • Wersja:IP.Board 3.2.x

Napisany 25 grudzień 2010 - 13:02

Witam.
Hooks mi sie wysypal po edycji,jak sie okazalo ten hooks nie za bardzo sie nadaje do mojej wersji forum.

Po wgraniu popranwj wersji moda wszystko ladnie smiga.

Pzd.

Edytowany przez Vader, 25 grudzień 2010 - 15:08.

Dodany obrazekDodany obrazek


[Artykuł/Tutorial] [modyfikacja] Zmienienie ustawień użytkowników przy postach , IP użytkowników , [modyfikacja] Zmienienie ustawień użytkowników przy postach , baza sql dla IPBoard | porównywanie napisów , Wyświetlanie użytkowników mających urodziny


0 użytkowników czyta ten temat

0 użytkowników, 0 gości, 0 anonimowych użytkowników