2017-02-28 30 views
0

我使用谷歌Adsense和無限的負載。無論何時我通過AJAX在頁面上「加載更多」數據,它都會自動從Google取出另一個廣告,這顯然不會顯示,因爲Google不支持通過AJAX引入廣告。如何在使用AJAX數據時忽略Adsense?

我需要的邏輯幫助下,我怎麼能只顯示在頁面的加載,每當1個廣告負載更多按鈕被按下時,如何忽略@include ('components.responsive_ad_display_only')

目前我想過使用會話。我在包含廣告後立即使用session()->put('retrieve', '1');。然後,一旦「加載更多」被按下,我檢查會話是否設置。如果已設置,則在提取更多數據時我不包含廣告。這種情況下的問題是,我最終需要「忘記」會話,因此當訪問者刷新主頁時,會出現一個新廣告。

這是我使用的代碼:

@php 
if (! session()->has('retrieve')) { 
    $i = 1; 
    $rand = rand(1, 10); 
    session()->put('retrieve', '1'); 
} else { 
    $i = 1; 
    $rand = 200; // any integer higher than media items displayed 
    session()->forget('retrieve'); 
} 
@endphp 

@foreach ($media as $media_item) 
    @if ($i == $rand) 
     <div class="ad_item"> 
      <!-- Ad Displayed here --> 
      @include('components.responsive_ad_display_only') 
     </div> 
    @endif 
    <div class="media_item"> 
     <h1>Media Item Name</h1> 
    </div> 
@endforeach 

這段代碼適用於不顯示每個其他時間的廣告,因爲會話狀態越來越設置和取消各一次。

我將不勝感激任何幫助和指導解決我的困境。

非常感謝!

+1

我建議增加一個'?廣告= FALSE'查詢字符串的所有AJAX請求的URL從正規區分它們加載請求,然後使用服務器端邏輯切換包含基於該參數的廣告。 – gyre

回答

1

爲了防止廣告出現在ajax請求有很多方式,包括但不限於

  • 在Ajax請求的url添加參數

使用它像

//in JS 
... 
url = "/somefile.php?page=1"; 
// update it to look like 
url = "/somefile.php?page=1&ajax=1"; 
... 

//in PHP 
if(!isset($_GET["ajax"]) || $_GET["ajax"] != 1){ //check ajax param in URL 
    /// Print your ad here 
  • 檢查使用PHP的標題(不知道的方式,但它的作品幾乎無處不在)

像這樣

if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && 
    strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') 
{ 
    /// Print your ad here 

還有其他的方法涉及會議,和其他類型的驗證,但這些也都是最簡單的

0

使用此方法在一定的時間

$i = rand(1, 10); 
if ($i == 1 || $i == 4 || $i == 8){ 
?> 
<div class="ad_item"> 
    <!-- Ad Displayed here --> 
    <?php 
     @include('components.responsive_ad_display_only'); 
    ?> 
</div> 
<?php 
foreach ($media as $media_item){ 

    } 
    ?> 
    <div class="media_item"> 
     <h1>Media Item Name</h1> 
</div> 
} 

一次,以顯示與阿賈克斯的廣告現在你可以使用會話信息,阻止廣告的連續顯示這樣

if(isset($_SESSION["some_key"])){ 
    if($_SESSION["some_key"] == 1 || $_SESSION["some_key"]== 4 || 
     $_SESSION["some_key"] == 8){ // The values for which ads show up 
     $i == 0; // A value for which ads won't show up 

現在你可以刪除該鍵一旦你不需要它,並重置它,如果你這樣做......

+0

看來您的解決方案會導致與我的方法類似的問題。如何保證在刷新頁面時即使會話已設置,廣告也會顯示出來?如果隨機數是1,4或8,廣告似乎總是顯示出來?我只希望它顯示一次,而不是每次通過AJAX加載更多數據。對不起,我可能只是不理解邏輯 –

+0

@ChrisPalmerBreuer我非常抱歉,您的請求並不那麼清楚,我會爲此答案添加一個標題,告訴它什麼是有用的,並且正確地回答 –

+0

不用擔心和謝謝幫助我!沒有足夠的自我解釋是我的壞處。 –

相關問題