oglas v mrezi enak kartici: okvir prevzame visino vrstice, fiksna enota 300x400 centrirana v njem
This commit is contained in:
@@ -177,22 +177,17 @@ export function GridBannerAd() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function ArticleCardAd() {
|
export function ArticleCardAd() {
|
||||||
const seed = useMemo(() => adSeedCounter++, []);
|
|
||||||
const [filled, setFilled] = useState<boolean | null>(null);
|
const [filled, setFilled] = useState<boolean | null>(null);
|
||||||
if (filled === false) return null;
|
if (filled === false) return null;
|
||||||
|
// 31. 8. 2026: oglas mora biti enak kartici, torej cela celica in ne nizji
|
||||||
|
// blok z luknjo pod njim. Okvir je zato h-full in prevzame visino vrstice,
|
||||||
|
// oglas pa je v njem centriran. Enota 9916590834 je fiksna 300x400: fiksne
|
||||||
|
// mere Googlova skripta ne prevaja, zato se ne razteguje kot responsive.
|
||||||
return (
|
return (
|
||||||
// 31. 8. 2026: enota 3854634730 je v AdSense nastavljena kot fluid in-feed
|
<div
|
||||||
// in si visino racuna sama (248 px), inline visine pa Googlova skripta
|
className="h-full w-full flex items-center justify-center rounded-md border border-card-border bg-card overflow-hidden"
|
||||||
// prepise — z minHeight/height 400 je celico raztegnil na 600 in vrstica
|
data-testid="ad-card"
|
||||||
// je narasla. Zato pustimo fluid, okvir pa se prilagodi vsebini in stoji
|
>
|
||||||
// na vrhu celice, da pod njim ni vidne luknje.
|
|
||||||
// Vzorec z imeni izvajalcev je bil pod oglasom viden kot prazna grafika,
|
|
||||||
// ker je fluid enota nizja od celice. Zdaj je okvir samo okoli oglasa in
|
|
||||||
// se skrci na njegovo visino.
|
|
||||||
// 31. 8. 2026: fiksna Display enota 300x400, ki jo je Sebastjan naredil
|
|
||||||
// posebej za mrezo. Fluid In-feed (3854634730) si je visino racunal sam in
|
|
||||||
// se ustavil pri 258 px, zato je pod njim ostajala luknja.
|
|
||||||
<div className="self-start w-full flex justify-center rounded-md border border-card-border bg-card overflow-hidden">
|
|
||||||
<AdSense
|
<AdSense
|
||||||
slot="9916590834"
|
slot="9916590834"
|
||||||
responsive={false}
|
responsive={false}
|
||||||
|
|||||||
@@ -924,13 +924,17 @@ export default function Home() {
|
|||||||
// Oglas gre le v vsako drugo vrstico. Meritev 31. 8. 2026: od 13 enot na
|
// Oglas gre le v vsako drugo vrstico. Meritev 31. 8. 2026: od 13 enot na
|
||||||
// naslovnici jih je 9 vrnilo unfilled, torej je mest vec, kot jih Google
|
// naslovnici jih je 9 vrnilo unfilled, torej je mest vec, kot jih Google
|
||||||
// za to stran zapolni. Manj mest z visjo zapolnjenostjo prinese vec.
|
// za to stran zapolni. Manj mest z visjo zapolnjenostjo prinese vec.
|
||||||
|
let adCount = 0;
|
||||||
let vidCount = 0;
|
let vidCount = 0;
|
||||||
const totalRows = items.length / 4;
|
const totalRows = items.length / 4;
|
||||||
for (let r = 0; r < totalRows; r++) {
|
for (let r = 0; r < totalRows; r++) {
|
||||||
const rowStart = r * 4;
|
const rowStart = r * 4;
|
||||||
const hasWidget = items.slice(rowStart, rowStart + 4).some((it) => it.type === "widget");
|
const hasWidget = items.slice(rowStart, rowStart + 4).some((it) => it.type === "widget");
|
||||||
if (hasWidget) continue;
|
if (hasWidget) continue;
|
||||||
if (r > 0 && videos.length) {
|
if (r % 2 === 1) {
|
||||||
|
const pos = r === 1 ? 3 : adCount % 2 === 0 ? 0 : 3;
|
||||||
|
items[rowStart + pos] = { type: "ad", key: `ad-row-${adCount++}` };
|
||||||
|
} else if (r > 0 && videos.length) {
|
||||||
// video namesto zadnjega clanka v vrstici brez oglasa
|
// video namesto zadnjega clanka v vrstici brez oglasa
|
||||||
const v = videos[vidCount % videos.length];
|
const v = videos[vidCount % videos.length];
|
||||||
vidCount += 1;
|
vidCount += 1;
|
||||||
@@ -1065,7 +1069,7 @@ export default function Home() {
|
|||||||
item.type === "widget"
|
item.type === "widget"
|
||||||
? <div key={item.key}>{item.widget!.el}</div>
|
? <div key={item.key}>{item.widget!.el}</div>
|
||||||
: item.type === "ad"
|
: item.type === "ad"
|
||||||
? <div key={item.key} className="flex items-start empty:hidden" data-testid={`ad-grid-${item.key}`}><ArticleCardAd /></div>
|
? <div key={item.key} className="h-full empty:hidden" data-testid={`ad-grid-${item.key}`}><ArticleCardAd /></div>
|
||||||
: item.type === "video" && item.video
|
: item.type === "video" && item.video
|
||||||
? <VideoCard key={item.key} video={item.video} />
|
? <VideoCard key={item.key} video={item.video} />
|
||||||
: item.article
|
: item.article
|
||||||
|
|||||||
Reference in New Issue
Block a user