Kacsacsőrök

Anonymous képe

Sziasztok!
Szeretnék forráskódokat (vagy legalábbis kódrészleteket mindenképpen) kiírni az oldalamra. Csakhogy. Amikor cikket írok, akkor ha a rendes "kacsacsőrös" formát használom, akkor azt HTML tag-ként értelmezi a browser. Ugye ezen úgy szokás segíteni, hogy &lt, &gt -t írunk helyette. És itt a nagy baj. Mert nekem (de ahogy látom, nektek is) maguk a kódok jelennek meg, és nem a jelek, amiket helyettesíteni szeretnék.
Mi lehet a probléma? A magyar fordítás fönt van.
Toma

Fórum: 
Hojtsy Gábor képe

A Drupalban alapban van egy ilyen szűrő (amit ki lehet kapcsolni :), amivel a <code> HTML elem tartalmában nyugodtan lehet írni a HTML elemeket, azok automatikusan konvertálódnak, tehát nem kell &lt;-re és &gt;-re cserélni.

0
0
Anonymous képe

OK, az rendben van, hogy van ilyen szűrő, de hol? Nekem nem sikerült megtalálnom. Én az adminisztráció/beviteli formák menüpontban kerestem, ott nem találtam meg. Vagy a programkódban kell vájkálni?
Toma

0
0
chx képe

Amikor tartalmat adsz hozzá, be tudod állítani a szűrt HTML formát. Ezt a bemeneti formák képenyőn tudod konfigurálni.

0
0
Anonymous képe

Szóval be volt állítva hogy filtered html és a beviteli formáknak engedélyezve volt a < code > tag. Az egyetlen, amit nem szeretett, hogy ha a kacsacsőrt "hozzáragasztottam" az előtt ill. utána álló szöveghez, akkor tag-ként értelmezte, ha hagytam előtte-utána egy-egy szóközt, akkor sikerült megjeleníteni őket. Már csak egyetlen dolog bántotta a (kacsa)csőrömet, mégpedig az egymás után írt 2 ugyanolyan típusú kacsacsőr. Ilyesmi a C++ forráskódokban forul elő, nem is ritkán, és ez szintaktikaileg csak szóköz nélkül helyes. Ezt nem hogy szimplán nem szereti, egészen egyszerűen ennek hatására a cikk további része levágódik. Ekkor próbáltam ki azt, hogy az elemeket ne törölje, hanem escape-elje. Reméltem, hogy ez csak a nem engedélyezett elemekre fog megtörténni. Nem így lett. Így bár a "dupla kacsacsőr" szépen megjelent, nem tudom a kódot formailag elkülöníteni a szöveg többi részétől, mert az ugye HTML kódokat igényelne, de azt meg escapeli...
A másik problémám pedig az, hogy a < pre > elem hatására nem tartja meg a formázást (tab, több space egymás után), az &nbsp-t meg nem lehet használni (és mellesleg nem is szép.)
Erre valami ötlet?
Toma,
aki programozós honlapot csinálna.
ui: sőt, az előnézet kapcsán kiderült a dupla kacsacsőrről, hogy akkor sem szereti, ha hagyok közte egy szóközt.

0
0
Hojtsy Gábor képe

A code elem HTML kódra van kitalálva, és abban nem érvényes a két egyező kacsacsőr egymás mellett... Sajnos ennek megváltoztatásához bele kellene másznod a PHP kódba...

Ha nem akarod az alap Drupalt módosítani, akkor a codefilter modult telepítsd, és azt módosítsd igény szerint.

0
0
Anonymous képe

Köszönöm az eddigi segítséget,
a Codefilter sikeresen megoldotta a kacsacsőrös problematikát, ráadásul szépen lehet vele elkülöníteni a forráskódokat.
Összesen egy probléma maradt még ezzel kapcsolatban, a kód formázása behúzásokkal. Ezt még nem sikerült megcsinálnom, mert ha csak simán a < code > elemben vagyok, akkor mindent (stíluslaptól függően pl. balra) ugyanoda igazít. Ha meg az egészet belerakom egy < pre > elembe, akkor dupla sortörések lesznek, mert a sortörésátalakító berak egy br-t, a < pre > hatására meg a síma sortörések is látszanak.
Tehát akkor az a kérdés, hogy meg lehet-e csinálni (esetleg erre is van egy modul?) hogy a sortörésátalakító ne működjön a < pre > elemen belül.
Vagy ha tud valaki másik módot, ahogyan a behúzásokat meg lehet őrizni, kérem, írja be.
Köszönöm:
Toma

0
0
Anonymous képe

letöltöttem és felraktam a BBCode modult, de sajnos nem segít, mert a

 BBtag a formázásban < pre >-ként jelenik meg :(
Toma
0
0
Hojtsy Gábor képe

Nem is úgy van elképzelve, hogy a bbcode és a HTML szűrők egyszerre működjenek. Mint említettem ehhez neked kell fejleszteni, el kell érned, hogy ne tegyen be sortörést a codefilter, ha neked nem úgy kell.

0
0
Anonymous képe

Na, amikor azt olvastam, hogy ehhez nekem kell fejleszteni, bizony kicsit elkeseredtem :(
Viszont a problémát az elkeseredésemmel együtt sikerült viszonylag hamar megoldani. Tanulságul leírom, hogy mindössze a ennyit kell csinálni: a codefilter.module 37 sora után szúrjuk be a következőt:
$text=str_replace("< br / >","",$text); [csak a tag-et nem így írjuk, hanem a kacsacsőröl előtt-után szóköz nélkül ;]
Igaz, ez esetleg olyan szövegrészeket is kivesz, amiknek a kódban lett volna a helyük, bár nem valószínű, ha a szűrőket így rendezzük: HTML átalakító, sortörés, codefilter.
Köszönöm mindenkinek a segítséget.
Toma
ui: találtam egy jó kis modot phpBB fórumhoz, ami tetszőleges nyelven írt forrást syntax highlighinggal lát el, most éppen azon ügyködöm, hogy ezt valahogy összehekkeljem a drupalal.

0
0
chx képe

Köszönjük, hogy megosztottad velünk tapasztalaidat és kódodat!

0
0