oglas iz celice v mrezi v vodoraven pas med vrstice: visok oglas je vrstico raztegnil na 546 px in pod izvlecki je ostalo prazno
This commit is contained in:
@@ -150,6 +150,28 @@ export default function AdSense({
|
||||
|
||||
let adSeedCounter = 1;
|
||||
|
||||
// Vodoravni pas med vrsticami mreze. Oglas v celici je vrstico raztegnil na
|
||||
// svojo visino (546 px proti 399 px kartice) in pod izvlecki je ostalo prazno.
|
||||
// Pas cez vso sirino na visino kartic ne vpliva in ima boljso zapolnjenost.
|
||||
export function GridBannerAd() {
|
||||
const [filled, setFilled] = useState<boolean | null>(null);
|
||||
if (filled === false) return null;
|
||||
return (
|
||||
<div className="my-2" data-testid="ad-grid-banner">
|
||||
<div className="text-[9px] text-muted-foreground/40 text-center pb-1 uppercase tracking-widest">
|
||||
Anzeige
|
||||
</div>
|
||||
<AdSense
|
||||
slot="1023820241"
|
||||
format="auto"
|
||||
responsive={true}
|
||||
style={{ display: "block" }}
|
||||
onAdStatus={setFilled}
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export function ArticleCardAd() {
|
||||
const seed = useMemo(() => adSeedCounter++, []);
|
||||
const [filled, setFilled] = useState<boolean | null>(null);
|
||||
|
||||
@@ -10,7 +10,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, MultiplexAd, TopBannerAd } from "@/components/adsense";
|
||||
import AdSense, { ArticleCardAd, SidebarAd, PageSideAds, MultiplexAd, TopBannerAd, GridBannerAd } from "@/components/adsense";
|
||||
import { NewsWidget } from "@/components/news-widget";
|
||||
import { BreakingNewsWidget } from "@/components/breaking-news-widget";
|
||||
import PushPromptBanner from "@/components/push-prompt-banner";
|
||||
@@ -924,17 +924,13 @@ export default function Home() {
|
||||
// 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
|
||||
// za to stran zapolni. Manj mest z visjo zapolnjenostjo prinese vec.
|
||||
let adCount = 0;
|
||||
let vidCount = 0;
|
||||
const totalRows = items.length / 4;
|
||||
for (let r = 0; r < totalRows; r++) {
|
||||
const rowStart = r * 4;
|
||||
const hasWidget = items.slice(rowStart, rowStart + 4).some((it) => it.type === "widget");
|
||||
if (hasWidget) continue;
|
||||
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) {
|
||||
if (r > 0 && videos.length) {
|
||||
// video namesto zadnjega clanka v vrstici brez oglasa
|
||||
const v = videos[vidCount % videos.length];
|
||||
vidCount += 1;
|
||||
@@ -1076,6 +1072,11 @@ export default function Home() {
|
||||
? <MediumCard key={item.key} article={item.article} focalPoints={focalPoints} />
|
||||
: null
|
||||
)}
|
||||
{ri > 0 && (ri + 1) % 2 === 0 && (
|
||||
<div className="sm:col-span-2 lg:col-span-4">
|
||||
<GridBannerAd />
|
||||
</div>
|
||||
)}
|
||||
{ri > 0 && (ri + 1) % 3 === 0 && widePairs[Math.floor(ri / 3) % Math.max(1, widePairs.length)] && (
|
||||
<div className="sm:col-span-2 lg:col-span-4 grid grid-cols-1 sm:grid-cols-2 gap-4">
|
||||
<WideCardClassic article={widePairs[Math.floor(ri / 3) % widePairs.length][0]} focalPoints={focalPoints} />
|
||||
|
||||
Reference in New Issue
Block a user