在子目录中安装Opencart存储,并在根文件夹

时间:2015-09-29 04:23:35

标签: opencart

希望一切顺利。我正在尝试将Opencart(2.0.3)安装到子目录(即www.website.com/shop/)中。我希望根URL www.website.com进入登录页面,用户登录后即可进入。它会将它们重定向到网站的/ shop /部分,并允许它们继续开展业务。我想知道实现这一目标的最简单方法是什么。我会在根文件夹中安装所有内容,然后修改.htaccess文件和配置文件吗?那么我将如何使登录文件在根文件夹中工作?我尝试先将所有内容安装到子目录/ shop / ...但是我遇到了一些问题,试图找出如何让根文件夹中的文件工作。

提前致谢!

2 个答案:

答案 0 :(得分:1)

是的,需要使用如下的ajax功能。在index.php中插入以下代码并将URL_WITH_SHOP替换为您的urlshop。然后我采取了" shop"作为子文件夹安装,如果不同,则替换" shop"使用您的子文件夹名称:



<?php
class ControllerAccountLoginAjax extends Controller
{
    private $error = array();

    public function index()
    {
        $this->load->model('account/customer');
        $json = array();
        // Login override for admin users
        if (!empty($this->request->get['token'])) {
            $this->event->trigger('pre.customer.login');
            $this->customer->logout();
            $this->cart->clear();
            unset($this->session->data['wishlist']);
            unset($this->session->data['payment_address']);
            unset($this->session->data['payment_method']);
            unset($this->session->data['payment_methods']);
            unset($this->session->data['shipping_address']);
            unset($this->session->data['shipping_method']);
            unset($this->session->data['shipping_methods']);
            unset($this->session->data['comment']);
            unset($this->session->data['order_id']);
            unset($this->session->data['coupon']);
            unset($this->session->data['reward']);
            unset($this->session->data['voucher']);
            unset($this->session->data['vouchers']);

            $customer_info = $this->model_account_customer->getCustomerByToken($this->request->get['token']);

            if ($customer_info && $this->customer->login($customer_info['email'], '', true)) {
                // Default Addresses
                $this->load->model('account/address');

                if ($this->config->get('config_tax_customer') == 'payment') {
                    $this->session->data['payment_address'] = $this->model_account_address->getAddress($this->customer->getAddressId());
                }

                if ($this->config->get('config_tax_customer') == 'shipping') {
                    $this->session->data['shipping_address'] = $this->model_account_address->getAddress($this->customer->getAddressId());
                }

                $this->event->trigger('post.customer.login');

                $this->response->redirect($this->url->link('account/account', '', 'SSL'));
            }
        }

        if ($this->customer->isLogged()) {
            $this->response->redirect($this->url->link('account/account', '', 'SSL'));
        }


        if (!$json) {
        $this->load->language('account/login');

        $this->document->setTitle($this->language->get('heading_title'));

        if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) {
            $json['success'] = "Successfully logging in! ";
            unset($this->session->data['guest']);

            // Default Shipping Address
            $this->load->model('account/address');

            if ($this->config->get('config_tax_customer') == 'payment') {
                $this->session->data['payment_address'] = $this->model_account_address->getAddress($this->customer->getAddressId());
            }

            if ($this->config->get('config_tax_customer') == 'shipping') {
                $this->session->data['shipping_address'] = $this->model_account_address->getAddress($this->customer->getAddressId());
            }

            // Add to activity log
            $this->load->model('account/activity');

            $activity_data = array(
                'customer_id' => $this->customer->getId(),
                'name'        => $this->customer->getFirstName() . ' ' . $this->customer->getLastName()
            );

            $this->model_account_activity->addActivity('login', $activity_data);
        }
            else{
                $json['error'] =  $this->language->get('error_login');
            }

        $data['breadcrumbs'] = array();

        $data['breadcrumbs'][] = array(
            'text' => $this->language->get('text_home'),
            'href' => $this->url->link('common/home')
        );

        $data['breadcrumbs'][] = array(
            'text' => $this->language->get('text_account'),
            'href' => $this->url->link('account/account', '', 'SSL')
        );

        $data['breadcrumbs'][] = array(
            'text' => $this->language->get('text_login'),
            'href' => $this->url->link('account/login', '', 'SSL')
        );

        $data['heading_title'] = $this->language->get('heading_title');

        $data['text_new_customer'] = $this->language->get('text_new_customer');
        $data['text_register'] = $this->language->get('text_register');
        $data['text_register_account'] = $this->language->get('text_register_account');
        $data['text_returning_customer'] = $this->language->get('text_returning_customer');
        $data['text_i_am_returning_customer'] = $this->language->get('text_i_am_returning_customer');
        $data['text_forgotten'] = $this->language->get('text_forgotten');

        $data['entry_email'] = $this->language->get('entry_email');
        $data['entry_password'] = $this->language->get('entry_password');

        $data['button_continue'] = $this->language->get('button_continue');
        $data['button_login'] = $this->language->get('button_login');

        if (isset($this->error['warning'])) {
            $data['error_warning'] = $this->error['warning'];
        } else {
            $data['error_warning'] = '';
        }

        $data['action'] = $this->url->link('account/login', '', 'SSL');
        $data['register'] = $this->url->link('account/register', '', 'SSL');
        $data['forgotten'] = $this->url->link('account/forgotten', '', 'SSL');

        if (isset($this->session->data['success'])) {
            $data['success'] = $this->session->data['success'];

            unset($this->session->data['success']);
        } else {
            $data['success'] = '';
        }

        if (isset($this->request->post['email'])) {
            $data['email'] = $this->request->post['email'];
        } else {
            $data['email'] = '';
        }

        if (isset($this->request->post['password'])) {
            $data['password'] = $this->request->post['password'];
        } else {
            $data['password'] = '';
        }
        } else {
            $json['error'] =  $this->language->get('error_login');
        }


