2013-09-27 46 views
1

我正在使用ExpressionEngine为具有产品的多语言网站。我使用Transcribe来控制多语言。产品在不同语言中具有相同的标题,这给我在关系领域选择正确的产品时带来一些问题。将语言添加到ExpressionEngine中的关系下拉列表中

本网站的构建者没有在后端使用title作为唯一名称,而是在前端的任何位置都显示它。

下拉例如:

  • 产品A
  • 产品A
  • 产品A
  • 产品B
  • 产品B
  • 产品B
  • 产物C
  • 产物C
  • 产品C

我发现下拉列表信息在/system/expressionengine/fieldtypes/rel/ft.rel.php从线填补59

/** 
* Display Relationship Field 
* 
* @access public 
* @param string 
* @return string 
*/ 

function display_field($data) 
{ 
    if ($this->settings['field_related_orderby'] == 'date') 
    { 
     $this->settings['field_related_orderby'] = 'entry_date'; 
    } 

    $this->EE->db->select('entry_id, title'); 
    $this->EE->db->where('channel_id', $this->settings['field_related_id']); 
    $this->EE->db->order_by($this->settings['field_related_orderby'], $this->settings['field_related_sort']); 

    if ($this->settings['field_related_max'] > 0) 
    { 
     $this->EE->db->limit($this->settings['field_related_max']); 
    } 

    $relquery = $this->EE->db->get('channel_titles'); 

    if ($relquery->num_rows() == 0) 
    { 
     return $this->EE->lang->line('no_related_entries'); 
    } 
    else 
    { 
     if (! isset($_POST[$this->field_name])) 
     { 
      $this->EE->db->select('rel_child_id'); 
      $relentry = $this->EE->db->get_where('relationships', array('rel_id' => $data)); 

      if ($relentry->num_rows() == 1) 
      { 
       $data = $relentry->row('rel_child_id') ; 
      } 
     } 

     $field_options[''] = '--'; 

     foreach ($relquery->result_array() as $relrow) 
     { 
      $field_options[$relrow['entry_id']] = $relrow['title']; 
     } 
     return form_dropdown($this->field_name, $field_options, $data, 'id="field_id_'.$this->field_id.'"'); 
    } 
} 

我怎样才能在行98 ($field_options[$relrow['entry_id']] = $relrow['title'];)添加语言名称下拉?

+0

如果您的问题没有得到关注,你觉得它需要在这里我建议你将它张贴到http://expressionengine.stackexcha nge.com/ – AllInOne

+0

我不熟悉Transcribe的数据结构。它是否将列添加到channel_titles表中?如果是这样,那么这些列的名称是什么,以及您想要添加到下拉列表中的哪一个? – AllInOne

+0

转录添加了多个表,其中数据彼此链接。我会尝试从EE的stackexchange并尝试与Transcribe团队联系。 – Pinquin

回答

0

转录在Expression Engine 2.5中没有发现任何可能性。 我创建了一个解决方法,并在下拉菜单中添加了url_title。这不是最好的解决方案,但在这种情况下,它是可行的。

$this->EE->db->select('entry_id, title'); 

变成

$this->EE->db->select('entry_id, title, url_title'); 

而改变

$field_options[$relrow['entry_id']] = $relrow['title']; 

$field_options[$relrow['entry_id']] = $relrow['title'] . " - " . $relrow['url_title']; 
相关问题