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

Opublikowano

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  ;) 

Opublikowano (edytowane)

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
Opublikowano (edytowane)

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
Opublikowano (edytowane)

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
Opublikowano

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.

  • Manager
Opublikowano

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.

Opublikowano (edytowane)

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
Opublikowano


$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 );

}

}

}

Opublikowano

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 ?

Opublikowano

post-26187-0-26294300-1452426803_thumb.p

 

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ć

Opublikowano

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

Opublikowano (edytowane)

 

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
Opublikowano

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
  • Rozwiązanie
Opublikowano

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