【发布时间】:2013-05-25 03:25:00
【问题描述】:
我正在编辑一个名为 AquaCart 的主题,安装在 OpenCart 1.5.5.1 中。我还集成了 Twitter Bootstrap 的固定顶部导航栏。我已经修改了导航栏并将 Login / Logout 菜单放在那里,它做得很好。该项目适用于我自己的在线商店。
我还没有任何 PHP 技能,只有 HTML+CSS。通过从我当前主题的header.tpl 文件中复制代码并编辑header.php 文件(来自catalog\english\common\header.php),我设法将登录/注销按钮放在我的新导航栏菜单上。
现在,我正在完善菜单并想添加一些名为 Sign Up! 的自定义菜单/链接。 我希望这个 Sign Up! 菜单链接在用户已经登录时显示为 Logout 链接。
我当前的编辑在<li> 中显示登录用户的名称,在第二个<li> 中显示注销菜单。这不是我真正想要的。我想在用户登录时显示 Logout 链接来代替 Sign Up! 链接。
这是我当前的header.tpl 编辑:
<ul>
<ul>
<li>
<a href="#">My Account</a><!--Shall be shown only when user is logged in-->
<ul>
<?php if (!$logged) { ?>
<?php echo $text_welcome; ?>
<?php } else { ?>
<?php echo $text_logged; ?>
<?php } ?>
<li class="divider"></li>
<li><a href="#">Store Front</a></li>
<li><a href="#">Blog Page</a></li>
</ul>
</li>
<li><a href="index.php?route=account/register">Sign Up!</a></li>
</ul>
</ul>
我的 header.php 来自 opencart 的目录\语言文件夹。 text_logged 和 text_welcome 已被编辑。
<?php
// header.php from catalog\language\english\common\header.php
$_['text_home'] = 'Online Shop';
$_['text_wishlist'] = 'Wish List (%s)';
$_['text_shopping_cart'] = 'Shopping Cart';
$_['text_search'] = 'Search';
$_['text_welcome'] = '<li><a href="%s">Login</a></li>
<li><a href="index.php?route=account/register">Sign Up!</a></li>';
$_['text_logged'] = '<li><a href="%s">%s</a></li>
<li><a href="%s">Logout</a></li>';
$_['text_account'] = 'My Account';
$_['text_checkout'] = 'Checkout';
?>
上面的代码是这样渲染的……
..我想让 sign Up! 链接在用户登录时变为 Logout。
我还不知道 PHP,但我正在努力研究 OpenCart 安装的 PHP 文件,我从我的 header.php 文件中找到了这个字符串 catalog\controller\common:
$this->data['text_logged'] = sprintf($this->language->get('text_logged'), $this->url->link('account/account', '', 'SSL'), $this->customer->getFirstName(), $this->url->link('account/logout', '', 'SSL'));
我正在考虑复制它,但不知道要复制和修改什么。还涉及哪些其他文件?
更新:
我现在添加了一个新的文本名称“注册”和“登录”,所以我可能不会感到困惑,而且我可以轻松地将其替换为我的文本链接。
到目前为止..我已经添加:在我的catalog\english\common\header.php:
$_['text_login'] = 'Login';
$_['text_signup'] = 'Sign Up!';
在我的catalog\controller\header.php。
$this->data['text_login'] = $this->language->get('text_login');
$this->data['text_signup'] = $this->language->get('text_signup');
更新 2:
根据 shadyxx 的意见,我重新标记了我的菜单,我稍微更改了菜单。所以对于“未登录的用户”...应该回显这个菜单...
标记如下:
<div class="nav-collapse collapse">
<ul>
<li><a href="#">Login</a></li>
<li><a href="#">Register</a></li>
</ul>
</div>
对于已登录的用户,应回显此菜单...
标记如下:
<div>
<ul>
<ul>
<li>
<a href="#">Account></b></a>
<ul>
<li>%s</a></li>
<li class="divider"></li>
<li>Shopping Cart</a></li>
<li>Checkout</a></li>
</ul>
</li>
<li>Logout</a></li>
</ul>
</ul>
</div>
在我的catalog\controller\common\header.php:
$this->data['signup'] = sprintf($this->language->get('text_signup'), $this->url->link('account/register', '', 'SSL'));
$this->data['login_register'] = sprintf($this->language->get('text_login_register'), $this->url->link('account/login', '', 'SSL'), $this->url->link('account/register', '', 'SSL'));
$this->data['logged_in'] = sprintf($this->language->get('text_logged_in'), $this->url->link('account/account', '', 'SSL'), $this->customer->getFirstName(), $this->data['text_shopping_cart'] = $this->language->get('text_shopping_cart'), $this->data['shopping_cart'] = $this->url->link('checkout/cart'), $this->url->link('account/logout', '', 'SSL'));
在我的目录\language\english\common\header.php
$_['text_login_register']
= '<div>
<ul>
<li>Login</a></li>
<li>Register</a></li>
</ul>
</div>';
$_['text_logged_in']
= '<div>
<ul>
<ul>
<li>
<a href="#">Account<b class="caret"></b></a>
<ul>
<li><a href="%s">%s</a></li>
<li class="divider"></li>
<li><a href="%s">Shopping Cart</a></li>
<li><a href="%s">Checkout</a></li>
</ul>
</li>
<li><a href="%s">Logout</a></li>
</ul>
</ul>
</div>';
在我的 header.tpl 中
<?php if (!$logged) { ?>
<?php echo $login_register; ?>
<?php } else { ?>
<?php echo $logged_in; ?>
<?php } ?>
所以,使用上面的代码不起作用的是结帐菜单。结帐菜单将用户重定向到购物车页面。
我刚刚复制粘贴了上面的代码。我试图通过反复试验来了解现有代码的使用。
【问题讨论】:
-
我已经简化了示例标记以便更好地展示和解释。应删除登录用户名(客户端之一)下方的“注销”链接菜单。因为当用户登录时,应回显注销链接菜单以代替“注册”链接菜单。
-
@shadyyx 问题已解决。我想我必须先学习 PHP,然后再学习 PHYTON。
标签: php twitter-bootstrap opencart