为每个客户定制

时间:2015-11-06 23:45:33

标签: drupal module themes customization

我们为各种客户提供SaaS产品。每个客户在虚拟机中都有自己的安装。我们的用户指南已使用Word / PDF。客户已能够修改用户指南,以在用户指南中添加品牌(徽标,产品名称)。

现在我们要在Drupal中设置用户指南。将用户指南的内容移动到Drupal很容易。挑战在于为每个客户定制。我们不想在每台虚拟机中安装Drupal并复制内容。

当有人点击"帮助"在我们的产品中,他们可以访问Drupal,我们可以为'客户端'版本号'添加参数。等到URL。 Drupal可以处理这个以自定义设置。我们还可以使用客户端信息为每个客户端进行唯一登录。

我可以通过更改页面模板中的$徽标来修改徽标。但是,它会为所有客户全局更改徽标。最新点击Drupal设置徽标。

我不知道如何/在哪里可以设置逻辑来根据登录自定义逻辑。因此,客户端A看到的徽标与客户端B同时访问同一个Drupal安装的徽标不同。此外,我们希望能够以类似的方式自定义产品名称。

我不期待任何程序代码(但我不介意一个模块)。关于如何开发它的一些想法会很棒。

这是页面模板中的代码。但是,每次新客户转到指南时,徽标都会更改。是否有类似会话或logoArray [客户端]功能,即使许多客户端同时访问该页面,我可以使用该功能为每个客户端制作唯一的徽标?

 <?php 
    $arglist = drupal_get_query_parameters();

    if ( count( $arglist ) > 0 ):
        $theme_name = 'bootstrap_ivs7';  
        $var_name = 'theme_' . $theme_name . '_settings';

        $settings = variable_get($var_name, array());

        if ( $arglist['logoflag'] == 'logoclient1' ): ?>
            <?php if ($logo): 
                $logo='http://localhost/ivs7/sites/default/files/logo_client1.png';
                $settings['logo_path'] = $logo;
                variable_set($var_name, $settings);
            <?php endif; 
        else: 
            if ( $arglist['logoflag'] == 'logoclient2' ):
                $logo='http://localhost/ivs7/sites/default/files/logo_client2.png';
                $settings['logo_path'] = $logo;
                variable_set($var_name, $settings);
            <?php 
            else:  
                $logo = 'http://localhost/ivs7/sites/all/images/logo_default.png'; ?>
                $settings['logo_path'] = $logo;
                variable_set($var_name, $settings);
            <?php endif; ?>
        <?php endif; ?>
    <?php endif; ?>
    <?php
        <a class="logo navbar-btn pull-left" href="<?php print $front_page; ?>" title="<?php print t('Home'); ?>">
            <img src="<?php print $logo; ?>" alt="<?php print t('Home'); ?>" />
        </a>
    ?>

1 个答案:

答案 0 :(得分:0)

从自定义模块或主题中,您可以实现hook_preprocess_HOOK()来更改任何模板的变量。可能每个客户端要自定义的变量都在page.tpl.php模板中使用,因此它是XYZ_preprocess_page()(其中XYZ是您的主题或模块的名称)。