Skocz do zawartości
Pecetowicz Forum komputerowe

Jak edytować niestandardowe pole (zakładkę) w profilu użytkownika?


Przejdź do rozwiązania Rozwiązane przez SeNioR,

Rekomendowane odpowiedzi

Cześć, dodałem przez panel administratora nowe pole "O mnie" w profilu użytkownika poprzez zakładkę profile. Zaznaczyłem opcję aby użytkownik nie mógł edytować tej zakładki przez swój panel, następnie odnalazłem opcję niestandardowe formatowanie profilu. 

Jak do tej pory wszystko gra, moim celem jest stworzenie w profilu użytkownika testowej zakładki, w której będą wyświetlone podstawowe informacje o tym użytkowniku z bazy danych w tym wypadku z tabeli core_members.

1. Czy mogę w jakiś sposób pobrać dane o użytkowniku? Przykładowo po wpisaniu w niestandardowe formatowanie profilu takiej zawartości: 

<h1>Id użytkownika: ${member_id}</h1> wszystko działa poprawnie, ale gdy dodam <p>Nazwa użytkownika: ${name}</p>, to już nie wyświetla się nazwa użytkownika.

2. Przy okazji drugie pytanie, załóżmy że w bazie danych forum mam moją własną tabelę o nazwie test_UserTab, w tej tabeli dla każdego zarejestrowanego użytkownika będzie tworzony rekord z jakimiś danymi. W jaki sposób mogę wyświetlić dane z tej tabeli w tej mojej testowej zakładce "O mnie"?

Niestandardowe formatowanie profilu. Invision Community

Zakładka "O mnie" w Invision Community

Odnośnik do odpowiedzi
Udostępnij na innych stronach
  • Ekspert
19 godzin temu, Gorax napisał:

1. Czy mogę w jakiś sposób pobrać dane o użytkowniku? 

{$member->name}
19 godzin temu, Gorax napisał:

2. W jaki sposób mogę wyświetlić dane z tej tabeli w tej mojej testowej zakładce "O mnie"?

Przez stworzenie aplikacji.

  • Lubię to! 1
  • Super 1
Odnośnik do odpowiedzi
Udostępnij na innych stronach

Właśnie udało mi się do tego dojść, jednak nie mam pojęcia w jaki sposób zacząć. Rozumiem, że będę musiał też w jakiś sposób utworzyć własną zmienną, aby móc później odczytać te dane. 

Mógłbym prosić o jakiś przykład kodu takiej aplikacji, która pobiera cokolwiek z jakieś forumowej tabeli ? I w jaki sposób mógłbym następnie te dane zapisać do zmiennej?


Z góry dziękuję za jakąkolwiek pomoc w tym temacie, ponieważ zależy mi na zrozumieniu działania tworzenia takiej aplikacji.

Odnośnik do odpowiedzi
Udostępnij na innych stronach
  • Ekspert
Napisano (edytowane)
1 godzinę temu, aXenDev napisał:

Przez stworzenie aplikacji.

Zainteresuj się najpierw stworzeniem tego, a potem się martw o zapytania. Nie zrobisz tego bez aplikacji.

Edytowane przez aXenDev
  • Lubię to! 1
Odnośnik do odpowiedzi
Udostępnij na innych stronach

@aXenDev Stworzyłem aplikację, następnie wybrałem w Extensions > core > Profile i dodałem tam nową zakładkę. Potem otworzyłem sobie pliczek php, który się wygenerował i próbowałem zadziałać coś z funkcją render(). Problemem jest dokładnie ta linijka: 

return \IPS\Theme::i()->getTemplate( 'zakladka', 'tutorial', 'front' )->ViewProfile($results);

W katalogu dev/html/front/zakladka utworzyłem plik zakladka.phtml z jedną linijką: <ips:template parameters=""/>. Ale po wejściu do profilu użytkownika i w nową zakładkę dostaję taki błąd: 

BadMethodCallException thrown with message "NO_TEMPLATE_FILE - /applications/tutorial/dev/html/front/zakladka/ViewProfile.phtml

Mógłbym prosić o pomoc? 🙂

Odnośnik do odpowiedzi
Udostępnij na innych stronach
  • Założyciel
  • Rozwiązanie

