2015-11-06 80 views
0

我們爲各種客戶提供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> 
    ?> 

回答

0

從自定義模塊或主題中,您可以實現hook_preprocess_HOOK()來更改任何模板的變量。可能您要爲每個客戶端自定義的變量都用於page.tpl.php模板中,因此這將是XYZ_preprocess_page()(其中XYZ是您的主題或模塊的名稱)。

相關問題