0

現在、自分のWebサイトの1つでsphiderを使用しています。質問は、結果ページを2つの部分に分割して、200ピクセルの区切りを追加して広告スロットを配置する方法です。

コード:

    <?php 
extract($search_results);
?>

<?php if ($search_results['did_you_mean']){?>
    <div id="did_you_mean">
    <?php echo $sph_messages['DidYouMean'];?>: <a href="<?php print 'index.php?query='.quote_replace(addmarks($search_results['did_you_mean'])).'&search=1'?>"><?php print $search_results['did_you_mean_b']; ?></a>?
    </div>
<?php  }?>  

<?php if ($search_results['ignore_words']){?>
    <div id="common_report">
    <?php while ($thisword=each($ignore_words)) {
        $ignored .= " ".$thisword[1];
    }       
    $msg = str_replace ('%ignored_words', $ignored, $sph_messages["ignoredWords"]); 
    echo $msg; ?>
    </div>
<?php  }?>  


<?php if ($search_results['total_results']==0){?>
    <div id ="result_report">
        <?php 
        $msg = str_replace ('%query', $ent_query, $sph_messages["noMatch"]);
        echo $msg;
        ?>
    </div>
<?php  }?>  


<?php if ($total_results != 0 && $from <= $to){?>
    <div id ="result_report">
    <?php  
    $result = $sph_messages['Results'];
    $result = str_replace ('%from', $from, $result);
    $result = str_replace ('%to', $to, $result);
    $result = str_replace ('%all', $total_results, $result);
    $matchword = $sph_messages["matches"];
    if ($total_results== 1) {
        $matchword= $sph_messages["match"];
    } else {
        $matchword= $sph_messages["matches"];
    }

    $result = str_replace ('%matchword', $matchword, $result);   
    $result = str_replace ('%secs', $time, $result);
    echo $result;
    ?>
    </div>
<?php  }?>  


<?php if (isset($qry_results)) {
?>

<div id="results">

<!-- results listing -->

    <?php foreach ($qry_results as $_key => $_row){
        $last_domain = $domain_name;
        extract($_row);
        if ($show_query_scores == 0) {
            $weight = '';
        } else {
            $weight = "[$weight%]"; 
        }
        ?>
        <?php  if ($domain_name==$last_domain && $merge_site_results == 1 && $domain == "") {?>
        <div class="idented">
        <?php }?>
        <b><?php print $num?>.</b> <?php print $weight?>
        <a href="<?php print $url?>" class="title"> <?php print ($title?$title:$sph_messages['Untitled'])?></a><br/>
        <div class="description"><?php print $fulltxt?></div>
        <div class="url"><?php print $url2?> - <?php print $page_size?></div>
        <?php  if ($domain_name==$last_domain && $merge_site_results == 1 && $domain == "") {?>
            [ <a href="<?php print 'index.php?query='.quote_replace(addmarks($query)).'&search=1&results='.$results_per_page.'&domain='.$domain_name?>">More results from <?php print $domain_name?></a> ]
            </div class="idented">
        <?php }?>
        <br/>
    <?php  }?>
 </div>
<?php }?>

<!-- links to other result pages-->
<?php if (isset($other_pages)) {
    if ($adv==1) {
        $adv_qry = "&adv=1";
    }
    if ($type != "") {
        $type_qry = "&type=$type";
    }
?>
    <div id="other_pages">
    <?php print $sph_messages["Result page"]?>:
    <?php if ($start >1){?>
                <a href="<?php print 'index.php?query='.quote_replace(addmarks($query)).'&start='.$prev.'&search=1&results='.$results_per_page.$type_qry.$adv_qry.'&domain='.$domain?>"><?php print $sph_messages['Previous']?></a>
    <?php  }?>  

    <?php  foreach ($other_pages as $page_num) {
                if ($page_num !=$start){?>
                    <a href="<?php print 'index.php?query='.quote_replace(addmarks($query)).'&start='.$page_num.'&search=1&results='.$results_per_page.$type_qry.$adv_qry.'&domain='.$domain?>"><?php print $page_num?></a>
                <?php } else {?>    
                    <b><?php print $page_num?></b>
                <?php  }?>  
    <?php  }?>

    <?php if ($next <= $pages){?>   
            <a href="<?php print 'index.php?query='.quote_replace(addmarks($query)).'&start='.$next.'&search=1&results='.$results_per_page.$type_qry.$adv_qry.'&domain='.$domain?>"><?php print $sph_messages['Next']?></a>
    <?php  }?>  

    </div>

<?php }?>


<div class="divline">
</div>

また、ライブのPHPコードエディタについても知りません。知っている場合は、コメントして共有してください。リンクを追加できます。

4

1 に答える 1

1

$fromと$toが結果番号であると仮定すると、たとえば「100件中10から30件の結果を表示しています」と表示されます。

<div id="results">

<!-- results listing -->

<?php $adbreak = ($to - $from) / 2;
    <?php foreach ($qry_results as $_key => $_row){
    <?php if ($adbreak == 0) { ?>
        <div id="results-adbreak">
            <img src="buy-a-car.jpg" alt="one careful owner!" />
        </div>
    <?php }
          $adbreak--;
     ?>

// rest of your code

これにより、結果のページのほぼ半分にdivが配置されます(1つ与えるか1つ取る)。明らかに、広告を好きなものへの呼び出しに置き換えることができます。

次のようなものを追加します。

<?php $adbreak = ($to - $from) / 2;
<?php if ($adbreak < 5) $adbreak = -1; ?>

結果リストが短すぎる場合は、まったく表示されないようにします。

$toと$fromが事前にわからない場合でも、それを行うことができますが、最初にクエリ結果から同等のものを計算する必要があります。

于 2012-09-15T08:31:06.327 に答える