Skocz do zawartości


- - - - -

ROZWIĄZANY: bbcode


8 odpowiedzi w tym temacie

#1 Batman

  • Użytkownik
  • 491 postów
  • Wersja:IP.Board 3.1.2

Napisano 24 sierpień 2010 - 21:28

jak powinien wyglądać plik PHP służący do podmiany zawartości w bbcode zakładając że będzie zwracał zawartość tagu?

czy są jakieś ograniczenia lub specjalne zasady dla tego pliku?

zaczynam się poddawać nawet php nie działa mi tam przewidywalnie fragmenty czystego php działające prawidłowo jako osobne skrypty w tym pliku nagle zwracają zupełnie inne wartości,

nie dam swojego kodu bo już tak go zamieszałem ze jest bezużyteczny :D

Dołączona grafika


#2 DawPi

    ...a wy Pragnienie™

  • Manager
  • 49402 postów
  • Wersja:IP.Board 3.2.3

Napisano 24 sierpień 2010 - 21:33

Jak nie dajesz swojego kodu, to mogę jedynie poradzić, by się zawzorował na moim modzie: http://forum.invisio...7-dp30-tag-you/
intermedia - profesjonalne rozwiązania Invision Power Board

#3 Batman

  • Użytkownik
  • 491 postów
  • Wersja:IP.Board 3.1.2

Napisano 24 sierpień 2010 - 22:03

<?php

require_once( IPS_ROOT_PATH . 'sources/classes/bbcode/custom/defaults.php' );

class bbcode_test extends bbcode_parent_class implements bbcodePlugin
{
	/**
	 * Constructor
	 *
	 * @access	public
	 * @param	object		Registry object
	 * @return	void
	 */
	public function __construct( ipsRegistry $registry )
	{
		$this->currentBbcode	= 'test';

		parent::__construct( $registry );		
	}
	
	/**
	 * Method that is run before the content is displayed to the user
	 * This is the safest method of parsing, as the original submitted text is left in tact.
	 *	No markers are necessary if you use parse on display.
	 *
	 * @access	public
	 * @param	string		$txt	BBCode/parsed text from database to be displayed
	 * @return	string				Formatted content, ready for display
	 */		 
	public function preDisplayParse( $txt )
	{
		
		if( $this->_bbcode['bbcode_parse'] == 2 )
		{
			return $this->_replaceText( $txt );
		}
		else
		{
			return $txt;
		}
	}	
		
	/**
	 * Do the actual replacement
	 *
	 * @access	protected
	 * @param	string		$txt	Parsed text from database to be edited
	 * @return	string				BBCode content, ready for editing
	 */	 
	protected function _replaceText( $txt )
	{
		
        $txt = str_replace( '[test]', '', $txt );
	$txt = str_replace( '[/test]', '', $txt );


    	$imdb_id = $txt;

		if ( $imdb_id == "" )
		{
			return;
		}


$adres = "http://www.imdb.com/title/tt".$imdb_id."/";
return $imdb_id.'<br>'. $adres;
	}	
}

ten require nie jest chyba wymagany przynajmniej w 3.1.2

tag : [test]1274300[/test]

efekt powinien być następujący : 1274300
http://www.imdb.com/title/tt1274300

a jest :

1274300 http://www.imdb.com/title/tt1274300/
http://www.imdb.com/title/tt1274300 http://www.imdb.com/title/tt1274300//
http://www.imdb.com/title/tt1274300 http://www.imdb.com/title/tt1274300/
http://www.imdb.com/title/tt1274300 http://www.imdb.com/title/tt1274300///

wyświetlane są tak samo jak tutaj jako linki oczywiście

dodatkowo w innych postach dopisuje te adresy do treści (wyłączyłem cachowanie)
przy całym tagu po prostu zastępuje treści innych postów

a i przy okazji co określa ten warunek : $this->_bbcode['bbcode_parse'] == 2 ?

Dołączona grafika


#4 DawPi

    ...a wy Pragnienie™

  • Manager
  • 49402 postów
  • Wersja:IP.Board 3.2.3

Napisano 24 sierpień 2010 - 22:55

Dodałem ten tag i oto efekt:

Dołączona grafika

Czyli zamierzony.
intermedia - profesjonalne rozwiązania Invision Power Board

#5 Batman

  • Użytkownik
  • 491 postów
  • Wersja:IP.Board 3.1.2

Napisano 25 sierpień 2010 - 14:14

To co jest u mnie nie tak?
sprawdzane na 3.1.2 i na 3.0.4 na vertrigo i na dedyku z najnowszymi bebechami

może jakieś ustawienie forum?

na 3.0.4 dodałem taki kod :

<?php


class bbcode_test extends bbcode_parent_class implements bbcodePlugin
{



        public function __construct( ipsRegistry $registry )
        {

               $this->currentBbcode     = 'test';

                parent::__construct( $registry );
        }





                protected function _replaceText( $txt )

        {
             $tekst = 'to jest test';
             $test = str_replace('[test]','',$txt);
             $tag = str_replace('[/test]','',$test);
             
             $txt = $tag.$tekst;
                          return $txt;

        }

}

?>

wszystko jest ok dopóki nie dodam do wynikowej zmiennej jakiegoś tekstu (tutaj $tekst) wtedy do każdego następnego postu (w którym pisze cokolwiek) dodaje mi zawartość zmiennej $tekst

jakieś pomysły?

Dołączona grafika


#6 Batman

  • Użytkownik
  • 491 postów
  • Wersja:IP.Board 3.1.2

Napisano 03 wrzesień 2010 - 19:15

można zamknąć sprawa jest nieco dziwna aczkolwiek poradziłem sobie

Dołączona grafika


#7 DawPi

    ...a wy Pragnienie™

  • Manager
  • 49402 postów
  • Wersja:IP.Board 3.2.3

Napisano 03 wrzesień 2010 - 21:40

Można, dla dzieci dzieci, wiedzieć jak?
intermedia - profesjonalne rozwiązania Invision Power Board

#8 Batman

  • Użytkownik
  • 491 postów
  • Wersja:IP.Board 3.1.2

Napisano 05 wrzesień 2010 - 14:32

w najprostszy możliwy sposób skopiowałem tag img a dokładnie jego funkcję _replaceText inaczej nie chciało działać
co prawda część funkcji nie jest konieczna ale w sumie nie przeszkadza i wydaje mi się ze takie jest założenie aby dopiero w funkcji budowania zamiennika tagu wstawiać własne pomysły.

Dołączona grafika


#9 DawPi

    ...a wy Pragnienie™

  • Manager
  • 49402 postów
  • Wersja:IP.Board 3.2.3

Napisano 05 wrzesień 2010 - 17:54

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





Użytkownicy przeglądający ten temat: 1

0 użytkowników, 1 gości, 0 anonimowych