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

Rekomendowane odpowiedzi

Opublikowano

Witam!

Ostatnio w trakcie prac na forum zauważyłem, że dość często zachodzi potrzeba cytowania fragmentów kodu: php, c++, sql itd.

Skrypt forum standardowo pozwala używać kilku bbcodów:

[sql] [html] [code]

Przydałby się jakiś uniwersalny system do kolorowania składni kodu. I tu pojawia się GeSHi - Generic Syntax Highlighter, który potrafi kolorować składnię dla ponad 100 języków programowania. Niestety mimo poszukiwań nie udało się znaleźć nigdzie informacji jak zaimplementować go na forum IPB. (znalazłem tylko info jak go włączyć w dodatku IPBWiki)

Podaję link, gdzie opisano jak można używać go na forum IPB2.2

http://www.smosh.com/forums/index.php?showtopic=5643

Postępowałem według zawartych tam wskazówek, ale po pierwsze nie działa, a po drugie jest to metoda pośrednia.

Bo pod kodem zawartym w znaczniku CODEXBOX mamy odnośnik: Pokaż podświetloną składnie. Po kliknięciu wyskakuje okienko.

A ja chciałbym by od razu kolorowało składnie, tak jak np, na forum http://forum.php.pl/ (oni tam zaimplementowali geshi)

46279b204b.png

Rozwiążemy dla Ciebie każde zadanie z matematyki: http://matma4u.pl

Opublikowano

Czytałem dokumentacje i zrozumiałem to tak, że tworzymy jakiś plik o zawartości:

<?
include_once 'geshi.php';
$source = '';
$language = '';

$geshi = new GeSHi($source, $language);

echo $geshi->parse_code();
?>

Do zmiennej $source przekazujemy kod, w $language określamy jaki to rodzaj języka np. php, c++(bo geshi w zależności od tego parametru koloruje inaczej składnie)

Nie wiem jak to zaimplementować do BBcode np KOD, w którym {option} określało by rodzaj języka ($language), a {content} kod do pokolorowania składni ($source)

46279b204b.png

Rozwiążemy dla Ciebie każde zadanie z matematyki: http://matma4u.pl

  • Manager
Opublikowano

Tak sobie jeszcze przypomniałem, że w IP.Board 3.x będzie to bardzo łatwe do zaimplementowania, a przynajmniej znacznie łatwiejsze niż w obecnych wersjach ze względu na możliwość uruchomienia kodu PHP podczas obsługi danego tagu.

Zaraz spróbuję coś spojrzeć na to, co napisałeś wyżej. :)

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

  • Manager
Opublikowano

Tak, wiem o tym, ale czekam na IP.Boards 3.x, gdzie jest zaimplementowana obsługa tagów PHP - kolorowanie składni itd. Może pomyślę nad tym Geshi do właśnie 3.x. :)

Do 2.x, ale jeszcze nie teraz.

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Opublikowano

Znalazłem takie coś:

	function highlightText($source, $lang, $line)
{
	include_once(LIB.'geshi/geshi.php');
	$source = stripslashes(htmlspecialchars_decode($source));
	$geshi = new geshi($source, $lang);
	$geshi -> enable_line_numbers(GESHI_FANCY_LINE_NUMBERS, 3);
	$geshi->set_header_type(GESHI_HEADER_PRE_VALID);
	$geshi->start_line_numbers_at($line);
	return '<dl class="code"><dt>Kod '.$lang.':</dt><div>'.stripslashes($geshi->parse_code()).'</div></dl>';
}//end highlightText()
function convertText2BB($text)
{
	$text = preg_replace('/\[syntax=(.+?) line=([0-9]+)\]([\d, \D]+?)\[\/syntax\]/e', 'highlightText(\'\\3\', \'\\1\', \'\\2\')', $text);
	return $text;
}//end convertText2BB()

Tylko nie wiem co i jak dalej z tym zrobić. Z kodu wywnioskowałem, że trzeba stworzyć tak [syntax] z opcją,ale dalej nie kumam

46279b204b.png

Rozwiążemy dla Ciebie każde zadanie z matematyki: http://matma4u.pl

  • 2 tygodnie później...
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ę.