Cześć. Jeżeli chodzi o wyciągnięcie różnych danych użytkownika to zobacz dokumentację dla deweloperów: Working with members. Tej dokumentacji nie znajdziesz na oficjalnej stronie bo została usunięta. 

Przykład:

Id użytkownika: {$member_id}<br>
Nazwa użytkownika: {$member->name}<br>
Grupa: {$member->groupName}<br>
Reputacja: {$member->reputation()}<br>

Jeżeli chodzi o błąd:

2 godziny temu, Gorax napisał:

BadMethodCallException thrown with message "NO_TEMPLATE_FILE - /applications/tutorial/dev/html/front/zakladka/ViewProfile.phtml

Funkcja zwracająca wartość próbuje pobrać szablon o nazwie ViewProfile, więc musisz utworzyć plik o naziwe ViewProfile.phtml a nie "zakładka" 🙂 

  • Super 1
Odnośnik do odpowiedzi
Udostępnij na innych stronach

@SeNioR Hej, dziękuję bardzo za tę dokumentację i przykład z pewnością się przyda, jednak obecnie mój problem polega na braku pliku szablonu jeśli dobrze rozumiem. Tak jak pisałem wcześniej mimo stworzenia pliku w dev/html/front/zakladka/zakladka.php dostaję błąd: 

BadMethodCallException thrown with message "NO_TEMPLATE_FILE - /applications/tutorial/dev/html/front/zakladka/ViewProfile.phtml

 

Odnośnik do odpowiedzi
Udostępnij na innych stronach
  • Ekspert
44 minuty temu, Gorax napisał:

dev/html/front/zakladka/zakladka.php

nie!

44 minuty temu, Gorax napisał:

dev/html/front/zakladka/ViewProfile.phtml

tak 🙂

  • Super 1
Odnośnik do odpowiedzi
Udostępnij na innych stronach

Super, dziękuję Wam bardzo 🙂 
Mam jeszcze jedno pytanko, mam taki przykładowy kod:

public function render()
	{
		$results = [];
		foreach(\IPS\Db::i()->select('*', 'core_members', [ 'member_id=?', $this->member->member_id ]) as $row)
		{
			$row['member_id'] = $row['member_id'];
				
			$results[] = $row;
		}
		
		return \IPS\Theme::i()->getTemplate( 'zakladka', 'tutorial', 'front' )->ViewProfile($results);
	}

W jaki sposób mogę teraz wyświetlić zwrócone dane przez funkcję? Trzeba je jakoś odczytać w pliku ViewProfile.phtml?

Odnośnik do odpowiedzi
Udostępnij na innych stronach

@Weak.Dziękuję ci bardzo już rozumiem mniej więcej zasadę działania, na tę chwilę pozostaje mi już ostatnie pytanie. Jeżeli chcę ostylować wyprowadzone dane, to dodaję znaczniki html w tym pliku php? i podobnie css w znaczniku <style> czy w jakimś innym miejscu powinno się umieszczać?

Odnośnik do odpowiedzi
Udostępnij na innych stronach
  • Ekspert
Napisano (edytowane)
\IPS\Output::i()->cssFiles = array_merge( \IPS\Output::i()->cssFiles, \IPS\Theme::i()->css( 'filename.css', 'app', 'location' ) );

Działanie podobne do pliku phtml.

Edytowane przez Weak.
  • Lubię to! 1
  • Super 1
Odnośnik do odpowiedzi
Udostępnij na innych stronach

Super, właściwie prawie wszystkie moje wątpliwości są już na tę chwilę rozwiane dzięki Wam. Pozostaje jednak kwestia, o której zapomniałem wcześniej wspomnieć moja dodana zakładka wygląda w tej chwili tak
 image.thumb.png.8ba7e8ad075348b885e293f734781589.png
Może to głupie pytanie, ale w jaki sposób mogę zmienić jej nazwę? 😅

Odnośnik do odpowiedzi
Udostępnij na innych stronach

Temat można zamknąć.
Jak na ten moment dużo się od Was dowiedziałem, będę dalej drążyć temat i w razie problemów będę się odzywać w nowych tematach. Jeszcze raz dziękuję każdemu z osobna za cierpliwość 🙂 

Odnośnik do odpowiedzi
Udostępnij na innych stronach

Problem wciąż nierozwiązany? Dodaj swoją odpowiedź

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto. Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...