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;
|
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() {
|
export function ArticleCardAd() {
|
||||||
const seed = useMemo(() => adSeedCounter++, []);
|
const seed = useMemo(() => adSeedCounter++, []);
|
||||||
const [filled, setFilled] = useState<boolean | null>(null);
|
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 { Skeleton } from "@/components/ui/skeleton";
|
||||||
import Header from "@/components/header";
|
import Header from "@/components/header";
|
||||||
import Footer from "@/components/footer";
|
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 { NewsWidget } from "@/components/news-widget";
|
||||||
import { BreakingNewsWidget } from "@/components/breaking-news-widget";
|
import { BreakingNewsWidget } from "@/components/breaking-news-widget";
|
||||||
import PushPromptBanner from "@/components/push-prompt-banner";
|
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
|
// 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 % 2 === 1) {
|
if (r > 0 && videos.length) {
|
||||||
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;
|
||||||
@@ -1076,6 +1072,11 @@ export default function Home() {
|
|||||||
? <MediumCard key={item.key} article={item.article} focalPoints={focalPoints} />
|
? <MediumCard key={item.key} article={item.article} focalPoints={focalPoints} />
|
||||||
: null
|
: 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)] && (
|
{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">
|
<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} />
|
<WideCardClassic article={widePairs[Math.floor(ri / 3) % widePairs.length][0]} focalPoints={focalPoints} />
|
||||||
|
|||||||
Reference in New Issue
Block a user