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);
|
||||
|
||||
|
||||
@@ -312,3 +312,10 @@ div[class^="fc-"] {
|
||||
.adsbygoogle {
|
||||
contain: layout style;
|
||||
}
|
||||
|
||||
/* Sirina stranskih stolpcev: 160x600 od 1536 px, 300x600 od 1700 px naprej.
|
||||
Vrednost bere PageSideAds za izracun odmika od sredine. */
|
||||
.page-side-rails { --rail-w: 160px; }
|
||||
@media (min-width: 1700px) {
|
||||
.page-side-rails { --rail-w: 300px; }
|
||||
}
|
||||
|
||||
@@ -358,6 +358,11 @@ export default function ArticlePage() {
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Enota "Folx News - In-Article" (4154017639) je bila prej vrhnji pas nad
|
||||
naslovnico. Ostane na clanku, a pod naslovom in tik pred besedilom:
|
||||
isti prikazi, boljse mesto, naslov ne pade pod pregib. */}
|
||||
<InContentDisplayAd />
|
||||
|
||||
{(() => {
|
||||
const sanitized = sanitizeContent(article.content);
|
||||
const blocks = sanitized.split(/(?=<(?:p|h[2-4]|div)[\s>])/i).filter(Boolean);
|
||||
|
||||
@@ -8,7 +8,7 @@ import { Eye, Play, Images } from "lucide-react";
|
||||
import { Skeleton } from "@/components/ui/skeleton";
|
||||
import Header from "@/components/header";
|
||||
import Footer from "@/components/footer";
|
||||
import AdSense, { ArticleCardAd, SidebarAd, PageSideAds } from "@/components/adsense";
|
||||
import AdSense, { ArticleCardAd, SidebarAd, PageSideAds, MultiplexAd } from "@/components/adsense";
|
||||
import { PhotoGalleryWidget } from "@/components/photo-gallery";
|
||||
import { HoroscopeWidget } from "@/components/horoscope-widget";
|
||||
import { RecipeWidget } from "@/components/recipe-widget";
|
||||
@@ -970,6 +970,13 @@ export default function Home() {
|
||||
</div>
|
||||
</LazySection>
|
||||
|
||||
{/* Multiplex je zadnjih sedem dni najhitreje rastoca enota (+500 %),
|
||||
naslovnica ga edina ni imela. */}
|
||||
<div className="mt-6" data-testid="ad-multiplex-home">
|
||||
<div className="text-[9px] text-muted-foreground/40 text-center pb-1 uppercase tracking-widest">Anzeige</div>
|
||||
<MultiplexAd />
|
||||
</div>
|
||||
|
||||
</main>
|
||||
<Footer />
|
||||
<PushPromptBanner />
|
||||
|
||||
Reference in New Issue
Block a user