OpenCart 1.5.5.1 にインストールされているAquaCartという名前のテーマを編集しています。Twitter Bootstrapの固定トップ ナビゲーション バーも統合しました。すでにナビゲーションバーを変更して、そこにログイン/ログアウトメニューを配置しましたが、問題なく動作しています。このプロジェクトは、自分のオンライン ストア用です。
PHP のスキルはまだなく、HTML+CSS しかありません。header.tpl
現在のテーマのファイルからコードをコピーし、ファイルを編集することで、新しいナビゲーション バー メニューにログイン/ログアウト ボタンを配置することができましたheader.php
(からcatalog\english\common\header.php
)。
今、私はメニューを磨いており、サインアップという名前のカスタムメニュー/リンクを追加したいと考えていました! . このサインアップが欲しい!ユーザーがすでにログインしているときにログアウトリンクとして表示されるメニュー リンク。
私の現在の編集では、ログインしているユーザーの名前が に<li>
表示され、ログアウト メニューが 2 番目に表示されます<li>
。これは私が本当に欲しいものではありません。サインアップの代わりにログアウトリンクを表示したい! ユーザーがログインしたときのリンク。
これが私の現在の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のcatalog\languageフォルダから。すでに編集されています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';
?>
上記のコードは次のようにレンダリングされます...
..そして、サインアップしたかったのです!ユーザーがログインしているときにログアウトになるリンク。
私はまだ 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 } ?>
したがって、上記のコードを使用しても機能しないのはチェックアウト メニューです。チェックアウト メニューがユーザーをショッピング カート ページにリダイレクトしています。
上記のコードをコピーして貼り付けただけです。既存のコードの使い方を理解しようと試行錯誤しました。