Support » Allgemeine Fragen » Rechte Spalte

  • Hallo zusammen,

    ich erstelle derzeit für einen Sportverein mit mehreren Abteilungen eine Seite. Jede Mannschaft soll eine eigene Mannschaftsseite für spezielle Mannschaftsinfos bekommen (Termine, Tabellen etc.).
    Meine Frage: Gibt es die Möglichkeit, dass man die rechte Spalte individuell mit Inhalten belegt, also zum Beispiel Mannschaft A hat in der rechten Spalte eine Box mit der Tabelle für Mannschaft A, bei Mannschaft B erscheint dann an dieser Stelle aber die Tabelle B usw.?

    Bin wie immer sehr dankbar für einen Tipp 😉

Ansicht von 15 Antworten - 1 bis 15 (von insgesamt 20)
  • Mit „rechte Spalte“ meinst du vermutlich die Seitenleiste, in der z.B. Widgets für ein Suchformular, Titel der neuesten Beiträge, etc. ausgegeben werden? Hier müssen wir uns ein wenig behelfen, weil die Ausgabe grundsätzlich für alle Webseiten gleich aussieht – das möchtest du ja nicht.

    Zunächst müssen wir überlegen, wo du die individuellen Inhalte der Seitenleiste für jede Abteilung des Sportvereins ablegen kannst. Wenn du ohnehin bereits für jede Abteilung eine eigene WordPress-Seite angelegt hast, bietet sich hier ein benutzerdefiniertes Feld an, dass du in WordPress mit dem Plugin Advanced Custom Fields bequem hinzufügen kannst.

    Nehmen wir an, du erstellst im Menü „Eigene Felder“ nun ein neues Feld „Ergebnisse“ (mit dem Feldnamen „ergebnisse“) und schränkst das Feld im Kästchen „Position“ so ein, dass es nur auf normalen Seiten sichtbar ist (Artikel-Typ ist gleich page). Wenn du nun eine Seite für eine Abteilung bearbeitest, hast du unterhalb des Eingabefensters für den Seiteninhalt ein weiteres Fenster für die Eingabe eines beliebigen Texts bei „Ergebnisse“.

    Mit dem (schon etwas angestaubten) Plugin Advanced Custom Field Widget fügst du deiner Seitenleiste ein Widget hinzu, mit dem du das benutzerdefinierte Feld der jeweiligen Seite wieder ausgeben kannst. Dazu ziehst du unter Design > Widgets ein neues Widget „Adv. Custom Field“ in den Widget-Bereich und gibst als „Primary Custom Field Key“ den gewählten Namen „ergebnisse“ ein. Mehr brauchst du nicht eingeben. Speichere die Eingabe und nun solltest du auf den Seiten, auf denen du im benutzerdefinierten Feld Ergebnisse einen Text eingegeben hast, in der rechten Spalte die Eingabe sehen.

    Hi Bego,
    mal wiweder ein super Tipp . . . aber ich kriege bzw. sehe unter Design – Widgets – Adv. Custom Field kein entsprechendes Widget, was ich einbinden könnte . . . ?!?!

    Habe mit dem Plugin mal testweise ein Feld angelegt wie du beschrieben hast. Das Feld wird auch auf der Seite entsprechend angezeigt, aber um es via Widget auszugeben, müsste ich ja erstmal eine Widget haben – finde aber eben keins?!?!

    LG
    lekim

    Aah – habe eben festgestellt, dass da ein zweites Plugin gemeint ist – probiere es gleich mal . . .

    • Diese Antwort wurde geändert vor 2 Jahre, 6 Monate von  leKim.

    Hi Bego,
    alles passt soweit wie du das beschrieben hast. Wähle ich unter Eigene Felder den Feldtyp Textfeld und gebe dort einen einfachen Text ein, dann funktioniert das auch alles. Mein Problem ist, dass ich in diesem Feldtyp aber einen Script unterbringen muss, der ein externes Widget (Tabelle) vom Bayerischen Fußballverband laden soll. Tut es aber nicht. Ich habe den Eindruck, als würde das Script nicht verarbeitet bzw. es ist der falsche Feldtyp?!
    Hast du da eine Idee?

    Ich hab meistens ganz viele Ideen, aber um diesen neuen, zusätzlichen Faktor bei der Antwort berücksichtigen zu können, müsste ich mehr über das Skript des Fußballverbands wissen. Handelt es sich hier um JavaScript oder PHP? Werden Parameter (z.B. eine Vereins- oder Mannschaftsnummer) an das Skript übergeben? Du schreibst zwar „externes Widget“, aber es handelt sich wohl kaum um ein WordPress-Plugin, mit dem ein Widget hinzugefügt werden kann?

    Ganz allgemein: Du kannst (ohne zusätzliche Plugins) aus Sicherheitsgründen erst einmal kein PHP oder JavaScript als Widget hinzufügen. Sonst könnte dort Code platziert werden, mit dem zum Beispiel die Benutzerrollen umgangen werden könnten. Wahrscheinlich wirst du um eine Programmierung nicht herum kommen, um das korrekt einzubinden.

    Hi Bego,

    es ist JavaScript. Ich weiß nicht, ob es nutzt, den Code hier reinzustellen, da er nur auf der registrierten Domain des Vereins beim Fußballverband funktioniert.
    Wenn ich das WP Widget Text verwende und dort den JavaScript-Code eingebe, dann funktioniert das Ganze, aber halt für alle Seiten gleichermaßen . . .

    Habe jetzt mal testweise die Codes von zwei Mannschaften auf die jeweilige Mannschaftsseite im Editor im Reiter Text eingebunden – funktioniert. Halt nicht in der Spalte rechts in dem angelegten Advanced Custom Field (Widget).

    Alles schön – nur kann ich dir so nicht weiterhelfen.

    Die Lösung wäre vermutlich, ein Widget zu schreiben, mit dem das JavaScript korrekt eingebunden wird und dass dann z.B. aus einem Custom Field die notwendigen Parameter zieht.

    Das ist der Code

    <script type='text/javascript'> 
    (function(){ 
    	var useSSL = 'https:' == document.location.protocol; 
    	var src = (useSSL ? 'https:' : 'http:') + '//www.bfv.de/widget/widgetresource/widgetjs'; 
    	document.write('<scr' + 'ipt src="' + src + '"></scr' + 'ipt>');
    })()
    </script>
    <div id="bfv1489241255226">Laden...</div>
    <script>
    BFVWidget.HTML5.zeigeMannschaftKomplett("016PS5Q1EK000000VV0AG80NVS35AO43", "bfv1489241255226", { height: "600", width: "350", selectedTab:BFVWidget.HTML5.mannschaftTabs.spiele, colorResults: "undefined" , colorNav: "undefined" , colorClubName : "undefined" , backgroundNav: "undefined"});
    </script>

    Ich vermute mal, dass der id-Wert die Identifikation vornimmt. Ich habe keine Ahnung vom Programmieren und kann damit auch nicht einschätzen, was das für ein Aufwand ist, geschweige denn, was da jetzt als nächstes zu tun wäre . . .

    Jetzt weiß ich aber immer noch nicht, wo der Unterschied für die verschiedenen Abteilungen des Vereins ist. Wenn ich dich richtig verstanden habe, sieht der Code für jeden Verein ein wenig anders aus?

    Das ist korrekt. Für jede Mannschaft muss ich einen eigenen Code erzeugen, denn ich dann eben – wie auch immer – auf der jeweiligen Mannschaftsseite einbinden möchte. Der Verein ist beim Verband registriert. Da der Fußballverband wissen will, welche Vereine welche Codes auf ihren Seite verwenden, muss ich den Code für jede Mannschaftstabelle getrennt erzeugen und mich jedes Mal (jede Mannschaft) dafür wieder neu beim Verband einloggen . . .

    Um das umzusetzen benötigst du ein eigenes Widget, das

    • das JavaScript in die Seitenleiste einbaut,
    • nur auf den Webseiten mit den Vereins-Abteilungen zu sehen ist und
    • (zum Beispiel aus einem benutzerdefinierten Feld der Abteilungs-Seiten) die ID der Mannschaft ausliest und dem Script übergibt.

    Für einen Teil kannst du Plugins nehmen:

    Jetzt fehlt nur die Übernahme der Mannschafts-ID in das JavaScript. Nehmen wir an, hier müsste nur die ID ausgetauscht werden, dann könnte der Text im „Enhanced Text Widget“ so aussehen:

    <script type='text/javascript'> 
    (function(){ 
    	var useSSL = 'https:' == document.location.protocol; 
    	var src = (useSSL ? 'https:' : 'http:') + '//www.bfv.de/widget/widgetresource/widgetjs'; 
    	document.write('<scr' + 'ipt src="' + src + '"></scr' + 'ipt>');
    })()
    </script>
    <?php 
    global $post;
    $mannschafts_id = get_field( 'mannschaft', $post->ID ); ?>
    <div id="<?php echo $mannschafts_id; ?>">Laden...</div>
    <script>
    BFVWidget.HTML5.zeigeMannschaftKomplett("016PS5Q1EK000000VV0AG80NVS35AO43", "<?php echo $mannschafts_id; ?>", { height: "600", width: "350", selectedTab:BFVWidget.HTML5.mannschaftTabs.spiele, colorResults: "undefined" , colorNav: "undefined" , colorClubName : "undefined" , backgroundNav: "undefined"});
    </script>

    (Alles nicht von mir getestet.)

    Danke für deine Hilfe.
    Werde mal schauen, ob ich das Ding zum Laufen kriege . . .

    LG
    lekim

    Hi Bego,

    hab das jetzt mal probiert. Grundsätzlich funktioniert das auch, aber . . . es gibt zwei Dinge, die ich nicht verstehe:

    1. es wird die falsche Tabelle eingebunden, was bedeutet, dass wohl nicht nur die bfv-id wichtig ist, sondern vermutlich auch die lange Nummer – hier in diesem Fall die 016PS5Q1EK000000VV0AG80NVS35AO43. Kann man die auch noch abfragen und einbinden?

    <div class="textwidget widget-text"><script type='text/javascript'> 
    (function(){ 
    	var useSSL = 'https:' == document.location.protocol; 
    	var src = (useSSL ? 'https:' : 'http:') + '//www.bfv.de/widget/widgetresource/widgetjs'; 
    	document.write('<scr' + 'ipt src="' + src + '"></scr' + 'ipt>');
    })()
    </script>
    <div id="bfv1489488803344">Laden...</div>
    <script>
    BFVWidget.HTML5.zeigeMannschaftKomplett("016PS5Q1EK000000VV0AG80NVS35AO43", "bfv1489488803344", { height: "600", width: "350", selectedTab:BFVWidget.HTML5.mannschaftTabs.spiele, colorResults: "undefined" , colorNav: "undefined" , colorClubName : "undefined" , backgroundNav: "undefined"});
    </script></div></aside><aside id="adv-custom-field-2" class="widget widget_adv_custom_field clearfix">
    <div class="advcustomvalue">
    bfv1489488803344
    </div>

    2. unterhalb der Tabelle wird nochmal die BFV-ID ausgegeben?!?!?

    <div class="advcustomvalue">
    bfv1489488803344
    </div>

    Kannst du mir da noch mal helfen?

    … Für jede Mannschaft muss ich einen eigenen Code erzeugen, denn ich dann eben – wie auch immer – auf der jeweiligen Mannschaftsseite einbinden möchte.
    Hier ist entscheidend, wie sich der Code je Mannschaft unterscheidet. Woher diese lange Nummer „016PS5Q1EK000000VV0AG80NVS35AO43“ kommt, weiß ich nicht. Wenn sie aber wichtig ist, könntest du in Advanced Custom Fields ein zweites Feld anlegen, das dann im Widget ausgegeben wird.

    Nehmen wir an, wir nennen dieses Feld kennung, dann würde das in etwa so aussehen:

    <script type=’text/javascript‘>
    (function(){
    var useSSL = 'https:' == document.location.protocol;
    var src = (useSSL ? 'https:' : 'http:') + '//www.bfv.de/widget/widgetresource/widgetjs';
    document.write('<scr' + 'ipt src='‚ + src + ‚'></scr' + 'ipt>');
    })()
    </script>
    <?php
    global $post;
    $mannschafts_id = get_field( 'mannschaft', $post->ID );
    $kennung = get_field( 'kennung', $post->ID ); ?>
    
    <div id="<?php echo $mannschafts_id; ?>">Laden…</div>
    <script>
    BFVWidget.HTML5.zeigeMannschaftKomplett("<?php echo $kennung; ?>", "<?php echo $mannschafts_id; ?>", { height: "600", width: "350", selectedTab:BFVWidget.HTML5.mannschaftTabs.spiele, colorResults: "undefined" , colorNav: "undefined" , colorClubName : "undefined" , backgroundNav: "undefined"});
    </script>
    <div class="advcustomvalue">
    <?php echo $mannschafts_id; ?>
    </div>
    • Diese Antwort wurde geändert vor 2 Jahre, 6 Monate von  Bego Mario Garde. Grund: Code-Auszeichnung repariert

    Danke. Im Moment läufts allerdings noch nicht.
    Ist dann kennung das Primary Custom Field Key und mannschaft das Secondary Custom Field Key im Advanced Custom Field Widget?

    Wenn ich mir den Quelltext anschauen, dann werden kennung und mannschaft nicht übergeben . . .

    <div class="textwidget widget-text"><script type=’text/javascript‘>
    (function(){
    var useSSL = ‚https:‘ == document.location.protocol;
    var src = (useSSL ? ‚https:‘ : ‚http:‘) + ‚//www.bfv.de/widget/widgetresource/widgetjs‘;
    document.write(‚<scr‘ + ‚ipt src=“‚ + src + ‚“></scr‘ + ‚ipt>‘);
    })()
    </script>
    
    <div id=““>Laden…</div>
    <script>
    BFVWidget.HTML5.zeigeMannschaftKomplett(„“, „“, { height: „600“, width: „350“, selectedTab:BFVWidget.HTML5.mannschaftTabs.spiele, colorResults: „undefined“ , colorNav: „undefined“ , colorClubName : „undefined“ , backgroundNav: „undefined“});
    </script>
    <div class=“advcustomvalue“>
    </div></div></aside><aside id="adv-custom-field-3" class="widget widget_adv_custom_field clearfix">
    <div class="advcustomvalue">
    01SLA80GD4000000VS548984VT4EU5FS
    </div>

    „mannschafts_id“ und „kennung“ musst du als separate Felder anlegen.

    Du kannst ja erstmal schauen, ob die Felder korrekt ausgelesen werden:

    <?php 
    global $post;
    echo 'Kennung: ' . get_field( 'kennung', $post->ID ); 
    echo 'Mannsch.: ' . get_field( 'mannschafts_id', $post->ID );
    ?>

    Achte auch beim Code auf die richtigen Anführungszeichen. Bei meiner Antwort war der Code nicht korrekt formatiert und unsere Foren-Software ersetzt einfache und doppelte Anführungszeichen dann durch typografische Anführungszeichen, was natürlich zu Syntax-Fehlern führt und den Code unbrauchbar macht.

Ansicht von 15 Antworten - 1 bis 15 (von insgesamt 20)
  • Das Thema „Rechte Spalte“ ist für neue Antworten geschlossen.