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

Pobieranie ID użytkownika


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

Rekomendowane odpowiedzi

Siemanko,

 

Działam na IPB 3.4.7. Robię sobie zakładkę  i potrzebuje tam nazwę albo id użytkownika. W ProfileTabs łatwa sprawa, wszystko jest w PHP i wystarczy:

$przegladajacy = $this->memberData['member_id'];

Problem pojawia się w zakładkach na stronie głównej, bo ( przez rozszerzenie 'Pages') można tam wklejać tylko html. Szukam więc jak można dostać się do member_id z html.

Widziałem już wcześniej, że w stylach, w edycji szablonów powiedzmy w hookRecentTopics są takie sztuczki jak:

<h3>{$this->lang->words['recently_added_topics']}</h3>

Tylko jak próbuję sobie do mojego pliku html wkleić coś takiego:

{ $this->memberData['member_id'] }

To nie dostaję id użytkownika, tylko wyświetla mi to zwyczajnie jako tekst.


Jeśli ktoś wie jak sobie z tym poradzić to będę wdzięczny za pomoc  ;) 

Odnośnik do komentarza
Udostępnij na innych stronach

Siemanko,

 

Działam na IPB 3.4.7. Robię sobie zakładkę  i potrzebuje tam nazwę albo id użytkownika. W ProfileTabs łatwa sprawa, wszystko jest w PHP i wystarczy:

$przegladajacy = $this->memberData['member_id'];

Problem pojawia się w zakładkach na stronie głównej, bo ( przez rozszerzenie 'Pages') można tam wklejać tylko html. Szukam więc jak można dostać się do member_id z html.

Widziałem już wcześniej, że w stylach, w edycji szablonów powiedzmy w hookRecentTopics są takie sztuczki jak:

<h3>{$this->lang->words['recently_added_topics']}</h3>

Tylko jak próbuję sobie do mojego pliku html wkleić coś takiego:

{ $this->memberData['member_id'] }

To nie dostaję id użytkownika, tylko wyświetla mi to zwyczajnie jako tekst.

Jeśli ktoś wie jak sobie z tym poradzić to będę wdzięczny za pomoc  ;)

 

a jakbyś to napisał w bloku, i potem w miejscu gdzie chcesz to wyświetlić, w pages, wstaw ten blok {parse block="nazwa_bloku"}
Edytowane przez Blaine
  • Lubię to 1
Odnośnik do komentarza
Udostępnij na innych stronach

Znalazłem te bloki, dzięki. Swoją drogą otwierają wiele nowych możliwości :) Tymczasem stworzyłem nowy blok o nazwie get_user_id

$user = $this->memberData['member_id'];
echo $user;

Wkleiłem {parse block="get_user_id"} w swój kod. Ale niestety dalej wyświetla w formie tekstu.. Co ciekawe, jeśli wkleję go np w hookRecentTopics to na stronie głównej działa poprawnie.

Nie ma jakiegoś "include blocks" które trzeba umieścić w pliku, aby kod mógł z bloków korzystać ?

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

Znalazłem te bloki, dzięki. Swoją drogą otwierają wiele nowych możliwości :) Tymczasem stworzyłem nowy blok o nazwie get_user_id

$user = $this->memberData['member_id'];
echo $user;

Wkleiłem {parse block="get_user_id"} w swój kod. Ale niestety dalej wyświetla w formie tekstu.. Co ciekawe, jeśli wkleję go np w hookRecentTopics to na stronie głównej działa poprawnie.

Nie ma jakiegoś "include blocks" które trzeba umieścić w pliku, aby kod mógł z bloków korzystać ?

Jak edytujesz stronkę w pages, to po prawej stronie masz takie menu bloków, dodaj ten twój stamtąd. 

Ty chcesz to dodać do index.html, czy do jakiejś nowej stronki, czy inne bloki możesz dodawać?

Edytowane przez Blaine
  • Lubię to 1
Odnośnik do komentarza
Udostępnij na innych stronach

Gdzie to dokładniej wkleiłeś w swoim kodzie?

 

W części <body>

<body>
Twoje ID: { $this->memberData['member_id'] }
<div id="contentDiv" >
</div>
</body>

contentDiv jest pusty, bo zawartość do niego pobiera JS. Jak zadziałają bloki to będzie można to zrobić dużo łatwiej.

 

 

 

Jak edytujesz stronkę w pages, to po prawej stronie masz takie menu bloków, dodaj ten twój stamtąd. 

Ty chcesz to dodać do index.html, czy do jakiejś nowej stronki, czy inne bloki możesz dodawać?

 

Może mam starą wersję, nie widzę tam takiego menu  :mellow:

85448519926711537826.png

 

Chcę to dodać do strony Monitor.

Kiedy wklejam inne bloki, wziąłem na próbę {parse block="portal_recent_topics"} efekt jest taki sam, wyświetla się jako tekst nie wykonując skryptu zawartego w bloku.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager

Bo go musisz 'sparsować'. Takim oto kodem:

$html = '{parse block="portal_recent_topics"}';
 
if( $this->caches['app_cache']['ccs'] && $this->caches['app_cache']['ccs']['app_enabled'] )
  {
   if( ! $this->registry->isClassLoaded( 'ccsFunctions' ) )
   {
    $classToLoad = IPSLib::loadLibrary( IPSLib::getAppDir('ccs') . '/sources/functions.php', 'ccsFunctions', 'ccs' );
    $this->registry->setClass( 'ccsFunctions', new $classToLoad( $this->registry ) );
   } 
           
            if ( !( $this->registry->isClassLoaded('pageBuilder') ) )
            {
                require_once( IPSLib::getAppDir('ccs') . '/sources/pages.php' );
                $this->registry->setClass('pageBuilder', new pageBuilder( $this->registry ) );
            }
      /* Get all blocks from content */
       
   preg_match_all( "#\{parse block=\"(.+?)\"\}#", $html, $matches );

   if( count( $matches ) )
   {
  
    foreach( $matches[1] as $index => $key )
    {
     $html = str_replace( $matches[0][ $index ], $this->registry->getClass('pageBuilder')->getBlock( $key ), $html );
    }
   }
  }
  • Lubię to 1

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

Sprasować, też gdzieś to słyszałem już. To jest php, czyli powinienem to dać w bloku, zgadza się ?

 

EDIT: dostaje taką wiadomość od IPB:
 

The contents that you submitted would create a parser error when compiled into appropriate PHP code. Please verify any PHP code, template tags and template plugin tags (such as parse blocks) and resubmit your data.

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


$user = $this->memberData['member_id'];

echo $user;

$html = '{parse block="get_user_id"}';

if( $this->caches['app_cache']['ccs'] && $this->caches['app_cache']['ccs']['app_enabled'] )

{

if( ! $this->registry->isClassLoaded( 'ccsFunctions' ) )

{

$classToLoad = IPSLib::loadLibrary( IPSLib::getAppDir('ccs') . '/sources/functions.php', 'ccsFunctions', 'ccs' );

$this->registry->setClass( 'ccsFunctions', new $classToLoad( $this->registry ) );

}

if ( !( $this->registry->isClassLoaded('pageBuilder') ) )

{

require_once( IPSLib::getAppDir('ccs') . '/sources/pages.php' );

$this->registry->setClass('pageBuilder', new pageBuilder( $this->registry ) );

}

/* Get all blocks from content */

preg_match_all( "#\{parse block=\"(.+?)\"\}#", $html, $matches );

if( count( $matches ) )

{

foreach( $matches[1] as $index => $key )

{

$html = str_replace( $matches[0][ $index ], $this->registry->getClass('pageBuilder')->getBlock( $key ), $html );

}

}

}

Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager

No właśnie! To Jak Ty sobie wyobrażasz sparsować blok jak możesz/chcesz jedynie HTML użyć. Słabo.

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

No właśnie sobie nie wyobrażam >.< Dlatego założyłem temat, żeby się zapytać czy jakiś sposób istnieje.

 

 

 

Problem pojawia się w zakładkach na stronie głównej, bo ( przez rozszerzenie 'Pages') można tam wklejać tylko html. Szukam więc jak można dostać się do member_id z html.

 

To w takim razie, czy da się samemu stworzyć zakładkę na stronie głównej, z pominięciem Pages i z możliwością użycia php ?

Odnośnik do komentarza
Udostępnij na innych stronach

attachicon.gifClipboard02.png

 

Podczas edycji stronki w pages, po prawej mam taką listę bloków, wystarczy że kliknę plusik przy jakimś i go dodaje, mogę też wpisać ręcznie {parse block="nazwa_bloku"} i też zadziała, nie muszę nic parsować

 

Jak dokładnie nazywa się twoja aplikacja i jaką masz wersję ?

Odnośnik do komentarza
Udostępnij na innych stronach

 

attachicon.gifClipboard02.png

 

Podczas edycji stronki w pages, po prawej mam taką listę bloków, wystarczy że kliknę plusik przy jakimś i go dodaje, mogę też wpisać ręcznie {parse block="nazwa_bloku"} i też zadziała, nie muszę nic parsować

 

Jak dokładnie nazywa się twoja aplikacja i jaką masz wersję ?

 

post-26187-0-25900400-1452427828_thumb.p

 

racja pages!= ip.content moja wina przepraszam za wprowadzenie w błąd

Edytowane przez Blaine
  • Lubię to 1
Odnośnik do komentarza
Udostępnij na innych stronach

No właśnie sobie nie wyobrażam >.< Dlatego założyłem temat, żeby się zapytać czy jakiś sposób istnieje.

 

 

 

Problem pojawia się w zakładkach na stronie głównej, bo ( przez rozszerzenie 'Pages') można tam wklejać tylko html. Szukam więc jak można dostać się do member_id z html.

 

To w takim razie, czy da się samemu stworzyć zakładkę na stronie głównej, z pominięciem Pages i z możliwością użycia php ?

 

Co to znaczy "zakładka na stronie głównej", pokaż scr może i wytłumacz jak to ma działać.

  • Lubię to 1
Odnośnik do komentarza
Udostępnij na innych stronach

  • Rozwiązanie

Okej, znalazłem rozwiązanie, napiszę tu dla potomnych, gdyby ktoś kiedyś tego szukał:

 

  1. Aby stworzyć nową stronę ACP > Aplikacje > IPS Content > Page Menager > [ + Add Page ]
    Tam można napisać swoją stronę używając BBcode, HTML lub PHP 
    Na końcu tworzenia zostanie wygenerowany do niej link, który trzeba zapisać.
     
  2. Aby dodać stronę do menu strony ( tam gdzie są zakładki, Forum, Members itd. ) ACP > Aplikacje > IPS Content > Settings > Navigation Menu > [ + Add Tab ]
    Tam należy wypełnić pola i podać wcześniej skopiowany link do strony. Po zakończeniu edycji można przesunąć na liście belkę zawierającą stronę zmieniając jej położenie w Menu strony

Wersja silnika: IPB 3.4.7

Dziękuję @Blaine @DawPi za pomoc i naprowadzenie mnie na rozwiązanie.

  • Lubię to 2
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ę.