prodigious/symfony-multisite-bundle

此组件允许您在symfony应用程序中管理多站点。

安装: 490

依赖项: 0

建议者: 0

安全: 0

星标: 5

关注者: 0

分支: 0

开放问题: 0

类型:symfony-bundle

1.0.8 2018-10-10 13:54 UTC

This package is auto-updated.

Last update: 2024-09-11 03:17:29 UTC


README

该仓库包含用于Symfony 3的symfony多站点组件。此组件允许您在symfony应用程序中管理多站点。

  • 每个站点可以有自己的数据库连接或使用相同的数据库。
  • 每个站点可以有不同的本地化设置
  • 每个站点可以有自己的应用程序文件夹和公共文件夹
  • 每个站点可以有自己的robots.txt文件

公共文件夹结构

每个站点首先在其自己的文件夹中查找资产

例如(demo_2)

站点demo_2将首先在以下位置查找图像chat.png

/web/public/demo_2/imgs/chat.png

如果此图像不存在,将使用文件/web/imgs/chat.png

robots.txt结构

每个站点可以在/robots/hostname.txt文件夹中拥有自己的robots.txt文件

/robots/hostname.txt

如果hostname.txt不存在,将使用文件/web/robots.txt。

安装


composer require prodigious/symfony-multisite-bundle

设置

    $bundles = array(
        ...
        new Prodigious\MultisiteBundle\MultisiteBundle(),
        ...
    );

然后,将这些行添加到您的symfony项目的composer.json中

    "scripts": {
        "post-install-cmd": [
            ...
            "Prodigious\\MultisiteBundle\\Composer\\ScriptHandler::installBundle"
        ],
        "post-update-cmd": [
            ...
            "Prodigious\\MultisiteBundle\\Composer\\ScriptHandler::installBundle"
        ]
    }

之后,使用以下命令初始化组件


composer install

安装后,组件将在您的项目中创建一些文件

  • sites/
  • app/MultisiteKernel.php

您需要修改一些文件

将以下行添加到web文件夹中的.htaccess中
<IfModule mod_rewrite.c>
    RewriteEngine On
    
    # Multisite conditions
    RewriteCond %{DOCUMENT_ROOT}/robots/%{HTTP_HOST}.txt -f
    RewriteRule ^robots\.txt$ robots/%{HTTP_HOST}.txt [L]

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^public/([^/]+)(?:/(.*)|$) /$2 [QSA,R,L]
    # End
</IfModule>
修改web文件夹中的app.php和app_dev.php

替换

require __DIR__.'/../vendor/autoload.php

require __DIR__.'/../sites/autoload/sites.php';

并且替换

    // app.php
    $kernel = new AppKernel('prod', false);
    // app_dev.php
    $kernel = new AppKernel('dev', true);

    // app.php
    $kernel = new MultisiteKernel('prod', false);
    $kernel->setSite($site);
    // app_dev.php
    $kernel = new MultisiteKernel('dev', true);
    $kernel->setSite($site);

如下所示

// require __DIR__.'/../vendor/autoload.php';
require __DIR__.'/../sites/autoload/sites.php';

if (PHP_VERSION_ID < 70000) {
    include_once __DIR__.'/../var/bootstrap.php.cache';
}

$kernel = new MultisiteKernel('prod', false);
$kernel->setSite($site);
if (PHP_VERSION_ID < 70000) {
    $kernel->loadClassCache();
}

说明

有一系列命令来管理您的站点。

创建新站点


php bin/console site:create

screenshot

获取站点列表


php bin/console site:list

screenshot

禁用站点


php bin/console site:disable --name=demo_1

screenshot

启用站点


php bin/console site:enable --name=demo_1

screenshot

删除站点


php bin/console site:delete --name=demo_1

screenshot

同步配置


php bin/console site:config:sync

属性


$currentSite = $request->attributes->get('site'); // 'app' by default


$currentInstance = $request->attributes->get('instance');


$currentLocal = $request->getLocale();

附加信息

作者:Nan GUO

公司:Prodigious