        $this->response->addHeader('Content-Type: application/json');
        $this->response->setOutput(json_encode($json));
    }


    protected function validate() {
        $this->event->trigger('pre.customer.login');

        // Check how many login attempts have been made.
        $login_info = $this->model_account_customer->getLoginAttempts($this->request->post['email']);

        if ($login_info && ($login_info['total'] >= $this->config->get('config_login_attempts')) && strtotime('-1 hour') < strtotime($login_info['date_modified'])) {
            $this->error['warning'] = $this->language->get('error_attempts');
        }

        // Check if customer has been approved.
        $customer_info = $this->model_account_customer->getCustomerByEmail($this->request->post['email']);

        if ($customer_info && !$customer_info['approved']) {
            $this->error['warning'] = $this->language->get('error_approved');
        }

        if (!$this->error) {
            if (!$this->customer->login($this->request->post['email'], $this->request->post['password'])) {
                $this->error['warning'] = $this->language->get('error_login');

                $this->model_account_customer->addLoginAttempt($this->request->post['email']);
            } else {
                $this->model_account_customer->deleteLoginAttempts($this->request->post['email']);

                $this->event->trigger('post.customer.login');
            }
        }

        return !$this->error;
    }
}
&#13;
&#13;
&#13;

上面是表示层,现在让我们创建逻辑层,转到 shop / catalog / controller / account 并创建 loginajax.php 并粘贴以下代码:

{"data":[{"userid":657,"name":"Eliina","username":"Admin","aim_name":" Eliina ","aim_title":"Administrator","password":"eli456456","role":1,"rolename":"Client Ain","clientno":"540","id":8,"client_name":"Eliina","defaulturl":"clientsettings.htm","attempts":0,"aimaccess":1}]}

这会对你有帮助。

Download files and folders for above codes

希望它也能帮到你

答案 1 :(得分:0)

如果您只想要登录页面,那么这里是技巧,在根文件夹中创建index.php或index.html然后粘贴以下代码并使用您的网址更改代码中的URL_WITH_SHOP,其中包含&#34; {{ 3}}&#34; :

&#13;
&#13;
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
<div class="container">
    <div class="row">
        <div id="content" class="col-sm-12 ">
            <div class="row ">
                <div class="col-sm-6" style="margin: 0px auto; float: none;">
                    <div class="well">
                        <h2>Returning Customer</h2>
                        <p><strong>I am a returning customer</strong></p>
                        <form action="URL_WITH_SHOP/index.php?route=account/login" method="post" enctype="multipart/form-data">
                            <div class="form-group">
                                <label class="control-label" for="input-email">E-Mail Address</label>
                                <input type="text" name="email" value="" placeholder="E-Mail Address" id="input-email" class="form-control" />
                            </div>
                            <div class="form-group">
                                <label class="control-label" for="input-password">Password</label>
                                <input type="password" name="password" value="" placeholder="Password" id="input-password" class="form-control" />
                                </div>
                            <input type="submit" value="Login" class="btn btn-primary" />
                        </form>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
&#13;
&#13;
&#13;

问题是如果客户输入错误的用户名和密码,那么它会重定向到实际的登录页面。