Ergebnis 1 bis 14 von 14

Thema: Integration von Iconfonts im TinyMCE ... Lösung zur Diskussion

  1. #1
    Contao-Fan Avatar von Bas
    Registriert seit
    03.12.2009.
    Ort
    Hamburg
    Beiträge
    555

    Standard Integration von Iconfonts im TinyMCE ... Lösung zur Diskussion

    Iconfonts find ich klasse, nur die Contao-Integration im Editor gestaltete sich schwierig für mich, da die korrekte Einbindung via zusätzlichen leeren DIVs erfolgen soll und ich keine Ahnung habe wie ich den Editor dazu bewegen soll, solche DIVs einzufügen.

    Ich habe es wie folgt gelöst ...

    1.
    (Kostenloses) Iconset auf IcoMoon erstellt (siehe Attachement)
    2.
    Dann hab ich mir das mitgelieferte Einbindungs-CSS eines Icons so umformuliert, dass das Icon mittels Pseudoklasse :before (bzw. :after) direkt der entsprechenden Klasse zugewiesen wird (ohne Extra-DIV o.ä.).
    3.
    (Wer SASS nicht kennt überspringt diesen Punkt)
    Auf Basis dieses CSS habe ich mir folgendes SASS geschrieben.

    Code:
    $icon_class:  icon-envelop icon-info icon-lock icon-new-tab icon-chevron-up icon-ok icon-arrow-right  icon-home icon-bubble icon-key  icon-phone  icon-print  icon-list-ul	icon-user	icon-world  icon-cog  icon-calendar icon-clock  icon-chevron-down icon-chevron-left icon-chevron-right  icon-pencil icon-remove icon-checkmark-circle icon-cancel-circle  icon-remove-2 icon-exclamation-sign icon-upload icon-download icon-unlocked icon-email icon-star;
    $icon_content:"\e000"      "\e001"   "\e0a5"   "\e002"       "\f077"        "\f00c" "\e003"           "\e004"   "\e005"     "\e006"   "\e007"     "\e008"     "\f0ca"       "\e009"     "\e00a"     "\e00b"   "\e00c"       "\e00d"     "\f078"           "\f053"           "\f054"             "\e00e"     "\e00f"     "\e010"               "\e011"             "\f00d"       "\f06a"               "\e012"     "\e013"       "\e014"       "\e015"     "\e016";
    $icon_order:  before       before    before     after        before         before  before            before    before      before    before      before      before        before      before      before    before        before      before            before            before              before      before      before                before              before        before                before      before        before        before      before;
    .icon-envelop, .icon-info, .icon-lock, .icon-new-tab, .icon-chevron-up, .icon-ok, .icon-arrow-right, .icon-home, .icon-bubble, .icon-key, .icon-phone	, .icon-print, .icon-list-ul, .icon-user, .icon-world, .icon-cog, .icon-calendar, .icon-clock, .icon-chevron-down, .icon-chevron-left, .icon-chevron-right, .icon-pencil, .icon-remove, .icon-checkmark-circle, .icon-cancel-circle, .icon-remove-2, .icon-exclamation-sign, .icon-upload, .icon-download, .icon-unlocked, .icon-email { font-weight:normal; }
    
    @include font-face('icomoon', font-files('icomoon.ttf','icomoon.woff','icomoon.svg','icomoon.eot'));
    
    $i:1;
    
    @each $class in $icon_class {
      .#{$class}:#{nth($icon_order, $i)} {
        content:nth($icon_content, $i);
        @if nth($icon_order, $i) == before {
          margin-right:0.3em;
        } @else {
          margin-left:0.3em;
        }
        font-family: 'icomoon';speak: none;font-style: normal;font-weight: normal;font-variant: normal;text-transform: none;line-height: 1;-webkit-font-smoothing: antialiased;
      }
      $i: $i+1;
    }
    Da es in SASS keine Arrays gibt, nutze ich SASS-Listen (hier gefunden).
    Wenn man ein anderes Iconset benutzen möchte, müssen die vier ersten Zeilen einmal händisch neu geschrieben werden.
    Zeile 3: Die Liste $icon_order benutze ich da ich einzelne Icons mittels :after einfügen möchte (z.B. ein Icon welches externe Links markiert).
    Zeile 4: Diese Klassen werden benötigt, da der TinyMCE Formatwähler sonst nichts anzeigt.

    4.
    Daraus wird folgendes CSS erzeugt, welches ich in meinem Frontend-CSS und im tinymce.css integriere (meine tinymce.css liegt im selben Ordner wie die screen.css damit die Pfade zu den CSS-Resourcen dieselben bleiben).

    Code:
    /* line 5, K:/xampp/htdocs/dev/efcc/files/theme/sass/_icons.scss */
    .icon-envelop, .icon-info, .icon-lock, .icon-new-tab, .icon-chevron-up, .icon-ok, .icon-arrow-right, .icon-home, .icon-bubble, .icon-key, .icon-phone, .icon-print, .icon-list-ul, .icon-user, .icon-world, .icon-cog, .icon-calendar, .icon-clock, .icon-chevron-down, .icon-chevron-left, .icon-chevron-right, .icon-pencil, .icon-remove, .icon-checkmark-circle, .icon-cancel-circle, .icon-remove-2, .icon-exclamation-sign, .icon-upload, .icon-download, .icon-unlocked, .icon-email {
      font-weight: normal;
    }
    
    @font-face {
      font-family: "icomoon";
      src: url('/files/theme/fonts/icomoon.ttf') format('truetype'), url('/files/theme/fonts/icomoon.woff') format('woff'), url('/files/theme/fonts/icomoon.svg') format('svg'), url('/files/theme/fonts/icomoon.eot') format('embedded-opentype');
    }
    
    /* line 12, K:/xampp/htdocs/dev/efcc/files/theme/sass/_icons.scss */
    .icon-envelop:before {
      content: "\e000";
      margin-right: 0.3em;
      font-family: 'icomoon';
      speak: none;
      font-style: normal;
      font-weight: normal;
      font-variant: normal;
      text-transform: none;
      line-height: 1;
      -webkit-font-smoothing: antialiased;
    }
    
    /* line 12, K:/xampp/htdocs/dev/efcc/files/theme/sass/_icons.scss */
    .icon-info:before {
      content: "\e001";
      margin-right: 0.3em;
      font-family: 'icomoon';
      speak: none;
      font-style: normal;
      font-weight: normal;
      font-variant: normal;
      text-transform: none;
      line-height: 1;
      -webkit-font-smoothing: antialiased;
    }
    
    // hier folgen jetzt noch nen Haufen Icon-Klassen
    (Unkomprimiert zwecks Lesbarkeit.)

    5. Ergebnis: Icons lassen sich im Editor zuweisen, und werden natürlich auch im Frontend angezeigt, siehe tinymce_mit_Icon.jpg

    ---

    Und nun hätt ich gern Eure Kritik/Meinung/Erfahrung/Anregung/Alternativ-Lösung:
    Es scheint alles gut zu funktionieren, allerdings habe ich mit Sicherheit irgendwas nicht bedacht, der von IcoMoon vorgegebene DIV hat bestimmt seinen Grund.
    Angehängte Dateien Angehängte Dateien

  2. #2
    Contao-Fan Avatar von Bas
    Registriert seit
    03.12.2009.
    Ort
    Hamburg
    Beiträge
    555

    Standard

    Ich korrigier mich mal selber (und bin ein wenig enttäuscht das es niemanden aufgefallen ist).
    All das oben ist Schmarrn .. offensichtlich lag mein damaliges Interesse mehr daran hübsche SASS-Funktionen zu formulieren, als dass ich mir Gedanken über die Iconfont Einbindung gemacht hätte.

    Icomoon liefert ne CSS-Datei mit die sich 1zu1 in die Screen-Css und die tinymce-Css einbinden lässt und sofort funktioniert. Das einzige was ich persönlich noch anpasse ist es, die Zuweisung der font-family von der allgemeinen Definiton der Icon-Klassen zum :before (Zuweisung des Icons) zu verlagern (damit die Klassen mit allen Inline-Stilen (z.B. <span>) funktionieren ohne die eigentliche Text-Schriftzuweisung zu überschreiben.

    PS: Endlich hab ich nen Grund, meinen Blog fertig zu stellen, das gibt nen klasse Tutorial ab (nach ein wenig Feinschliff).
    Geändert von Bas (03.07.2013 um 08:16 Uhr)

  3. #3
    Contao-Nutzer
    Registriert seit
    18.06.2013.
    Beiträge
    24

    Standard

    Hallo Bas,

    hast du ein Tutorial zu dem Thema geschrieben? Mich interessiert auch, wie du es letztendlich gelöst hast

    Gruß
    Stefan

  4. #4
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.719
    User beschenken
    Wunschliste

    Standard

    Hi,
    ... ein Jahr später... ;-)

    Mich nervt es auch, dass man in Contao und dem Editor relativ schlecht irgendwelche Icon oder data-Anweisungen unterbringen kann - mit dem Tiny 4 sieht´s noch trüber aus...


    Also: was macht der Blogeitrag?

  5. #5
    Contao-Urgestein Avatar von cliffparnitzky
    Registriert seit
    08.10.2010.
    Ort
    Lüneburg
    Beiträge
    2.451
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Das sollte helfen: https://community.contao.org/de/show...tao-3-3-pimpen

    Da gibt es auf jeden Fall ein Font Awesome Plugin.

  6. #6
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.719
    User beschenken
    Wunschliste

    Standard

    o.k. sehe ich mir mal an...

  7. #7
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.719
    User beschenken
    Wunschliste

    Standard

    hmm unter http://www.tinymce.com/wiki.php/Plugins sehe ich nichts dergleichen - auch zum Thema data- und aria-Attributen nichts..??

    edit 1

    ahh: FontAwesome-Plugin

    https://github.com/josh18/TinyMCE-FontAwesome-Plugin

    edit 2

    und https://tinymceplugins.com/plugins/

  8. #8
    Contao-Urgestein Avatar von cliffparnitzky
    Registriert seit
    08.10.2010.
    Ort
    Lüneburg
    Beiträge
    2.451
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Naja, im Grunde zählt erstmal nur das was hier steht: https://github.com/cliffparnitzky/TinyMcePluginLoader

    In dem Fall ist das Font Awesome eben auch kein offizielles Plugin von TinyMCE.

    Was unter https://tinymceplugins.com/plugins/ gelistet ist, ist fast alles kostenpflichtig.

  9. #9
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.719
    User beschenken
    Wunschliste

    Standard

    kommt man wiedermal schnell von "Ästchen zum Stöckchen"...

    man müsste bei Theme einen Iconfont auswählen können, der dann bei den Seiten im Tiny eingeschleust wird, die das entsprechende Theme ausgewählt haben...

  10. #10
    Contao-Urgestein Avatar von cliffparnitzky
    Registriert seit
    08.10.2010.
    Ort
    Lüneburg
    Beiträge
    2.451
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    hää?

  11. #11
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.719
    User beschenken
    Wunschliste

    Standard

    also...

    nehmen wir an, du hast in Contao zwei Domains A und B mit zwei Themes Ta und Tb - eins mit Iconmoon und eins mit FontAwesome...

    Wenn ich bei Domain A bin und einen Text im Tiny schreibe, sollte Iconmoon angezeigt werden - und im FE natürlich auch ausgeliefert werden und bei einer Seite in Domain B mit Tb entsprechend FontAwesome...

  12. #12
    Contao-Urgestein Avatar von cliffparnitzky
    Registriert seit
    08.10.2010.
    Ort
    Lüneburg
    Beiträge
    2.451
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Hmm, naja, das ist schon sehr speziell ...

  13. #13
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.719
    User beschenken
    Wunschliste

    Standard

    m.E. so ungewöhnlich eigentlich nicht...

  14. #14
    Contao-Urgestein Avatar von cliffparnitzky
    Registriert seit
    08.10.2010.
    Ort
    Lüneburg
    Beiträge
    2.451
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Kann man m.E. ohne weiteres lösen ...

Aktive Benutzer

Aktive Benutzer

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

Lesezeichen

Lesezeichen

Berechtigungen

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