Ergebnis 1 bis 14 von 14

Thema: Einzelne Inhalte z.b. Flash bei iPhone durch alt. Inhalte austauschen - geht das?

  1. #1
    Contao-Nutzer
    Registriert seit
    25.05.2010.
    Beiträge
    211

    Standard Einzelne Inhalte z.b. Flash bei iPhone durch alt. Inhalte austauschen - geht das?

    Hallo,

    ich habe einen Flash-Inhalt auf einer Seite eingebunden. Dieser wird ja logischerweise auf dem iPhone, iPad und iPod nicht angezeigt, mangels Kompatibilität.

    Jetzt habe ich eine PHP-Browserweiche gefunden, welche das Betriebssystem des Clients ermittelt. Schicke Sache, funktioniert im Grunde auch.

    Allerdings müsste ich eine PHP-Abfrage innerhalb eines Moduls initiieren, was scheinbar nicht geht. Mir löscht es immer die PHP-Tags raus obwohl ich in den Einstellungen die Tags hinzugefügt habe.

    Also ich möchte, dass wenn z.B. ein Windows-Client die Seite aufruft er den Flash-Inhalt sieht. Wenn aber ein iPhone-Client die Seite aufruft soll dieser einen alternativen Inhalt eingezeigt bekommen, der in Mootools programmiert wurde.
    Wäre im Grund eine Simple If-Abfrage.

    Die Browserweichendeklarationen habe ich natürlich direkt in das fe_page-Template gepackt. Aber die If-Abfrage müsste eben direkt an den Ort des Geschehens - in das Modul. Glaube ich zumindest (bin noch Anfänger).

    Wie krieg ich das denn hin?
    Gibts da einen Trick?

    Ich freue mich über jede Hilfestellung.
    Vielen Dank.

    Liebe Grüße,
    pyretta

  2. #2
    Contao-Urgestein Avatar von Toflar
    Registriert seit
    15.06.2009.
    Beiträge
    4.467
    Partner-ID
    8667
    User beschenken
    Wunschliste

    Standard

    Was für Tags löscht es Dir aus dem Template?
    Im Template kannst Du 100% PHP schreiben, da löscht gar niemand irgendwas
    Contao Core-Entwickler @terminal42 gmbh
    Wir sind Contao Premium-Partner!
    Für Individuallösungen kannst du uns gerne kontaktieren.
    PS: Heute schon getrakked?

  3. #3
    Administrator Avatar von xchs
    Registriert seit
    19.06.2009.
    Beiträge
    14.557
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Hallo pyretta,

    Du könntest das mit der Erweiterung "browsercss" (resp. "browserdetection") machen.

    Damit hättest Du dann entsprechende Klassen zur Verfügung und könntest aufgrund dessen die gewünschte Fallunterscheidung implementieren...
    Contao Community Administrator

    [Unterstützungsmöglichkeiten]

  4. #4
    Contao-Nutzer
    Registriert seit
    25.05.2010.
    Beiträge
    211

    Standard

    Hallo Toflar,
    Hallo xchs,

    vielen Dank für eure schnellen Antworten.

    @Toflar: Also im Template ging alles wunderbar (is ja klar, is ja im Grunde ein PHP) aber im Modul "eigenes HTML" geht es nicht. Da löscht es mir die PHP-Tags einfach raus, obwohl ich das unter "System" => "Einstellungen" => "Erlaubte HTML-Tags" hinzugefügt habe.

    @xchs: Leider nützt mir eine CSS-Browserweiche nicht viel, da ich Flash-Inhalte durch MooTools-Inhalte ersetzen möchte. Oder geht das damit auch? Ich bin ja absoluter Anfänger eigentlich.

    Ich wäre folgenden Weg gegangen:

    Im Grunde will ich eine If-Abfrage in das Modul schreiben, etwa so:

    PHP-Code:
    <?php
    if ($anzeige == "win"){echo '<!-- indexer::stop -->
    <div id="flash_accordion">
    <span id="swf_2075_19">Bitte aktivieren Sie in Ihrem Browser Javascript und/oder installieren den Flash Player.</span>

    <script type="text/javascript">
        <!--//--><![CDATA[//><!--
        new Swiff("tl_files/sanamedia/Flash Accordion/deploy-to-web/Main.swf", {
          id: "swf_2075_19",
          width: 960,
          height: 374,
          params : {
          allowfullscreen: "false",
          wMode: "transparent",
          flashvars: ""
          }
        }).replaces($("swf_2075_19"));
        //-->
        </script>
        
    </div>
    <!-- indexer::continue -->'
    ;}

    if (
    $anzeige == "iphone"){echo '<!-- indexer::stop -->
    <div id="carousell">

    <div id="left_tabmenu"> 
         <ul id="tabmenu">
                <li class="menulink" id="menu_tab1"><span>Konzept</span></li>
                <li class="menulink" id="menu_tab2"><span>Technik</span></li>
                <li class="menulink" id="menu_tab3"><span>Inhalt</span></li>
                <li class="menulink" id="menu_tab4"><span>Design</span></li>
                <li class="menulink" id="menu_tab5"><span>Partnerschaft</span></li>
          </ul>
    </div>
        
           
            <!-- here comes the pane-stuff, just create the two div'
    s which will hold the panes and insert sub-divs with class="pane"the id is only needed if you wanna make it the first element which is displayed!-->
            <
    div id="tabcontent">
                <
    div id="paneContainer">
                    <
    div class="pane" id="tab1" style="display:block;">
                    <
    a href="konzept.html"><img src="tl_files/sanamedia/images/carousel/content/konzept_c.jpg" alt="sanamedia - Konzept" />  </a>         
                    </
    div>
                    
                    <
    div class="pane" id="tab2">
                    <
    a href="technik.html"><img src="tl_files/sanamedia/images/carousel/content/technik_c.jpg" alt="sanamedia - Technik" /></a>
                    </
    div>

                    <
    div class="pane" id="tab3">
                    <
    a href="inhalt.html"><img src="tl_files/sanamedia/images/carousel/content/inhalt_c.jpg" alt="sanamedia - Inhalt" /></a>
                    </
    div>
                    
                    <
    div class="pane" id="tab4">
                    <
    a href="design.html"><img src="tl_files/sanamedia/images/carousel/content/design_c.jpg" alt="sanamedia - Design" /> </a>            
                    </
    div
                    
                    <
    div class="pane" id="tab5">
                    <
    a href="partnerschaft.html"><img src="tl_files/sanamedia/images/carousel/content/partnerschaft_c.jpg" alt="sanamedia - Partnerschaft" /></a>             
                    </
    div
                                                              
                </
    div>
            </
    div>
    </
    div>
    <!-- 
    indexer::continue -->';}
    ?>
    Im Template habe ich die Variable "$anzeige" wie folgt deklariert:

    PHP-Code:
    <!-- PHP-Browser-Selektor BA - Anfang -->
    <?php

    /*
    PHP CSS Browser Selector v0.0.1
    Bastian Allgeier (http://bastian-allgeier.de)
    http://bastian-allgeier.de/css_browser_selector
    License: http://creativecommons.org/licenses/by/2.5/
    Credits: This is a php port from Rafael Lima's original Javascript CSS Browser Selector: http://rafael.adm.br/css_browser_selector
    */

    function css_browser_selector($ua=null) {
            
    $ua = ($ua) ? strtolower($ua) : strtolower($_SERVER['HTTP_USER_AGENT']);        

            
    $g 'gecko';
            
    $w 'webkit';
            
    $s 'safari';
            
    $b = array();
            
            
    // browser
            
    if(!preg_match('/opera|webtv/i'$ua) && preg_match('/msie\s(\d)/'$ua$array)) {
                    
    $b[] = 'ie ie' $array[1];
            }    else if(
    strstr($ua'firefox/2')) {
                    
    $b[] = $g ' ff2';        
            }    else if(
    strstr($ua'firefox/3.5')) {
                    
    $b[] = $g ' ff3 ff3_5';
            }    else if(
    strstr($ua'firefox/3')) {
                    
    $b[] = $g ' ff3';
            } else if(
    strstr($ua'gecko/')) {
                    
    $b[] = $g;
            } else if(
    preg_match('/opera(\s|\/)(\d+)/'$ua$array)) {
                    
    $b[] = 'opera opera' $array[2];
            } else if(
    strstr($ua'konqueror')) {
                    
    $b[] = 'konqueror';
            } else if(
    strstr($ua'chrome')) {
                    
    $b[] = $w ' ' $s ' chrome';
            } else if(
    strstr($ua'iron')) {
                    
    $b[] = $w ' ' $s ' iron';
            } else if(
    strstr($ua'applewebkit/')) {
                    
    $b[] = (preg_match('/version\/(\d+)/i'$ua$array)) ? $w ' ' $s ' ' $s $array[1] : $w ' ' $s;
            } else if(
    strstr($ua'mozilla/')) {
                    
    $b[] = $g;
            }

            
    // platform                
            
    if(strstr($ua'j2me')) {
                    
    $b[] = 'mobile';
            } else if(
    strstr($ua'iphone')) {
                    
    $b[] = 'iphone';        
            } else if(
    strstr($ua'ipod')) {
                    
    $b[] = 'ipod';        
            } else if(
    strstr($ua'mac')) {
                    
    $b[] = 'mac';        
            } else if(
    strstr($ua'darwin')) {
                    
    $b[] = 'mac';        
            } else if(
    strstr($ua'webtv')) {
                    
    $b[] = 'webtv';        
            } else if(
    strstr($ua'win')) {
                    
    $b[] = 'win';        
            } else if(
    strstr($ua'freebsd')) {
                    
    $b[] = 'freebsd';        
            } else if(
    strstr($ua'x11') || strstr($ua'linux')) {
                    
    $b[] = 'linux';        
            }
                    
            return 
    join(' '$b);
            
    }

    ?>
    <!-- PHP-Browser-Selektor BA - Ende -->

    <?php 
    $anzeige 
    css_browser_selector();
    ?>
    Würde das in Contao gehn?
    Oder muss ich da irgend eine Extension installieren?
    Oder gibt es andere Wege für sowas die ich nicht kenne?

    Liebe Grüße,
    pyretta

  5. #5
    Contao-Nutzer Avatar von SharkeyO
    Registriert seit
    14.07.2009.
    Ort
    Unterbarmen, Wuppertal, NRW, GER
    Beiträge
    88

    Standard

    Hi,

    prinzipiell würde das funktionieren, allerdings musst du die Reihenfolge des Aufrufs von Modulen und Templates beachten. Besser wäre du definierst die Funktion css_browser_selector() irgendwo global und nicht im letzten Winkel eines Templates oder aber zusammen mit dem Scriptaufruf, sofern das Script pro Seite nur einmal auftaucht (dirrty).

    Ansonsten müsste das einwandfrei funzen.

    Grüße
    Ed
    Don't you ever use another CMS.

  6. #6
    Contao-Nutzer
    Registriert seit
    25.05.2010.
    Beiträge
    211

    Standard

    Hallo SharkeyO,

    vielen Dank für deine Antwort.

    Ich habe die Definition für die Funktion css_browser_selector() in den Head-Bereich des Templates gepackt. Ist das soweit in Ordnung zwecks "Reihenfolge des Aufrufs von Modulen und Templates"?

    Also das müsste dann ja auch Global sein, oder? Natürlich sofern ich dieses Template in alle weiteren Seitenlayouts einbinde, oder?

    Und wie bzw. wo pack ich jetzt meine If-Abfrage hin?
    Ich dachte ja direkt in das Modul, aber scheint ja nicht zu gehn.

    Muss ich da irgendwas anderst machen?

    Liebe Grüße,
    pyretta

  7. #7
    Contao-Nutzer
    Registriert seit
    25.05.2010.
    Beiträge
    211

    Standard

    ich hab grad versucht das ganze als externe PHP-Datei in ein Modul einzubinden.

    mit dem Inserttag: {{file::tl_files/sanamedia/php/iphone_alt_inhalt_anzeigen.php}}

    Ging aber leider überhaupt nicht. Es wird dann nix angezeigt.

  8. #8
    AG CMS-Garden
    Contao-Urgestein
    Avatar von lindesbs
    Registriert seit
    05.06.2009.
    Ort
    Oer-Erkenschwick
    Beiträge
    4.154
    Partner-ID
    keine
    User beschenken
    Wunschliste

    Standard

    Klaro geht auch nicht, lese dazu mal die Erklaerung der InsertTags :
    http://www.contao.org/inserttags.html#include-elements

    Deine Datei muss im templates Ordner liegen
    von Willi Voltz aus PR 500: Henry George sagte einmal: »Kultur ist Zusammenarbeit.«


    Contao-Hosting: begeisterter Uberspace-Nutzer

  9. #9
    Contao-Nutzer
    Registriert seit
    25.05.2010.
    Beiträge
    211

    Standard

    Hallo lindesbs,

    danke für deine Antwort. Ich habe jetzt die PHP in dem entsprechenden Templates-Ordner hinterlegt und per Inserttag in das Modul eingefügt.

    möp ...
    Jetzt ist die Seite plötzlich nur noch weiß ... geht also wohl auch nicht so wirklich.

    "Dieses Tag wird mit dem Inhalt einer .php- oder .tpl-Datei aus dem templates-Verzeichnis ersetzt (ersetzen Sie * mit dem Namen). Bei Bedarf können Sie Argumente übergeben: {{file::file.php?arg1=val&arg2=val}}"

    Das klingt aber so als wenn das doch funktionieren müsste?
    Also, als wenn das genau das richtige für mein "Problem" wäre?
    Oder ersetzt das dann das ganze Template mit der Datei?
    Dann kanns natürlich so nicht gehn .

  10. #10
    AG CMS-Garden
    Contao-Urgestein
    Avatar von lindesbs
    Registriert seit
    05.06.2009.
    Ort
    Oer-Erkenschwick
    Beiträge
    4.154
    Partner-ID
    keine
    User beschenken
    Wunschliste

    Standard

    weisse Seite --> Fehlermeldungen anschalten, dann siehst Du was nicht klappt.
    von Willi Voltz aus PR 500: Henry George sagte einmal: »Kultur ist Zusammenarbeit.«


    Contao-Hosting: begeisterter Uberspace-Nutzer

  11. #11
    Contao-Nutzer
    Registriert seit
    25.05.2010.
    Beiträge
    211

    Standard

    Vielen Dank für den Tipp lindesbs.

    Ich hatte nur ein Tag zuviel nämlich ein "endif". Das mochte er wohl nicht.

    Aber ich glaube jetzt hats das File integriert.
    Allerdings scheint meine If-Abfrage nicht zu funktionieren.
    Es nimmt nämlich nicht den richtigen Inhalt, sondern einfach nur den "else"-Inhalt, also Quasi den Dummy.

    Liegt wahrscheinlich daran dass die Funktion sehr viele Infos ausgibt, nicht nur die Plattform. Deshalb hab ich das nur auf den Bereich gekürzt. Scheint aber trotzdem nicht zu funktionieren.

    Was mach ich denn noch falsch?

  12. #12
    Contao-Nutzer
    Registriert seit
    25.05.2010.
    Beiträge
    211

    Standard

    Also die Funktion an sich funktioniert.
    Ich habe nämlich dem Div "id=wrapper" die zusätzliche Klasse "class="<?php echo css_browser_selector() ?>" gegeben. Und dort wird jetzt immer korrekt "win" eingetragen.

    Kann man auch hier sehen: http://www.sanamedia.de/

    Und der "Kasten" mit "Konzept, Technik, Inhalt, etc." soll eben ausgetauscht werden. Im Moment ist es die MooTools-Variante, die ich zusätzlich als "else" eingefügt hatte.

    Hat jemand eine Idee warum die If-Abfrage nicht richtig greift?

    EDIT: Hier die PHP-Datei mit der If-Abfrage die ich in einem Modul "Eigener HTML-Code" über den Inserttag "{{file::sanamedia/iphone_alt_inhalt_anzeigen.php}}" eingebunden hab: bitte hier klicken, bzw. downloaden.

    Und hier der Code des fe_page-Template: bitte hier klicken, bzw. downloaden.
    Geändert von pyretta (26.10.2010 um 14:27 Uhr)

  13. #13
    Contao-Nutzer
    Registriert seit
    25.05.2010.
    Beiträge
    211

    Standard

    Ich glaub ich habs zum Laufen gekriegt

    Ich hab einfach die Variablendefinition in die PHP-Datei gepackt, statt ins Template. Außerdem hab ich die Browser-Abfrage aus dem Script genommen, so dass nur nach der Plattform gefragt wird. Ansonsten kam er durcheinander.

    Jetzt scheint es jedenfalls die richtigen Inhalte auszugeben. Muss es eben noch mit dem iPhone testen, aber bis jetzt siehts gut aus.

    Danke euch allen für eure Unterstützung.

    Liebe Grüße,
    pyretta

  14. #14
    Contao-Urgestein Avatar von Toflar
    Registriert seit
    15.06.2009.
    Beiträge
    4.467
    Partner-ID
    8667
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von pyretta Beitrag anzeigen
    aber im Modul "eigenes HTML" geht es nicht.
    Ergänzung: Ja, klar geht es da nicht...es heisst ja auch "HTML" und nicht "PHP"
    Contao Core-Entwickler @terminal42 gmbh
    Wir sind Contao Premium-Partner!
    Für Individuallösungen kannst du uns gerne kontaktieren.
    PS: Heute schon getrakked?

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Ähnliche Themen

  1. Inhalte einbinden
    Von tokuehn im Forum Allgemeine Inhaltselemente
    Antworten: 2
    Letzter Beitrag: 08.06.2010, 22:25
  2. Inhalte mit jQuery austauschen
    Von DerDose im Forum Allgemeine Inhaltselemente
    Antworten: 3
    Letzter Beitrag: 25.05.2010, 15:22
  3. [gelöst] Flash-Inhalte werden nicht mehr angezeigt
    Von comanche im Forum Allgemeine Inhaltselemente
    Antworten: 2
    Letzter Beitrag: 19.02.2010, 11:12
  4. Inhalte verschwindet
    Von dade im Forum Bilder/Dateien
    Antworten: 11
    Letzter Beitrag: 20.08.2009, 12:11

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •