Изменить шаблон TopicExcerpt?

Я хочу добавить аватар автора темы в фрагменты списка тем, но, похоже, нет способа изменить Topic Excerpt.

TopicExcerpt:

Кажется, единственный вариант — скрыть .topic-excerpt с помощью CSS и использовать свой собственный компонент через плагин-выход topic-list-main-link-bottom, который находится прямо под областью TopicExcerpt. Проблема в том, что этот плагин-выход получает в качестве аргумента только тему, поэтому мне приходится дублировать всю логику из expandPinned, чтобы понять, нужно ли его отображать.

Короче говоря: Можно ли добавить плагин-выход внутрь TopicExcerpt и/или передавать @expandPinned в выходы topic-list-main-link-bottom?

У вас теперь больше возможностей, см.:

Я изучил все доступные варианты, насколько мне известно. Насколько я вижу, хирургически изменить только отрывок невозможно.

Да, есть. Удалите его и добавьте свой.

Ты имеешь в виду заменить весь элемент списка тем на свой собственный? Я бы хотел избежать необходимости поддерживать всё это, когда мне нужно изменить лишь небольшой фрагмент.

нет, замените ячейку с фрагментами или добавьте рядом ещё одну и скройте её.

Отрывок — это не ячейка. Он используется внутри topic-cell и в мобильном элементе.

Также можно увидеть, что соседний плагин-выход topic-list-main-link-bottom передаёт только @topic, но не @expandPinned.

Ах да, вы правы, извините.

Я увидел файл в компонентах topic-list и сделал предположение.

Но в любом случае, есть множество инструментов для достижения того, что вы хотите здесь, не так ли?

Plugin outlet выглядит как хороший вариант, а затем манипулировать макетом с помощью CSS?

Что касается expandPinned, возможно, стоит воспроизвести логику в вашем новом компоненте столько, сколько потребуется?

Да, я как раз собирался пойти этим путём. Что также означает повторение

  get useMobileLayout() {
    return applyValueTransformer(
      "topic-list-item-mobile-layout",
      this.site.mobileView,
      { topic: this.args.outletArgs.topic }
    );
  }
  //и из discovery/topics.js
  get expandGloballyPinned() {
    !this.expandAllPinned();
  }
  get expandAllPinned() {
    const category = this.discovery.category?.id
    const tag = this.discovery.tag?.id
    return category || tag;
  }

Я надеялся, что мольбы к богам могут привести к более чистому варианту :pray: :sweat_smile:

Обычно именно этим я занимаюсь в понедельник утром.

это выглядит разумно, поэтому я сделал это здесь: