Ergebnis 1 bis 9 von 9

Thema: Hyperlink Twig - Rel "sponsored" ergänzen

  1. #1
    Contao-Fan Avatar von JMMB
    Registriert seit
    08.03.2012.
    Beiträge
    270

    Standard Hyperlink Twig - Rel "sponsored" ergänzen

    Hallo,

    ich möchte dem Hyperlink Element eine "rel=""sponsored" über die Template Auswahl ergänzen.

    Ansatz:

    HTML-Code:
    {% extends "@Contao/content_element/hyperlink.html.twig" %}
    
    {#
        Currently available blocks:
        "picture_component", "image", "sources", "source",
        "schema_org", "figure_component", "media",
        "media_link", "caption", "caption_inner",
        "content", "text_link", "image_link",
        "headline_component", "headline_attributes",
        "headline_inner", "wrapper", "wrapper_tag",
        "attributes", "inner", "metadata", "style",
        "script"
    #}
    
    
    {% block attributes %} 
        {% set attributes = attrs(attributes|default).addRel('sponsored') %}
        {% set attributes = attrs(attributes|default).addClass('sponsored') %}
        {{ parent() }}
    {% endblock %}  
    addClass funktioniert hier für das Eltern Div (wenn templates/content_element/hyperlink.html.twig genutzt wird.). Gibt es addRel überhaupt? Und wie setze ich das auf den a Tag? text_link_attributes?

    Wie mache ich das in templates/content_element/hyperlink/addsponsored.html.twig nutzbar. Denn hier greift die Klasse nicht.

  2. #2
    Alter Contao-Hase
    Registriert seit
    24.02.2021.
    Beiträge
    1.477
    Partner-ID
    11715
    Contao-Projekt unterstützen

    Support Contao

    Standard

    .add('rel', 'sponsored') mal versucht?

  3. #3
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    37.159
    Partner-ID
    10107

    Standard

    .set() wenn dann
    » sponsor me via GitHub or Revolut

  4. #4
    Contao-Fan Avatar von JMMB
    Registriert seit
    08.03.2012.
    Beiträge
    270

    Standard

    HTML-Code:
    {% block attributes %} 
        {% set attributes = attrs(attributes|default).addClass('sponsored') %}
        {% set attributes = attrs(attributes|default).set('rel', 'sponsored') %}
        {{ parent() }}
    {% endblock %}  
    erzeugt:

    HTML-Code:
    <div class="content-hyperlink sponsored" rel="sponsored">
    <a href="URL" target="_blank" rel="noreferrer noopener">Linktext</a>
    </div>
    Kommen der Sache also näher. Hätte gerne:

    HTML-Code:
    <div class="content-hyperlink">
    <a class="sponsored" href="URL" target="_blank" rel="noreferrer noopener sponsored">Linktext</a>
    </div>
    Wobei die Klasse hier nur dem Tests gilt. Darf auch wegbleiben.

  5. #5
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    37.159
    Partner-ID
    10107

    Standard

    PHP-Code:
    {# templates/content_element/hyperlink.html.twig #}
    {% extends "@Contao/content_element/hyperlink.html.twig" %}

    {% 
    set link_attributes attrs(link_attributes|default).set('rel''noreferrer noopener sponsored') %} 
    Geändert von Spooky (12.12.2024 um 20:45 Uhr)
    » sponsor me via GitHub or Revolut

  6. #6
    Contao-Fan Avatar von JMMB
    Registriert seit
    08.03.2012.
    Beiträge
    270

    Standard

    PHP-Code:
    templates/content_element/hyperlink/sponsored.html.twig

    {% extends "@Contao/content_element/hyperlink.html.twig" %}
    {% 
    set link_attributes attrs(link_attributes|default).set('rel''sponsored') %} 
    gibt mir so wie ich es möchte:

    HTML-Code:
    <div class="content-hyperlink">
    <a href="#" target="_blank" rel="sponsored">Jetzt testen!</a>
    </div>
    überschreibt aber die "noreferrer noopener" bei externem Linkziel.

    HTML-Code:
    <div class="content-hyperlink">
    <a href="#" target="_blank" rel="noreferrer noopener">Jetzt testen!</a>
    </div>
    Das wäre mit add ja anders, oder?

  7. #7
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    37.159
    Partner-ID
    10107

    Standard

    Es gibt kein "add" für den Wert einzelner, beliebiger Attribute. Kann es auch nicht geben - außer für class, denn da ist die Syntax ja genau definiert im HTML Standard.

    Das müsstest du selbst mergen. zB:
    PHP-Code:
    {# templates/content_element/hyperlink.html.twig #}
    {% extends "@Contao/content_element/hyperlink.html.twig" %}

    {% 
    set link_attributes attrs(link_attributes|default)
        .
    set('rel', (link_attributes|default(attrs()).rel|default ~ ' sponsored')|trim
    %} 
    Geändert von Spooky (12.12.2024 um 22:11 Uhr)
    » sponsor me via GitHub or Revolut

  8. #8
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    37.159
    Partner-ID
    10107

    Standard

    Für die Interessierten: hier der möglicherweise kompliziert aussehende Code für den "rel" Wert runtergebrochen

    Man will den Wert "sponsored", also schreibt man

    PHP-Code:
    'sponsored' 
    Man will den Wert aber an einen möglicherweise bestehenden "rel" Wert anhängen, also schreibt man

    PHP-Code:
    link_attributes.rel ' sponsored' 
    Damit kein Fehler auftritt, wenn in link_attributes noch gar kein "rel" Wert definiert ist, schreibt man

    PHP-Code:
    link_attributes.rel|default ~ ' sponsored' 
    Falls kein bestehender "rel" Wert definiert war, würde das nun aber zu einem unnötigen Abstand führen, also rel=" sponsored". Also schreibt man

    PHP-Code:
    (link_attributes.rel|default ~ ' sponsored')|trim 
    Um Vorzubeugen, dass kein Fehler auftritt, wenn die Variable link_attributes gar nicht existiert, schreibt man

    PHP-Code:
    (link_attributes|default(attrs()).rel|default ~ ' sponsored')|trim 
    Voilà
    Geändert von Spooky (13.12.2024 um 07:39 Uhr)
    » sponsor me via GitHub or Revolut

  9. #9
    Alter Contao-Hase
    Registriert seit
    24.02.2021.
    Beiträge
    1.477
    Partner-ID
    11715
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    .set() wenn dann
    meinte ich, zu schnell getippt :')

Aktive Benutzer

Aktive Benutzer

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

Berechtigungen

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