Open towerofnix opened 1 month ago
Suggested randomized slots from FF (#hsmusic-chat):
Official (group) only:
Official (group) and homepage:
Fandom (group):
9
and Greatest Hits 2
are part of the "considered overall good albums" of CANMT, but any CANMT albums similar to the two listed before would fit for this slot)Beyond (group):
Brought up by Jebb (#hsmusic-chat) and this particular idea pitched and detailed by FF (#hsmusic-chat).
Related to #501, but this is a distinct idea.
Our thoughts are to periodically (i.e. once a week), and maybe globally (i.e. everyone shares the same timestamp-based random seed), dynamically replace certain slots in a group's carousel with a randomly picked album from a manual selection for that slot. Essentially, randomized carousel slots are a list of albums, a periodically random one of which will always be shown in that slot's position. All the albums should (or could) represent the same "idea", and any of the albums may be shown to that effect. This lets there be more variety and diversity in the carousels while still keeping a coherent theme/layout. (A period is used, rather than randomizing on every load, to avoid needlessly frequent distractions, and to give a chance to come back and explore a new selection later.)
Implementation notes:
Probably just let the item in the carousel album list be an object, as below:
This can be expanded to support e.g.
Rotating From
or similar, in the future.Normalize the format with a
parseCarouselEntries
function or similar.{select: 'static', album: albumRef}
{select: 'random', albums: [...albumRefs]}
{select: 'rotate', albums: [...albumRefs]}
(for example)We can't do dynamics like this on the server, it has to be handled by client JS. The
mutatePageContent
step exists for this purpose. Blocking render introduced with scoped chronology links should help, but it's not a badly jarring consequence on other pages, because we're just slotting out a different album in the same place—no layout change.Make sure this is fine without JS. Top-level for all carousel items should each be represented by a container, rather than
<a>
, and contain multiple<a>
when randomization is applicable; all except the first should bestyle: 'display: none'
. Use a class or data tag to indicate the slot (container) should be randomized.We should support this behavior on homepage carousels, too. Make sure the implementation is not specific to groups.