oglasi: nic manj prikazov, vec mest za enote ki nesejo
Po podatkih AdSense (zadnjih 7 dni) prihodek nesejo folx.tv in-article (98,93 EUR), Folx News In-Article = slot 4154017639 (82,45 EUR) in Multiplex (63,59 EUR). Prejsnji commit je pri dveh od teh zmanjsal stevilo mest. - odlozena zahteva (IntersectionObserver) NI vec privzeta: eager=true. Odlozeno nalaganje dvigne vidnost, a znizza stevilo prikazov pri enotah globlje na strani - in prav te nesejo denar. Pot ostaja v kodi za kasneje, ko bomo ucinek lahko izmerili. Popravek 3-sekundnega odstevanja ostane. - clanek: enota 4154017639 vrnjena na stran, a pod naslovom in tik pred besedilom namesto kot pas nad naslovnico - isti prikazi, boljse mesto, naslov ne pade pod pregib. - PageSideAds: oba stolpca spet tu. Sirina se prilagodi zaslonu prek --rail-w: 160x600 od 1536 px, 300x600 od 1700 px. Dodan onAdStatus, da prazna enota ne pusti luknje. - naslovnica dobi Multiplex, edina strana ga ni imela. Skupaj na clanku (telefon): display pred besedilom, in-article za uvodom, display na sredini (in vec pri dolgih), multiplex, lepljivi pas.
This commit is contained in:
@@ -23,7 +23,11 @@ export default function AdSense({
|
||||
style,
|
||||
layout,
|
||||
layoutKey,
|
||||
eager = false,
|
||||
// Privzeto zahtevamo takoj. Odlozena zahteva dvigne vidnost, a znizza stevilo
|
||||
// prikazov pri enotah globlje na strani - in prav te (in-article, multiplex)
|
||||
// nosijo prihodek. Lazy pot ostaja na voljo prek eager={false}, a je nikjer
|
||||
// ne uporabljamo, dokler ucinka ne moremo izmeriti v AdSense.
|
||||
eager = true,
|
||||
onAdStatus,
|
||||
}: AdSenseProps) {
|
||||
const adRef = useRef<HTMLModElement>(null);
|
||||
@@ -230,36 +234,45 @@ export function MultiplexAd() {
|
||||
);
|
||||
}
|
||||
|
||||
// En sam desni stolpec 300x600 namesto dveh 160x600.
|
||||
// 160x600 je stara velikost z malo povprasevanja, dve enoti sta si konkurirali,
|
||||
// prazna pa je brez onAdStatus pustila luknjo. Prikaze se sele, ko je dovolj
|
||||
// prostora desno od vsebine (min-[1700px]).
|
||||
export function PageSideAds({ contentHalfWidth = 640 }: { contentHalfWidth?: number }) {
|
||||
const gap = 24;
|
||||
const offset = contentHalfWidth + gap;
|
||||
// Oba stolpca ostaneta (nic se ne odvzame), a se prilagodita sirini zaslona:
|
||||
// 160x600 od 1536 px, 300x600 od 1700 px naprej, kjer je prostora dovolj.
|
||||
// Sirino dolocz CSS, AdSense jo prebere ob zahtevi. Dodan onAdStatus, da prazna
|
||||
// enota ne pusti luknje - prej je ni imela.
|
||||
function SideRail({ side, offset }: { side: "left" | "right"; offset: number }) {
|
||||
const [filled, setFilled] = useState<boolean | null>(null);
|
||||
if (filled === false) return null;
|
||||
return (
|
||||
<div className="relative">
|
||||
<div
|
||||
className="hidden min-[1700px]:flex fixed top-0 bottom-0 w-[300px] z-10 items-center justify-center pointer-events-none"
|
||||
style={{ right: `calc(50% - ${offset}px - 300px)` }}
|
||||
data-testid="ad-right-sidebar"
|
||||
>
|
||||
<div className="pointer-events-auto">
|
||||
<AdSense
|
||||
slot="2398082838"
|
||||
format="vertical"
|
||||
responsive={false}
|
||||
style={{ display: "block", width: "300px", height: "600px" }}
|
||||
onAdStatus={setFilled}
|
||||
/>
|
||||
</div>
|
||||
<div
|
||||
className="hidden 2xl:flex fixed top-0 bottom-0 w-[160px] min-[1700px]:w-[300px] z-10 items-center justify-center pointer-events-none"
|
||||
style={side === "left"
|
||||
? { left: `calc(50% - ${offset}px - var(--rail-w))` }
|
||||
: { right: `calc(50% - ${offset}px - var(--rail-w))` }}
|
||||
data-testid={`ad-${side}-sidebar`}
|
||||
>
|
||||
<div className="pointer-events-auto w-full">
|
||||
<AdSense
|
||||
slot="2398082838"
|
||||
format="vertical"
|
||||
responsive={false}
|
||||
style={{ display: "block", width: "100%", height: "600px" }}
|
||||
onAdStatus={setFilled}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export function PageSideAds({ contentHalfWidth = 640 }: { contentHalfWidth?: number }) {
|
||||
const gap = 10;
|
||||
const offset = contentHalfWidth + gap;
|
||||
return (
|
||||
<div className="relative page-side-rails">
|
||||
<SideRail side="left" offset={offset} />
|
||||
<SideRail side="right" offset={offset} />
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export function SidebarAd() {
|
||||
const [visible, setVisible] = useState(false);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user