Néha elkerülhetetlen különböző webmédia tartalmak beillesztése a TinyMCE-be, vagy egyéb wysywig editorba. Lehet próbálkozni a google maps iframes megoldásával (első mentésig működik is), vagy a youtube embed-jével, vagy egyéb más “különleges” kódokkal. Youtube-ra létezik plugin (nem próbáltuk), mapsre nem találtunk megoldást. Erre eszünkbe jutott egy okos nagyszerű hülye ötlet, mely vélhetően nem a legszebb megoldás, de egyszerűsége miatt gyakorlatilag bármit megeszik.
Cél az, hogy a beillesztendő kód eredeti formában jelenjen meg, azt a szerkesztő ne rontsa el. Az ötlet a következő:
- illesszük be szerkesztő felületen a kódot (ne html nézetbe), így a kódja “htmlspecialcharolva” lesz
- jelöljük, hogy ezzel valamit csinálni kell (nekünk), pl. ezzel: “[htmlcode]ide jön a kód[/htmlcode]“
- az éles megjelenítésig semmi dolgunk vele
- megjelenítés előtt a jelölt részeket vissza kell kódolni htmlbe, és a kapott kóddal lecserélni a régit
Ez a valóságban így nézki:
Kódot csak a megjelenítésnél kell alkalmazni, mely feldolgozza az összes “htmlcode”-ot:
function parse_htmlcode($string){
preg_match_all("/[htmlcode](.*?)[/htmlcode]/is",$string,$htmlcodes);
foreach($htmlcodes[0] as $key => $html){
$string = str_replace($html,htmlspecialchars_decode($htmlcodes[1][$key]),$string);
}
return $string;
}// kigyűjtjük az összes htmlcode-ot
// htmlspecialchars_decode-oljuk (PHP 5 >= 5.1.0) a kapott stringet, és ezzel lecseréljük a szövegben a régit.
Akinek régebbi php verzió van telepítve, annak is van lehetősége a decodera:
if (!function_exists("htmlspecialchars_decode")) {
function htmlspecialchars_decode($string, $quote_style = ENT_COMPAT) {
return strtr($string, array_flip(get_html_translation_table(HTML_SPECIALCHARS, $quote_style)));
}
}
Na?


Visszajelzés: Turulcsirip - Zoltan
Igazán örülök, hogy követhettem a projectet bölcsőtől az ivarérett korig.
Respect!
öö.. izé.
Szépsége az egyszerűsége. Ha lehetne pontozni, most adnék egyet
Már csak egy gomb kell, ami beilleszti a csomgoló teg-eket, mert tegnap hívott egy haver, h hogy kell linket csinálni
http://www.dev2.hu/2007/10/15/szerkesztett-tartalom-darabolasa/
de majd egy példányt kérek.
http://www.dev2.hu/attachments/szoveg/pagebreak.zip
a zip a bejegyzésben tárgyalt taget szúrja be. írjátok át.
zseniális. Most valósítottam meg egy iframe-kre specializált változatát, amely a valódi kódot php-ban tárolja, és csak egy id-t ad át.
function parse_htmlcode($string){
preg_match_all(“/\[iframe\]id=\d{1,2}\[\/iframe\]/is”,$string,$htmlcodes);
foreach($htmlcodes[0] as $key => $html){
$iframeid=sscanf($html, “[iframe]id=%d[/iframe]“);
switch ($iframeid[0]) {
case 1 :
$iframe=”;
}
$string = str_replace($html,$iframe,$string);
}
return $string;
}
én ezt úgy küszöböltem ki, hogy benyomtam egy “a” betűt amit beformáztam középre, stb utána phpmyadmin és kicseréltem az adatbáziban a szöveget, mivel ez az oldal ritkán változik lévén a hely elérhetőségeit mutatja
Visszajelzés: Turulcsirip - Zoltan