ilch Forum » Ilch Clan 1.1 » Module und Modifikationen » BBCode ändern für einfachere Nutzung?

Geschlossen
  1. #1
    User Pic
    Erdzengel Mitglied
    Registriert seit
    02.11.2009
    Beiträge
    18
    Beitragswertungen
    0 Beitragspunkte
    Hallo Leute,

    es geht um den BBCode 2.0 von Mairu. Genauer gesagt um die Videointegration. Ansich klappt die Integration wunderbar, selbst in den News wird das Video dann angezeigt, insofern ist kein direkter Fehler vorhanden.

    Dennoch gibt es Grund zur Beanstandung. Die Einbettung des Videos mittels [Youtube] ist vollkommen OK, jedoch muss man bei der Videoauswahl immer darauf achten, NUR die ID des Videos anzugeben und das stört mich sehr.
    Der Grund dafür liegt in der Forennutzung. Wenn jemand den Youtube-tag verwendet, dann hat dieser jenige meist schon den kompletten Videolink kopiert zum einfügen. Wird der komplette Link jedoch verwendet, wird das Video nicht angezeigt. Andersherum kenn ich auch einen Haufen Leute, die die ID des Videos garnicht wissen bzw. nicht bestimmen können und somit wäre die Nutzung des kompletten Links wesentlich einfacher.
    Wäre da nicht Youtube ^^.

    Zum einen ist meine Frage bis dato, ob man den Code so umschreiben kann, das man den kompletten link des Videos eingeben kann??? (Bitte noch nicht darauf antworten sondern weiter lesen.)

    Wäre da eben nicht Youtube!.

    Für das phpbb Forum habe ich schonmal danach forschen müssen und rausgekommen ist folgendes:
    externer Link
    (Alle die mir helfen wollen sollten sich das vlt mal anschauen um meine Problematik zu verstehen und genau zu verstehen, was ich eigentlich haben möchte).

    In kurz erkläre ich es hier aber nochmal:
    Youtube verwendet für ein und das gleiche Video 3 verschiedene Links. Einer kommt zustande, wenn man per weiterleitung auf das Video zugreift. Der zweite kommt dann zustande, wenn man ein Video direkt aufruft aus der Suche zum beispiel. Der dritte Link kommt dadurch zustande, das man das Video aus dem Kanal aufruft.
    Die ID bleibt zwar immer die gleiche, doch will man den kompletten Videolink benutzen, so müssen alle drei unterschiedlichen Linkvarianten berücksichtigt werden (siehe den obigen Link zur Problematik).
    Im phpbb Forum konnte man einen Tag selbst erstellen und dann den ersetzenden Code dazu aufführen. Das Ergebnis sieht man ebenso in dem Link, weshalb er schon sehr bedeutsam für meinen beitrag ist.

    Tja und damit komme ich nun zu meiner abschliessenden Frage:

    Kann man den Code so umschreiben, das man den kompletten link des Videos eingeben kann und dann das Video dargestellt - unabhängig davon welchen der drei Linkmöglichkeiten ich nutze?

    Wenn ja, wie müsste der Code lauten und wo muss er dann genau hin?


    Ich danke für eure Hilfe.

    LG

    betroffene Homepage: externer Link


    Zuletzt modifiziert von Erdzengel am 02.08.2012 - 22:36:03
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    Rock@wulf Hall Of Fame
    Registriert seit
    03.06.2004
    Beiträge
    3.282
    Beitragswertungen
    239 Beitragspunkte
    Zur Frage, Ja man kann den Code so umschreiben, das man ganze Links verwenden kann.

    Zur Beantwortung, der Code muss in die bbcode.php im include/includes/class Ordner.

    Hm der Code müsste so aussehen:

    ##########################################################################
    ########Ich werde PHP in grundzügen lernen und es selbst versuchen########
    ##########################################################################

    Syr, aber auch dir sage ich wieder was ich hier schon so vielen gesagt habe:

    Du betreibst eine Webseite
    Du bist mit der funktionierenden funktion nicht zufrieden
    Also musst du auch was daran ändern.


    Meistens kommt dann ich kann nicht, ich hab nicht php/zeit...

    Komm mit einem Lösungsversuch und dir wird geholfen.

    ...


    Zuletzt modifiziert von Rock@wulf am 03.08.2012 - 07:36:10
    Meine Postings repräsentieren meine Meinung wenn nicht anders gekennzeichnet.
    MFG Rock@wulf
    2 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    Erdzengel Mitglied
    Registriert seit
    02.11.2009
    Beiträge
    18
    Beitragswertungen
    0 Beitragspunkte
    ZitatZitat
    Ich werde PHP in grundzügen lernen und es selbst versuchen

    Hallöchen zwinker. Du hast auch vollkommen Recht damit.

    Leider bin ich nicht der Profi und das werde ich wahrscheinlich auch nie. Ich weis nun wo ich was ändern muss und kann mich gerne dran setzen. Wenn du den Link gesehen hast, dann müsste dir aufgefallen sein, das ich nach Lösungen suche und probiere soweit es meine Kenntnisse zulassen.

    Ich meld mich wieder zwinker.

    LG

    P.S.: und danke natürlich für deine Antworten ^^

    PPS: ich habe mir nun die include/includes/class/bbcode.php mal angesehen und bin zusätzlich auch noch auf include/includes/func/bbcode.php wo ich dann später die Ersetzung von ID auf Link machen kann.
    Eins fehlt mir allerdings oder ich habe es überlesen: ".&id." gibt mir quasi den Bereich an, der dann ersetzt mit meiner Eingabe. Aber wo finde ich die Eingabe selbst? Also wo finde ich den eintrag, der meine Eingabe überhaupt als &id Kenntlich macht?
    Oder bin ich da grad zu weit und mache es mir grad komplizierter als es ist?


    Zuletzt modifiziert von Erdzengel am 03.08.2012 - 12:07:50
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    Rock@wulf Hall Of Fame
    Registriert seit
    03.06.2004
    Beiträge
    3.282
    Beitragswertungen
    239 Beitragspunkte
    include/includes/class/bbcode.php

    Zeile 500 ff

    Hier Z 508-510

    if($typ == "youtube") {
                $str = "<object width=\"".$this->info['YoutubeBreite']."\" height=\"".$this->info['YoutubeHoehe']."\"><param name=\"movie\" value=\"http://www.youtube.com/v/".$id."\"></param><embed src=\"http://www.youtube.com/v/".$id."\" type=\"application/x-shockwave-flash\"  width=\"".$this->info['YoutubeBreite']."\" height=\"".$this->info['YoutubeHoehe']."\" bgcolor=\"".$this->info['YoutubeHintergrundfarbe']."\"></embed></object>";
            }


    Bester weg währe auszuprobieren ob der komplette Link in $id ankommt und wenn ja eine pregmatch experession schreiben die aus dem link die ID herausfiltert.

    Gefiltert wird die funktion in

    Z 808 ff

    Ich hoffe das hilft weiter


    Zuletzt modifiziert von Lord|Schirmer am 03.08.2012 - 12:37:25

    ^
    Unglaublich da sucht man nen alten post um den Code richtig hinzubekommen da wird der schon vom Lord of the Forum korrigiert zunge
    Danke sehr


    Zuletzt modifiziert von Rock@wulf am 03.08.2012 - 12:38:44
    Meine Postings repräsentieren meine Meinung wenn nicht anders gekennzeichnet.
    MFG Rock@wulf
    0 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    Erdzengel Mitglied
    Registriert seit
    02.11.2009
    Beiträge
    18
    Beitragswertungen
    0 Beitragspunkte
    Leider hat mir das nicht weitergeholfen.

    Ich habe nun verschiedene Sachen ausprobiert und habe einfach nur das Gefühl, das irgendwas fehlt, was mir als Ottonormal Anfänger vermutlich weiterhelfen könnte.

    include/admin/bbcode.php
    Müsste die Steuerung für den BBCode über die Adminoberfläche sein.

    include/admin/templates/bbcode/*buttons - config und design*.htm
    Dienen der grafischen benutzeroberfläche im ACP.

    include/includes/bbcode_config.php
    Dient der Konfiguration zwischen der Eingabe aus dem ACP (beispiel die Größe der Videos) und der Ausgabe würde ich sagen.

    include/includes/class/bbcode.php
    Hier müsste die eigentliche Funktion der einzelnen bbcodes hinterlegt sein. Damit die Funktion richtig ausgeführt wird, bedient sich die Datei unterschiedlicher Variablen, die irgendwo (auch andere Dateien) als Eingabe getätigt werden.

    include/includes/func/bbcode.php
    in dieser Datei ist der Ablauf geschrieben, der Ausgeführt wird sobald ich einen bestimmten bbcode-button betätige.

    include/includes/js/*bbcode - BBDoceGlobal - interface - etc*.js
    Darin wird gesteuert, wie und wo das ganze auszusehen hat im Script sowie auch über verschiedene Browser und sowass.

    Liege ich damit richtig? Wahrscheinlich nicht ^^...

    Aufjedenfall ist mein Problem, das ich dort nirgends finden konnte, wo meine Eingabe als $id erfasst wird und wo bzw wie die Fenster überhaupt aufgehen und zustande kommen. Das entzieht sich nun meiner Kenntnis denn ich habe in keiner Datei zum Beispiel den befehl "action" finden können, der ja dafür verwendet werden kann, wenn ein Fenster nach einem anderem aufgeht.

    Aus der include/includes/class/bbcode.php habe ich folgendes raus geholt:

     //> Video intergration.
        function _video($typ,$id) {
            $typ = strtolower($typ);
    
            if($typ == "youtube") {
                $str = "<object width=\"".$this->info['YoutubeBreite']."\" height=\"".$this->info['YoutubeHoehe']."\"><param name=\"movie\" value=\"http://www.youtube.com/v/".$id."\"></param><embed src=\"http://www.youtube.com/v/".$id."\" type=\"application/x-shockwave-flash\"  width=\"".$this->info['YoutubeBreite']."\" height=\"".$this->info['YoutubeHoehe']."\" bgcolor=\"".$this->info['YoutubeHintergrundfarbe']."\"></embed></object>";
            }

    und auch das hier:
            //> Farf BB Code [VIDEO] dekodiert werden?
            if($this->permitted['video'] == true) {
                //> Format: [video=xxx]xxx[/video]
                $this->pattern[] = "%\[video=(google|youtube|myvideo|gametrailers)\](.+)\[\/video\]%eUis";
                $this->replace[] = "\$this->_video('\$1','\$2')";

    (Nein, das Farf steht wirklich so da drin aber wird ja ausgeklammert und ist daher egal.)

    Aus der include/includes/func/bbcode.php habe ich noch das hier rausgeholt:

    //> Video Button!
    		if($boolButton['fnFormatVideo'] == 1) {
    			$BBCodeButtons .= "<a href=\"javascript:bbcode_insert_with_value_2('video','Gib hier die Video ID vom Anbieter an.','Bitte Anbieter ausw&auml;hlen.\\nAkzeptiert werden: Google, YouTube, MyVideo und GameTrailers')\"><img src=\"include/images/icons/bbcode/bbcode_video.png\" alt=\"Video einf&uuml;gen\" title=\"Video einf&uuml;gen\" width=\"23\" height=\"22\" border=\"0\"></a> ";
    		}


    So im ersten Code wird mir ausgegeben, das meine Eingabe im 2 Fenster (die Video ID) mit der Variable $id ersetzt wird und somit der komplette Link zustande kommt.
    Im 2 Code (also hier die dritte Box) sehe ich den Text, den man sehen kann, sobald man seine Eingaben tätigen soll.

    So dennoch muss doch irgendwo gekennzeichnet sein, das meine Antwort auf die Frage der ID, in irgend einer Datei als $id umgewandelt wird und somit in der obigen Datei mit dem kompletten Link dann wieder zurück gegeben wird.

    Noch einfacher gesagt: Ich sehe, das $id = Meine Eingabe aus dem Fenster ist aber ich sehe nicht, das meine Eingabe = $id ist. Wo finde ich diese information denn dein Vorschlag mit preg_match ist mit meinen Kenntnissen viel zu kompliziert bisher und der ganze Link wird nicht als ID erkannt. Eingelesen zwar schon aber es hapert dann irgendwo mit der Ausgabe der ID bzw des kompletten Links.

    Besten Dank
    0 Mitglieder finden den Beitrag gut.
  6. #6
    User Pic
    Mikro Mitglied
    Registriert seit
    05.10.2011
    Beiträge
    237
    Beitragswertungen
    21 Beitragspunkte
    Wäre halt mal wichtig zu wissen was du oder deine User nun im BBCode Editor eingeben wollen, wenn du ne News oder auch im Forum ein Video Einbinden willst(COPY PASTE).

    So:
    <iframe width="560" height="315" src="http://www.youtube.com/embed/iORg4940GSw?rel=0" frameborder="0" allowfullscreen></iframe>

    oder so:
    externer Link

    oder so:
    youtu.be/iORg4940GSw


    oder so:
    <object width="560" height="315"><param name="movie" value="http://www.youtube.com/v/iORg4940GSw?version=3&amp;hl=de_DE&amp;rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/iORg4940GSw?version=3&amp;hl=de_DE&amp;rel=0" type="application/x-shockwave-flash" width="560" height="315" allowscriptaccess="always" allowfullscreen="true"></embed></object>


    Und das soll am Ende rauskommen, möglich ist das mit allen eingaben oben:

    <iframe width="560" height="315" src="http://www.youtube.com/embed/iORg4940GSw?rel=0" frameborder="0" allowfullscreen></iframe>

    Der bessere Ansatz wäre aber nicht unbdedingt im PHP Code weil da ja alles schon so sehr gut funktioniert

    Meiner Meinung nach ist es besser, wenn du alle Eingaben abdecken willst, die Sache mit JavaScript zu lösen, in dem man die eingaben vom User(COPY PASTE) ausliest und dann die ID rausfiltert, das am ende wieder das herauskommt wie es gedacht ist.

    [video=YouTube]iORg4940GSw[/video]


    Ist zwar auch nicht einfach aber auf alle fälle einfacher als den ganzen php code umzuschreiben um alle Eventualitäten zu berücksichtigen, den mit JS eine url oder ein Attribut von den Usereingaben auslesen ist keine Zauberei. Und es kommt dadurch kein mist in die Datenbank was ja auch wichtig ist und der Hauptgrund für BBCode ist.

    Auslesen brauch man dann nur src oder halt den link ansich:

    Beispiel zum veranschaulichen bei iframe oder object: eingaben_vom_user.attr('src');

    dann hast den Link: externer Link

    Den dann wieder zerlegen mit split:
    [1] => externer Link

    [2] => embed

    [3] => iORg4940GSw

    und dann einfügen im das Textarea:

    [video=YouTube][3][/video]

    im textfeld
    [video=YouTube]iORg4940GSw[/video]
    Wer Rechtschreibfehler findet darf sie behalten!
    0 Mitglieder finden den Beitrag gut.
  7. #7
    User Pic
    Mikro Mitglied
    Registriert seit
    05.10.2011
    Beiträge
    237
    Beitragswertungen
    21 Beitragspunkte
    Habe mal eine Beispiel Datei zusammengemeiselt wie das functioniert und aussehen könnte.
    Achtung nur ein Beispiel zum Testen und veranschaulichen kein fertiger Code:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Test</title>
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.min.js"></script>
    <script type="text/javascript">
    
    $(document).ready(function(){
    						   
    	var src ;
    	var f_id;
    	var id  ; 
    	var element = prompt('Paste deinen YouTube Code');
    
    	src = $(element).attr("src");
    	
    	if(!src){
    	   src = $(element).find('embed').attr("src"); 
    	}
    	
    	if(!src){
    		src = element ;
    	} 
    	if(!src){ src = 'kene gueltige eingabe' ; }
    	     
    		 //short link
    		 if(src = src.replace(/http:\/\/youtu.be\//, '')){
    		    f_id = src ;
    		 }
    		 
    	src = src.replace(/http:\/\//, ''); 
        var split_teile = src.split("/");
    	
    	//iframe und object
    	if(split_teile[2]){
    		
    		var string = split_teile[2]+" "; 
    		var matches = string.match(/\?/);
            
    			if(matches == "?"){
    			id = split_teile[2].split("?");
    			f_id = id[0];
    			}
    		}
    	
    	// andere
    	if(split_teile[1]){
    		
    		var string_2 = split_teile[1]+" "; 
    		var matches_2 = string_2.match(/\?/);
    		
    			  if(matches_2 == "?"){
    				  id = split_teile[1].split("=");
    				  f_id = id[1];
    				  }
    	}
    
    // anzeigen was dabei rauskommt		
    alert(src+"\n\n gesplitet:\n\n0 " +split_teile[0]+"\n1 "+
    								   split_teile[1]+"\n2 "+
    								   split_teile[2]+"\n3 "+
    								   split_teile[3]+"\n4 "+
    								   split_teile[4]+"\n5 "+
    								   split_teile[5]+"\n6 "+
    								   split_teile[6]+"\n7 "+
    								   split_teile[7]+"\n8 "+
    								   split_teile[8]+"\n9 "+
    								   split_teile[9]+"\n10 "+
    								   split_teile[10]+"\n\n\n\n"+ "ID gefitert fuer BBCode:\n\n\n\n[video=YouTube]"+f_id+"[/video]");
    
    var neimachen = "[video=YouTube]"+f_id+"[/video]" ;
    
    $('#test').val(neimachen);
    
    });
    </script>
    </head>
    <body>
    <textarea name="test" id="test" cols="40" rows="10"></textarea>
    </body>
    </html>

    Kannst du jeden Code von YouTube einfügen ob iframe, Object oder Link ist egal schockiert


    Zuletzt modifiziert von Mikro am 04.08.2012 - 18:56:27
    Wer Rechtschreibfehler findet darf sie behalten!
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu Module und Modifikationen

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten