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

ROZWIĄZANY: Nowy tag BBcode ukryty dla gości...


unbreak

Rekomendowane odpowiedzi

Znalazłem rozwiązanie jak zrobić aby tag 'code' był ukrywany przed gośćmi, próbowałem przeczesać ten kod, aby znaleźć coś co by oznaczało że dot on właśnie ów tagu, żeby móc zmienić na określony.

Chcę stworzyć nowy tag, np hide i żeby był on ukrywany przed gośćmi...

userbar1.jpg

Twiztid Tribe ®

Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager

W jaki sposób ukrywany? Treść w nim zawarta? Modyfikacja hide, została napisana, proszę (T30) Hide Content.

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

Ukrywana zawartość tagu... czyli to co pomiędzy... i żeby zobaczyć co w nim jest, trzeba by się zalogować.

A jakieś wyjście nie płatne? :(

Nie można stworzyć własnego tagu bbcode, i ustawić go tak jak można zrobić z 'code'? Albo żeby code był ukrywany, ale nie zawsze... np tylko

 byłby ukrywany... :]

userbar1.jpg

Twiztid Tribe ®

Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager

Nie płatna opcja jest tylko jedna - napisać coś takiego samemu.

terabyte napisał modyfikację ukrywającą zawartość w hide *hide, a odkrywającą po napisaniu odpowiedzi. Możesz napisać własną wersję - ukrywającą linki dla gości.

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

Dzięki, ja miałem zamiar użyć:

<if test="memberbox:|:$this->memberData['member_id']">
Heeelooł
</if>

W edycji bbcode jest coś takiego:

lub plik PHP do wykonania

Domyślam się że właśnie w ten sposób zrobić... teraz pytanie jaki jest parametr w tym pliku php na content?

też {content} tak jak w normalniej edycji bbcode?

userbar1.jpg

Twiztid Tribe ®

Odnośnik do komentarza
Udostępnij na innych stronach

Jedno głupie pytanie, ale może mieć znaczenie...

W "lub plik PHP do wykonania" podajemy pełną nazwę tego pliku (razem z php?) czy bez php

test.php czy test

Jak próbuję to nie chce wszystkiego dwa razy sprawdzać (z php i bez) :]

[+] z tego tekstu to ja nie wiele rozumiem ;/

[++] nie wynika z niego jakim parametrem mianuje się content miedzy tagami ;/

Edytowane przez unbreak

userbar1.jpg

Twiztid Tribe ®

Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager

Dodajesz nazwę pliku wraz z rozszerzeniem, czyli .php..

Jak może to wynikać, jak Ty nie znasz PHP. Po co się w ogóle za coś takiego brać?

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

jak nie znam jak znam, nie jestem jakimś pro koderem, ale znam...

protected function _replaceText($txt)
{
       $_tags = $this->_retrieveTags();

       foreach( $_tags as $_tag )
       {
               $txt = preg_replace( "/\[{$_tag}\](.+?)\[\/{$_tag}\]/i", "<div style='float:left;'>\\1</div>", $txt );
       }

       return $txt;
}

Jakoś trzeba przekazać tam parametr $txt który jest właśnie tym contentem, ale skąd mam go pobrać? To już inna bajka, nie znam za dobrze struktury...

userbar1.jpg

Twiztid Tribe ®

Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager

Nie musisz przekazywać, IP.Board zrobi to sam, jak ktoś użyte tego tagu. Ciebie interesuje tylko przetworzenie w metodzie przekazanej zmiennej $txt.

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

HAhahaHahaha.... ja się zastanawiałem... łamałem sobie głowę czemu nie działa... a tutaj to nie działa wstecz -.- Gdyby nie istniejący już temat tylko dot [code ] gdzie też właśnie tam o tym była mowa, to bym chyba sam na to nie wpadł i szybko bym się poddał "czemu mi to nie działa!?" :(

Tzn wcześniej napisany post z tagiem hide, po zmianie pliku php nie był formatowany na nowo, dopiero po napisaniu nowego zadziałało na ten nowy....

Działa :)

Tak widzi zalogowany:

loginax.jpg

a tak niezalogowany:

logoutr.jpg

Dzięki DawPi za pomoc :blink:

[+] Nie działa ja content tagu ma więcej jak jedną linię ;< jakieś pomysły why!?

Edytowane przez unbreak

userbar1.jpg

Twiztid Tribe ®

Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager

Nie działało wstecz - bo miałeś posty zapisane w cache.

Nie działa na wiele linii, bo nie zakodowałeś tego na wiele. Nie mam Twojego kodu to nie wiem, co źle napisałeś.

