#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';}
?>