2016-08-22 11 views
3

私はモジュールを作成し、次の名前を付けました:Developer Tools - > Module BuilderCustom_module by ModuleキャンペーンのようにCustom_moduleに "target lists"それを行う方法を見つける 皆さんが皆さんが私のモジュールに "ターゲットリスト"を追加する最良の方法を見つけるのを手助けすることができます。 ありがとう私のカスタムモジュールに "ターゲットリスト"を追加する方法

答えて

0

custom modulecustom sub panelを作成するだけで済みます。 target listProspectListsモジュールです。

カスタムモジュールを作成するには、このリンクに従ってください。

http://shanedowling.com/sugarcrm-7-custom-subpanels

https://developer.sugarcrm.com/2015/05/18/creating-subpanels-with-custom-results-in-sugar-7-5/

1.これは、カスタム/モジュール// YourNewLink.phpに行くべきとこのクラスは、カスタム機能として動作します

新しいリンクのクラスを作成します。 2つのレコード間のリンクを構築します。

<?php 

/** 
* Custom filtered link 
*/ 
class YourNewLink extends Link2 
{ 
    /** 
    * DB 
    * 
    * @var DBManager 
    */ 
    protected $db; 

    public function __construct($linkName, $bean, $linkDef = false) 
    { 
     $this->focus = $bean; 
     $this->name = $linkName; 
     $this->db = DBManagerFactory::getInstance(); 
     if (empty($linkDef)) { 
      $this->def = $bean->field_defs[$linkName]; 
     } else { 
      $this->def = $linkDef; 
     } 
    } 

    /** 
    * Returns false if no relationship was found for this link 
    * 
    * @return bool 
    */ 
    public function loadedSuccesfully() 
    { 
     // this link always loads successfully 
     return true; 
    } 

    /** 
    * @see Link2::getRelatedModuleName() 
    */ 
    public function getRelatedModuleName() 
    { 
     return '<Your_Module>'; 
    } 

    /** 
    * 
    * @see Link2::buildJoinSugarQuery() 
    */ 
    public function buildJoinSugarQuery($sugar_query, $options = array()) 
    { 
     $joinParams = array('joinType' => isset($options['joinType']) ? $options['joinType'] : 'INNER'); 
     $jta = 'active_other_invites'; 
     if (!empty($options['joinTableAlias'])) { 
      $jta = $joinParams['alias'] = $options['joinTableAlias']; 
     } 

     $sugar_query->joinRaw($this->getCustomJoin($options), $joinParams); 
     return $sugar_query->join[$jta]; 
    } 

    /** 
    * Builds main join subpanel 
    * @param string $params 
    * @return string JOIN clause 
    */ 
    protected function getCustomJoin($params = array()) 
    { 
     $bean_id = $this->db->quoted($this->focus->id); 
     $sql = " INNER JOIN("; 
     $sql .= "SELECT id FROM accounts WHERE id={$bean_id}"; // This is essentially a select statement that will return a set of ids that you can match with the existing sugar_query 
     $sql .= ") accounts_result ON accounts_result.id = sugar_query_table.id"; 
     return $sql; 
    } 

2.リンクフィールドに新しいvardefエントリを追加します。

この例では、連絡先モジュールでカスタムリンクを作成します。したがって、このコードはに行くカスタム/拡張/モジュール/連絡先/内線/ Vardefs/your_field_name.php

<?php 
$dictionary["Contact"]["fields"]["your_field_name"] = array(
    'name' => 'active_other_invites', 
    'type' => 'link', 
    'link_file' => 'custom/modules/<YourModule>/YourNewLink.php', 
    'link_class' => 'YourNewLink', 
    'source' => 'non-db', 
    'vname' => 'LBL_NEW_LINK', 
    'module' => '<YourModule>', 
    'link_type' => 'many', 
    'relationship' => '', 
); 

3.これは、/ カスタムの下に行くサブパネルとして

を新しいリンクを追加します。拡張/モジュール/連絡先/内線/クライアント/ベース/レイアウト/サブパネル/ your_subpanel_name.php

<?php 
$viewdefs['Contacts']['base']['layout']['subpanels']['components'][] = array (
    'layout' => 'subpanel', 
    'label' => 'LBL_NEW_LINK', 
    'context' => 
    array (
    'link' => 'your_field_name', 
), 
); 

4.広告D私がしようとしたラベル

下では、カスタム/拡張/モジュール/連絡先/内線/言語/ en_us.new_link.php

<?php 
$mod_strings['LBL_ACTIVE_OTHER_INVITES'] = 'Your New Link'; 

5.クイック修復と

+0

を再構築するにあなたが上に導く流れ、それは動作していないようだ、 私はサンプルソースコードを与えることができます あなたが最初のリンクに従うならば、 –

+0

あなたのモジュールを追加する必要がありますr私。 –

+0

ここに私のコード https://app.box.com/s/8d2so4q96js6c3zto0ln6om5qcuztpyn 私のモジュールに「ターゲットリスト」を追加したい(キャンペーンのように) –

関連する問題