我们的客户要求我们为iOS和Android的移动网站添加智能横幅广告。我们已经实现了所需的元标记:
<meta name="apple-itunes-app" content="app-id=ourAppID">
<meta name="google-play-app" content="app-id=ourAppID">
这很有效。 (我们正在使用Android的jquery.smartbanner plugin。)他们现在修改了要求;他们希望横幅只显示在网站的主页上,而且只是用户第一次在会话中点击主页。
<?php
if (empty($_SESSION['showSmartBanner']) && $_SERVER['REQUEST_URI'] === '/' ): ?>
<meta name="apple-itunes-app" content="app-id=ourAppID">
<meta name="google-play-app" content="app-id=ourAppID">
<?php
$_SESSION['showSmartBanner'] = false;
endif;
?>
获取主页部分;它只在那里显示。但似乎忽略了对会话变量的检查。我已将错误记录下来,即使设置了会话变量(表示横幅不应显示),横幅仍然显示。
我能想到的唯一原因是meta标签正在被缓存。有没有办法精确控制元标记的缓存?我不想使用任何http-equiv
元标记,因为据我所知,这会影响整个网站,而不仅仅是单个标记。
如果有人能想到另一个不起作用的原因,我会全力以赴。我一直盯着这个太久了,可能会遗漏一些明显的东西。
答案 0 :(得分:0)
Empty($var)
未设置或等于FALSE, $var
将返回True,因此在所有情况下都适合您。
将showSmartBanner重命名为dontShowSmarBanner,并在用户看到横幅时将其设置为True。
<?php
if (empty($_SESSION['dontShowSmartBanner']) && $_SERVER['REQUEST_URI'] === '/' ): ?>
<meta name="apple-itunes-app" content="app-id=ourAppID">
<meta name="google-play-app" content="app-id=ourAppID">
<?php
$_SESSION['dontShowSmartBanner'] = true;
endif;
?>