numero2 / contao-tags

Adds the possibility to assign tags to individual elements.
GNU Lesser General Public License v3.0
1 stars 3 forks source link

Tags wird entfernt wenn andere Weiterleitung als "Standard" #3

Closed lennier83 closed 1 year ago

lennier83 commented 1 year ago

Juhuu. Ich habe gerade festgestellt, dass die Tags weggehen als Feld wenn man was anderes als "Standard" benutzt für die Weiterleitung (also nach dem Refresh ist das Tagfeld dann weg). Sowohl bei News als auch bei Events. Ist das so gewollt oder ein Bug? :-)

lennier83 commented 1 year ago

Uh. Das gleiche wie hier also https://github.com/pdir/mae_event_categories/issues/20 :-D

bennyborn commented 1 year ago

Wir haben soeben die 0.1.13 released die das Problem bei den News lösen sollte. Bei den Events gibt es keine Tags weil wir dafür generell (noch) keinen Support haben 😉

lennier83 commented 1 year ago

Geil. Klappt auch bei Events via dca. Mercie

lizardat commented 8 months ago

Geil. Klappt auch bei Events via dca. Mercie

@lennier83 Kannst du das bitte kurz erklären, wie man das via DCA sichtbar bekommt? Danke.

lennier83 commented 8 months ago

Uno momento. Muss da mal selber im Projekt schauen. Aber schnell zu den Templates. Im Event-Template kannst du z.B. (vorgegebene) Tags zur Verfügung stellen mit den IDs die du unter "Tags" findest unterhalb "System":

<?php foreach( $this->tags = \Contao\StringUtil::deserialize($this->tags) as $tag ): ?> <span class="events__tags"> <?php if ($tag == 1): ?>Konzert<?php endif; ?> <?php if ($tag == 2): ?>Ausstellung<?php endif; ?> ... </span> <?php endforeach; ?>

Das ist zwar Händisch eintragen und funktioniert nur bedingt wenn du Redakteuren eine unendliche Anzahl geben willst, aber für z.B. Event-Farbcodierungen oder 1-20 Tags ... völlig ausreichend (und unendlich manuell erweiterbar) :-)

So. Hier ist mein Einbau

`<?php

use Contao\CoreBundle\DataContainer\PaletteManipulator;

PaletteManipulator::create() ->addField('tags', 'title_legend', 'append') ->applyToPalette('default', 'tl_calendar_events') ->applyToPalette('internal', 'tl_calendar_events') ->applyToPalette('article', 'tl_calendar_events') ->applyToPalette('external', 'tl_calendar_events');

$GLOBALS['TL_DCA']['tl_calendar_events']['fields']['tags'] = [ 'exclude' => false , 'filter' => false , 'label' => ['Tags', 'Falls verfügbar'] , 'inputType' => 'select' , 'foreignKey' => 'tl_tags.tag' , 'options_callback' => ['numero2_tags.listener.data_container.tags', 'getTagOptions'] , 'save_callback' => [['numero2_tags.listener.data_container.tags', 'saveTags']] , 'eval' => ['multiple'=>true, 'size'=>8, 'tl_class'=>'clr long tags', 'chosen'=>true] , 'sql' => "blob NULL" , 'relation' => ['type'=>'hasMany', 'load'=>'eager'] ]; `

bennyborn commented 7 months ago

<?php foreach( $this->tags = \Contao\StringUtil::deserialize($this->tags) as $tag ): ?> <span class="events__tags"> <?php if ($tag == 1): ?>Konzert<?php endif; ?> <?php if ($tag == 2): ?>Ausstellung<?php endif; ?> ... </span> <?php endforeach; ?>

Das ist zwar Händisch eintragen und funktioniert nur bedingt wenn du Redakteuren eine unendliche Anzahl geben willst, aber für z.B. Event-Farbcodierungen oder 1-20 Tags ... völlig ausreichend (und unendlich manuell erweiterbar) :-)

Macht es euch bitte nicht so umständlich 😋

Einfach die Tags per passendem Model holen...

<?php

$tagIDs = \Contao\StringUtil::deserialize($this->tags);

if( !empty($tagIDs) ) {

    $tags = \numero2\TagsBundle\TagsModel::findMultipleByIds($tagIDs);

    if( $tags ) {

        $this->tags = $tags->fetchAll();
    }
}

?>

... und dann einfach ausgeben

<?php foreach( $this->tags as $tag ): ?>
    <span><?= $tag['tag'] ?></span>
<?php endforeach; ?>

Disclaimer: Alles ungetestet 😁