【发布时间】:2013-09-26 06:39:49
【问题描述】:
我必须创建一个 wordpress 网站,我已经快完成了。现在我在菜单上遇到了一些问题。我必须检查单击了哪个菜单项(没有 page_id="")。所以我找到了$_SESSION。我创建了 2 个模板:
模板 1:产品 - 这是我在 products.php 站点中获得的:
<?php
/*
Template Name: Products
*/
get_header();
$_SESSION['showActive'] = "product";
if (have_posts()) :while (have_posts()) : the_post(); ?>
<div id="contentslideshow">
<?php the_uds_billboard("billboard") ?>
</div>
<div class="entry"><?php the_content(); ?></div>
<?php endwhile; endif; ?>
<?php get_footer(); ?>
我不得不说有另一个页面的重定向。在此页面中,我在 WP 后端选择“模板:产品”。
然后我得到了另一个模板:主页:
<?php
/*
Template Name: Home
*/
get_header();
$_SESSION['showActive'] = "home";
if (have_posts()) :while (have_posts()) : the_post(); ?>
<div id="contentslideshow">
<?php the_uds_billboard("billboard") ?>
</div>
<div class="entry"><?php the_content(); ?></div>
<?php endwhile; endif; ?>
<?php get_footer(); ?>
还有另一个重定向,我和以前一样做了。我在 WP 后端选择“模板:主页”。现在我在菜单 div 中签入header.php:
<div id="lower">
<a href="#" class="tab1<?php if($_SESSION['showActive'] == 'home'){ echo " tab-active"; } else{ echo ""; } ?>">Home</a>
<a href="#" class="tab3<?php if($_SESSION['showActive'] == 'product'){ echo " tab-active"; } else{ echo ""; } ?>">Products</a>
</div>
因此,如果$_SESSION 是“产品”,则应将tab-active 类添加到“产品”菜单项。如果$_SESSION 是“home”,则应将tab-active 类添加到“Home”菜单项。
但是我必须在正确添加类的菜单项上单击两次。 有人可以给我一个提示吗?
干杯
【问题讨论】:
-
为什么不使用默认的 wordpress 菜单?他们将保留当前活动的菜单详细信息。
-
这是一个自制的模板,这里解释起来有点复杂,和代码没有关系:)
-
由于您正在使用会话,因此您需要在所有页面中将
session_start();作为打开<?php标签下的第一行,因为它没有发布在您的代码中。 -
在标头中分配会话值而不是在模板上。我认为您是在页面加载后分配值。尝试分配 $_SESSION['showActive'] = "home";在 header.php 上
-
@Fred-ii- Mh,您的意思是在模板代码中还是在标头中?