A potem możesz np. napisać poradnik i wrzucić do działu z tutorialami. :(

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

Nie działało wstecz - bo miałeś posty zapisane w cache.

Raczej to przez to (jak widać na screenie) że poprzedni tag był w trzech liniach, a jak napisałem nie działa na takie ;/
Nie działa na wiele linii, bo nie zakodowałeś tego na wiele. Nie mam Twojego kodu to nie wiem, co źle napisałeś.
Co do kodu, to za wiele nie kombinowałem, delikatnie mówiąc zerżnąłem go z tego co podałeś - "Custom bbcode plugins." a o to i kod:

<?
if( $this->memberData['member_id'] ){
class bbcode_hide extends bbcode_parent_class implements bbcodePlugin{
	public function __construct( ipsRegistry $registry ){
		$this->currentBbcode    = 'hide';
		parent::__construct( $registry );
	}

	protected function _replaceText($txt){
		$_tags = $this->_retrieveTags();

		foreach( $_tags as $_tag ){
			$txt = preg_replace( "/\[{$_tag}\](.+?)\[\/{$_tag}\]/i", "<div style=\"border: 1px dotted #333; padding: 1px; background-color: #333; color: #fff; font-weight: bold; height: 16px; font-size: 13px;\">Ukryta zawartość:</div><div style=\"border: 1px dotted #333; border-top: none;\">\\1</div>", $txt );
		}

		return $txt;
	}


}

}else{

class bbcode_hide extends bbcode_parent_class implements bbcodePlugin{
	public function __construct( ipsRegistry $registry ){
		$this->currentBbcode    = 'hide';
		parent::__construct( $registry );
	}

	protected function _replaceText($txt){
		$_tags = $this->_retrieveTags();

		foreach( $_tags as $_tag ){
			$txt = preg_replace( "/\[{$_tag}\](.+?)\[\/{$_tag}\]/i", "<div style=\"border: 1px dotted #333; padding: 1px; background-color: #333; color: #fff; font-weight: bold; height: 16px; font-size: 13px;\">Ukryta zawartość:</div><div style=\"border: 1px dotted #333; border-top: none;\">By zobaczyć treść trzeba się <a href='http://oc-community.org/index.php?app=core&module=global&section=login'>zalogować</a>. Nie masz konta? <a href='http://oc-community.org/index.php?app=core&module=global&section=register'>Zarejestruj się</a> już teraz!</div>", $txt );
		}

		return $txt;
	}


}


}


?>

Proszę nie patrzeć na to jak jest styl formatowany, to wersja robocza :)

