Can I specify random logos?

Is it possible to (via a plug-in if necessary) randomly choose a logo (and small logo) from a set of 3 every time someone starts a new session (or until their browser refreshes the assets for the logo)?

The Ruby code is trivial - but how can we incorporate that into Discourse? :confused:

You could do it with JS i suppose, here is code i hope it works

<script>
if (document.getElementById) { window.onload = swap };
function swap() {
var numimages=4;
rndimg = new Array("IMAGE URL 1", "IMAGE URL 2", "IMAGE URL 3", "IMAGE URL 4");
x=(Math.floor(Math.random()*numimages));
randomimage=(rndimg[x]);
document.getElementById("banner").style.logo-big = "url("+ randomimage +")";
}
</script>

PS this only works on hard refresh. also the css to big logo would be

.logo-big { 
background-image: url('DEFAULT LOGO IMAGE URL HERE');
}

The JS would work because i am using that to rotate my banner image randomly on every hard refresh not sure the exact code for logo CSS.

إعجابَين (2)

Thanks - I’ll give that a go :slight_smile:

Hi,

This is exactly what I need! Is the second part required? Also where does the first part get put exactly?

Best,
Michael

This is doable in a theme component, the method by @Alankrit_Choudh can work but I would recommend adding a custom ember initializer instead that overrides the URL in discourse instead of relying on window.onload here.

إعجاب واحد (1)

سام،

لقد واجهتُ نفس المشكلة. تعمل window.onload إذا تم استدعاؤها قبل </head>، لكنها لا تعمل إذا تم استدعاؤها لاحقًا. وبسبب ذلك، يفشل document.getElementById (لأن المعرف غير مُعرَّف بعد).

هل يمكنك توجيهي إلى دليل أو مثال أو تعليمات حول كيفية إنشاء مُهيئ Ember مخصص لشخص ليس لديه أي خبرة مع Ember؟

وللإحاطة الشاملة، ما أحاول فعله هو عرض صورة بانر عشوائية من مصفوفة عناوين URL:

var jlmyPix = new Array(
     '/img/pic0.jpeg',
     [ ... ]
     '/img/picN.jpeg'
);

function jlchoosePic() {
     var jlrandomPicNum = Math.floor(Math.random() * jlmyPix.length);
     document.getElementById("jlmyPicture").src = jlmyPix[jlrandomPicNum];
};

window.onload = jlchoosePic;