WP FancyZoom a YouTube embed – špatné překrývání

Úvodní stránka Fórum podpory WordPressu Problémy s WordPressem WP FancyZoom a YouTube embed – špatné překrývání

Zvolené téma obsahuje celkem 3 odpovědi. Do diskuze (2 účastníci) se naposledy zapojil uživatel  admin a poslední změna je stará 9 let, 3 měsíce.

Aktuálně jsou na stránce zobrazeny 4 příspěvky - 1. až 4. (z celkem 4)
  • Autor
    Příspěvky
  • #699

    lubossrb
    Participant
    Web

    Dobrý den, používám plugin WP FancyZoom jako pěknou galerii pro zvětšení obrázků. Narazil jsem ale na problém. Obrázky se normálně zvětší do popředí aktuálního okna, ale pokud je na stránce v dosahu YouTube video, tak se daná část obrázku zvětší “pod” místo “přes” video, viz. http://sdilej.net/pics/566db64f7805a000d783f8526bc89bb2.png. Na různých zahraničních fórech jsem našel informaci, že to lze jednoduše vyřešit pomocí kódu umístěného do patičky stránek:

    <script type=”text/javascript”>

    for (var ems = document.embeds, i = 0, em; em = ems; i++) {

    em.setAttribute(“wmode”, “transparent”);

    var nx = em.nextSibling, pn = em.parentNode;

    pn.removeChild(em);

    pn.insertBefore(em, nx);

    }

    </script>

    Čímž dojde k transparentnosti (průhlednosti) YouTube videa a obrázky jsou pak u FancyZoom přesně podle potřeb vždy zvětšeny do popředí.

    Ale nefunguje to u Internet Exploreru :-( Kvůli němu je potřeba vložit vždy manuálně kód ke každému videu:

    <param name=”wmode” value=”transparent”>

    ….tohle vložit hned za ukončení tagu <object>

    a druhou část..

    wmode=”transparent” …vložit do tagu <embed type…>

    Nevíte prosím o nějakém řešení, které by tedy dokázalo udělat videa u Internet Exploreru transparentní, aby se obrázky u WP FancyZoom zvětšovali do popředí a nebylo potřeba vždy vkládat kód ke každému videu?

    #7166

    admin
    Keymaster
    Web

    Pokud používáte jednoduché vkládání videa do příspěvků jen pomocí URL adresy (a využíváte tak funkcí oEmbed), pak můžete nastavit pro všechny videa z Youtube, aby byly transparentní následující funkcí (musíte ji přidat do souboru functions.php v aktuálně používané šabloně):

    function add_transparent($oembvideo) {

    $patterns = array();

    $replacements = array();

    $patterns[] = '/</param><embed/';

    $patterns[] = '/allowscriptaccess="always"/';

    $replacements[] = ‘</param><param name=”wmode” value=”transparent”></param><embed’;

    $replacements[] = ‘wmode=”transparent” allowscriptaccess=”always”‘;

    return preg_replace($patterns, $replacements, $oembvideo);

    return $oembvideo;

    }

    add_filter(’embed_oembed_html’, ‘add_transparent’);

    P.S. Není to můj kód (inspirace) a netestoval jsem ho. Ale na první pohled by měl v pořádku fungovat. A pokud ne, tak to nějak doupravíme…

    #7167

    lubossrb
    Participant
    Web

    Wau, super, funguje to! Na poprvé to sice hned nešlo (nevím proč), ale po pár minutách se změny projevily a funguje to skvěle ve všech prohlížečích včetně IE. Díky moc :-)

    #7168

    admin
    Keymaster
    Web

    Výborně. Možná cache prohlížeče, ale hlavně, že to funguje :-)

    Aktualizace: Výše uvedený kód už bohužel NEFUNGUJE (!), protože Youtube používá jiný oEmbed kód. Aktuální řešení tohoto problému naleznete zde.

Aktuálně jsou na stránce zobrazeny 4 příspěvky - 1. až 4. (z celkem 4)

Pokud chcete odpovědět na toto téma, musíte se nejdříve přihlásit.