Jakbyś mógł mnie jedynie naprowadzić w czym szukać rozwiązania... pewnie trzeba coś z $txt pokombinować, ale też pewnie się mylę :(

A potem możesz np. napisać poradnik i wrzucić do działu z tutorialami. :blink:

:(

userbar1.jpg

Twiztid Tribe ®

Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager

Masz rację - o php wiesz niewiele. Nie zapisuj warunku w taki sposób tylko zrób go w klasie już. Nie kalecz tak pięknego języka. :(

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

W klasie czy w metodzie? :> Czy jak to się tam w php nazywa ;p

<?
       class bbcode_hide extends bbcode_parent_class implements bbcodePlugin{
               public function __construct( ipsRegistry $registry ){
                       $this->currentBbcode    = 'hide';
                       parent::__construct( $registry );
               }

               protected function _replaceText($txt){
                       $_tags = $this->_retrieveTags();

                       foreach( $_tags as $_tag ){
                           if( $this->memberData['member_id'] ){
                                   $txt = preg_replace( "/\[{$_tag}\](.+?)\[\/{$_tag}\]/i", "<div style=\"border: 1px dotted #333; padding: 1px; background-color: #333; color: #fff; font-weight: bold; height: 16px; font-size: 13px;\">Ukryta zawartość:</div><div style=\"border: 1px dotted #333; border-top: none;\">\\1</div>", $txt );
                           }else{
                                  $txt = preg_replace( "/\[{$_tag}\](.+?)\[\/{$_tag}\]/i", "<div style=\"border: 1px dotted #333; padding: 1px; background-color: #333; color: #fff; font-weight: bold; height: 16px; font-size: 13px;\">Ukryta zawartość:</div><div style=\"border: 1px dotted #333; border-top: none;\">By zobaczyć treść trzeba się <a href='http://oc-community.org/index.php?app=core&module=global&section=login'>zalogować</a>. Nie masz konta? <a href='http://oc-community.org/index.php?app=core&module=global&section=register'>Zarejestruj się</a> już teraz!</div>", $txt );
                           }
                       }

                       return $txt;
               }


       }
?>

No ok, ale co zrobić z tym żeby na więcej linii też działało? :>

userbar1.jpg

Twiztid Tribe ®

Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager

Co zrobić, co zrobić. Pomyśleć, zajrzeć do manuala, poczytać o funkcji preg_replace(), pokombinować i choć przez chwilę wczuć się we mnie, jak czytam teksty 'a tam, przecież to tylko parę linijek kodu trzeba dodać, proste,' albo 'ktoś wie jak zmienić ..' - pewnie, że wie, ale to wymaga czasu i wiedzy.

Przenoszę do działu zaawansowane programowanie.

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

Dobra... mogę liczyć jeszcze na jakąś podpowiedź?... czytam i czytam na co tylko natrafię o wyrażeniach regularnych... przeczytałem ze trzy razy: http://pl2.php.net/manual/en/function.preg-replace.php

Ale nic mi jakoś nie pomaga dokładnie w moim problemie :(

Testuje na czymś takim, ma mi zamienić wszystko pomiędzy znakiem "!" a "?" i zamienia, jeśli wszystko jest w jednej linii

<?php
$s = "!Testing, testing.\r\n"
  . "Another testing line.\r\n"
  . "Testing almost done.?";

$s2='!Text
Text2?
';

echo "<br />";
$txt = preg_replace( "/(*ANYCRLF)\!(.*)\?/m", "Cos tutaj jest... \\1 ...a tutaj sie konczy", $s );
echo $txt;

echo "<br />";echo "<br />";echo "<br />";
$txt2 = preg_replace( "/(*ANYCRLF)\!(.*)\?/m", "Cos tutaj jest... \\1 ...a tutaj sie konczy", $s2 );
echo $txt2;
?>

Jakaś mała wskazówka może? :>

Edytowane przez unbreak

userbar1.jpg

Twiztid Tribe ®

Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager

Nie mam w chwili obecnej. Mam identyczną zagwozdkę w tutorialu ukrywającym treść code dla gości. Mam go również zapisanego w ToDo. Jak będę robić i zrobię to napiszę też tutaj (o ile nie zapomnę). Jednak do tej pory działaj dalej. Jeszcze nie znam osoby, która by się wyrażeń regularnych nauczyła w parędziesiąt minut, jak Ty chcesz. :(

Widzę, że chcesz, ale trochę za szybko się poddajesz.

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

ba!

Działa:

<?
if( $this->memberData['member_id'] ){
class bbcode_hide extends bbcode_parent_class implements bbcodePlugin{
	public function __construct( ipsRegistry $registry ){
		$this->currentBbcode    = 'hide';
		parent::__construct( $registry );
	}

	protected function _replaceText($txt){
		$_tags = $this->_retrieveTags();

		foreach( $_tags as $_tag ){
			$txt = ereg_replace( "\n", " ", $txt );
			$txt = preg_replace( "/\[{$_tag}\](.+?)\[\/{$_tag}\]/i", "<div style=\"border: 1px dotted #333; padding: 1px; background-color: #333; color: #fff; font-weight: bold; height: 16px; font-size: 13px;\">Ukryta zawartość:</div><div style=\"border: 1px dotted #333; border-top: none;\">\\1</div>", $txt );
		}

		return $txt;
	}


}

}else{

class bbcode_hide extends bbcode_parent_class implements bbcodePlugin{
	public function __construct( ipsRegistry $registry ){
		$this->currentBbcode    = 'hide';
		parent::__construct( $registry );
	}

	protected function _replaceText($txt){
		$_tags = $this->_retrieveTags();

		foreach( $_tags as $_tag ){
			$txt = ereg_replace( "\n", " ", $txt );
			$txt = preg_replace( "/\[{$_tag}\](.+?)\[\/{$_tag}\]/i", "<div style=\"border: 1px dotted #333; padding: 1px; background-color: #333; color: #fff; font-weight: bold; height: 16px; font-size: 13px;\">Ukryta zawartość:</div><div style=\"border: 1px dotted #333; border-top: none;\">By zobaczyć treść trzeba się <a href='http://oc-community.org/index.php?app=core&module=global&section=login'>zalogować</a>. Nie masz konta? <a href='http://oc-community.org/index.php?app=core&module=global&section=register'>Zarejestruj się</a> już teraz!</div>", $txt );
		}

		return $txt;
	}


}


}


?>

Wystarczył jeden wpis:

$txt = ereg_replace( "\n", " ", $txt );

a o to efekt:

hidex.jpg

userbar1.jpg

Twiztid Tribe ®

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