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

Prefix przed nazwą użytkownika


Split

Rekomendowane odpowiedzi

Cześć. Mam pewien problem. Otóż posiadam aplikację panelu gracza i zastanawiam się jak dodać prefix przed każdą nazwą użytkownika na stronie ( ewentualnie pokolorować użytkowników jeżeli przejdzie zapytanie ). Jak takie coś wykonać? Czy mam użyć w pliku Application.php funkcji construct? Czy jest jakieś inne odwołanie? Proszę o odpowiedź.

Odnośnik do komentarza
Udostępnij na innych stronach

1 minutę temu, Weak. napisał(a):
\IPS\Member::load(ID użytkownika)->link(NULL, TRUE)
{template="userLink" group="global" app="core" params="\IPS\Member::load(ID UZYTKOWNIKA)->member_id", TRUE"}

 

 

Super. Dzięki za nadesłanie rozwiązania - jeden problem rozwiązany. Mam drugi problem teraz, kiedy mam to wywołać w jakim momencie dokładnie? Czy to wrzucić do funkcji construct? Czy jest od tego specjalna funkcja?

Odnośnik do komentarza
Udostępnij na innych stronach

11 minut temu, Weak. napisał(a):

Co Ty chcesz osiągnąć? Gdzie to wywołujesz? Wyciągasz dane z bazy?

 

Chcę podmienić wszędzie nazwę użytkownika na sformatowaną na podstawie pobranych danych w zewnętrznej bazie danych. Zrobiłem w pliku Application.php funkcję dbConnect, która zwraca dane z bazy danych i używam ją we wszystkich funkcjach.

Odnośnik do komentarza
Udostępnij na innych stronach

Nie podałeś informacji czy tam jest ID użytkownika z forum, jeżeli nie ma to możesz sprawdzić czy jest taka sama nazwa użytkownika.

 

$member = \IPS\Member::load('nazwa uzytkownika', 'name');
$nick = $member->member_id ? $member->link(NULL, TRUE) : $nick;

 

A jak jest to użyj tych funkcji, które podałem w moim poprzednim poście.

Odnośnik do komentarza
Udostępnij na innych stronach

Moja przykładowa funkcja na pobieranie danych z zewnętrznej bazy danych.
 

	public static function returnFormatedNick($username)
	{
		$database = self::dbConnect();
		
		try {
			$result = $database->select( 'premium', \IPS\Settings::i()->mtasa_dbTable_players, [ 'login = ?', $username ] )->first();

			$premium = '';

			if(date('Y-m-d H:i:s') < $result['premium']) {
				$premium .= '<i style="color: #31FFFF;" data-ipstooltip aria-label="'. \IPS\Member::loggedIn()->language()->addToStack( 'mtasa_rank_-1' ) .'" class="fa fa-diamond"></i> ';
			}
	
			return $premium . $result['username'];
		}
		catch( \UnderflowException $error) {
			// Tehre is no username X
		}
	}

 

Odwołuje się do niej gdy chcę dodać przedrostek przed nazwą użytkownika w utworzonych przez moją aplikację zakładkach.

Co muszę zrobić aby było do niej także odwołanie na stronie głównej, w postach itp.

Odnośnik do komentarza
Udostępnij na innych stronach

Teraz, Weak. napisał(a):

Nie podałeś informacji czy tam jest ID użytkownika z forum, jeżeli nie ma to możesz sprawdzić czy jest taka sama nazwa użytkownika.

 

$member = \IPS\Member::load('nazwa uzytkownika', 'name');
$nick = $member->member_id ? $member->link(NULL, TRUE) : $nick;

 

A jak jest to użyj tych funkcji, które podałem w moim poprzednim poście.

 

Tak. Tyle że w którym miejscu mam sprawdzać i użyć tamtych funkcji? Mam utworzyc funkcję construct w pliku Application.php?

Odnośnik do komentarza
Udostępnij na innych stronach

Nie wiem skąd pobierasz to:

return $premium . $result['username'];

 

Skoro pobierasz tylko wartość "premium"

$result = $database->select( 'premium', \IPS\Settings::i()->mtasa_dbTable_players, [ 'login = ?', $username ] )->first();

 

Więc jak dla mnie może być coś takiego:

$result = $database->select( '*', \IPS\Settings::i()->mtasa_dbTable_players, [ 'login = ?', $username ] )->first();

 

public function nazwaFunkcji($userName)
{
	$member = \IPS\Member::load($userName, 'name');
	return $member->member_id ? $member->link(NULL, TRUE) : $userName;
}

 

A potem sobie podmień return

return $premium . $this->nazwaFunkcji($result['username']);

 

Odnośnik do komentarza
Udostępnij na innych stronach

27 minut temu, Weak. napisał(a):

Nie wiem skąd pobierasz to:

return $premium . $result['username'];

 

Skoro pobierasz tylko wartość "premium"

$result = $database->select( 'premium', \IPS\Settings::i()->mtasa_dbTable_players, [ 'login = ?', $username ] )->first();

 

Więc jak dla mnie może być coś takiego:

$result = $database->select( '*', \IPS\Settings::i()->mtasa_dbTable_players, [ 'login = ?', $username ] )->first();

 

public function nazwaFunkcji($userName)
{
	$member = \IPS\Member::load($userName, 'name');
	return $member->member_id ? $member->link(NULL, TRUE) : $userName;
}

 

A potem sobie podmień return

return $premium . $this->nazwaFunkcji($result['username']);

 

 

Dzięki za poprawkę. Usunąłem tylko przed wstawieniem do posta brakujące kolumny, one były wcześniej. Ale dalej nie kumam w jaki sposób zrobić aby nicki sformatowane przez tą funkcję były również w tematach, postach, w kto jest online itp.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager
16 godzin temu, Split napisał(a):

Ale dalej nie kumam w jaki sposób zrobić aby nicki sformatowane przez tą funkcję były również w tematach, postach, w kto jest online itp.

Tutaj nie ma jednej odpowiedzi niestety. Trzeba napisać modyfikację. Z góry mówię, że nic trudnego, ale jednej metody do przeładowania nie ma w tej sytuacji.

Jednakże możesz zacząć od tego: system/Member/Member.php

	/**
	 * HTML link to profile with hovercard
	 *
	 * @param	string|NULL		$warningRef			The reference key for warnings
	 * @param	boolean|NULL 	$groupFormatting		Apply the group prefix/suffix to the name?
	 * @param	boolean|NULL 	$anonymous			Is this shown with anonymous content?
	 * @return	string
	 */
	public function link( $warningRef=NULL, $groupFormatting=NULL, $anonymous=FALSE )
	{

 

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

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ę.