Если еще не работает..

#wordpress

#wordpress

Вопрос:

Я хочу показать содержимое шаблона, если объявление недоступно

я использую этот код, но

отображаются как реклама, так и содержимое шаблона

 <?php
    if(dt_show_ads('position=Headeramp;before=<div>amp;after=</div>'))
    {
?>
    <!-- Some content here -->
<?php
    }
    else
    {
        include TEMPLATEPATH.'/templates/newsleft_col.tpl.php';
    }
?>
  

Ответ №1:

dt_show_ads('position=Headeramp;before=<div>amp;after=</div>') кажется, не возвращает никакого значения. Это оценивается как false в PHP.

Что dt_show_ads() делает, однако, это вставить HTML-код объявления (если он есть).

Поэтому, независимо от того, есть реклама или нет, ваша else часть всегда выполняется.

Быстрый запрос Google не дал мне никакой разумной документации по dt_show_ads, возможно, вы захотите попробовать это:

 if (strlen($ads = dt_show_ads('position=Headeramp;before=<div>amp;after=</div>amp;echo=false')) !== 0)
{
    echo $ads;
    // whatever other content you want to show
}
else
{
    include TEMPLATEPATH.'/templates/newsleft_col.tpl.php';
}
  

Редактировать:

Поскольку, согласно вашему комментарию, dt_show_ads() не поддерживает аргумент WP-semi-standard echo , вам необходимо буферизировать его вывод, чтобы иметь возможность его проверить:

 ob_start();
dt_show_ads('position=Headeramp;before=<div>amp;after=</div>');
$ads = ob_get_contents();
ob_end_clean();

if (strlen($ads) !== 0)
{
    echo $ads;
    // whatever other content you want to show
}
else
{
    include TEMPLATEPATH.'/templates/newsleft_col.tpl.php';
}
  

Комментарии:

1. Похоже, что dt_show_ads() не поддерживает echo аргумент тогда. Дай мне секунду, я опубликую хакерское обновление через минуту.

Ответ №2:

Нет возможности получить оба состояния оператора IF. Что-то не так с вашим кодом. Возможно, вы неправильно отобразили здесь весь свой код?


Ответ # 2

Функция, которую вы проверяете:

 if(dt_show_ads('position=Headeramp;before=<div>amp;after=</div>'))
{
}
else
{
}
  

Он может распечатать соответствующий HTML-код и в конце вернуть значение false в примере. В этом случае вы получаете false для первого оператора IF, а из-за false вы получаете часть else.

Чтобы быть уверенным, каков результат dt_show_ads(); сделайте это:

 echo "<pre>" . print_r(dt_show_ads('position=Headeramp;before=<div>amp;after=</div>'), true) . "</pre>";
  

Ответ №3:

 <?php 
if (!dt_show_ads('position=Headeramp;before=<div>amp;after=</div>')) {
include TEMPLATEPATH.'/templates/newsleft_col.tpl.php';}
?>