Вы здесь

Можно комментарии знающих людей function druio_ds_fields_question_answer(array $field) ?

-3

хочу понять как делать
я ни разу не имел дела с DS. хочу понять что делает эта функция?
- добавляет новое поле,
- изменяет работу существующего поля,
- делает все как надо,
- ни один из вариантов, РТФМ.

https://github.com/Niklan/Dru.io/blob/master/sites/all/modules/custom/dr...

подскажите плииз, как правильно вставить такую форму ответа? и вообще как дс сделать?
куда жать?

Версия Drupal: 
7.x
Категория: 
Field API
Связанные проекты: 
Display Suite
Вопрос задан 19.08.2015 - 01:31

я написал в своем модуле answer_helpers.module три функции копированные с друио
но никакого эффекта, поле Question Answers - с формой добавления ответа не появилось

на друио это поле есть:

а у меня нету

код, и картинка таблицы бд связи ответа и вопроса

/**
 * Is user answered to this question before.
 *
 * @param int $qid
 * @param int $uid
 *
 * @return bool
 */
function answers_helpers_is_user_answered_to_question($qid, $uid) {
  // Default value.
  $result = FALSE;

  // Get all answers to question.
  $query = db_select('field_data_field_answer_question', 'qr');
  $query->condition('qr.entity_type', 'node');
  $query->condition('qr.bundle', 'answer');
  $query->condition('qr.field_answer_question_nid', $qid);
  $query->fields('qr', array('entity_id'));
  $answers = $query->execute()->fetchAllAssoc('entity_id');

  // If answers exists.
  if (!empty($answers)) {
    // Prepare answer id's.
    $aids = array_keys($answers);
    // Check whether the user is the author of at least one of the answers.
    $query = db_select('node', 'n');
    $query->fields('n');
    $query->condition('n.uid', $uid);
    $query->condition('n.nid', $aids, 'IN');
    $query->countQuery();
    $result = $query->execute()->fetchField();
  }

  return (bool) $result;
}

/**
 * Implements hook_ds_fields_info().
 */
function answers_helpers_ds_fields_info($entity_type) {
  $fields = array();

  // Entity: Node.
  if ($entity_type == 'node') {
    $fields['question_answers'] = array(
      'title' => 'Question answers',
      'ui_limit' => array('question|full'),
      'field_type' => DS_FIELD_TYPE_FUNCTION,
      'function' => 'answers_helpers_question_answer',
    );

    return array($entity_type => $fields);
  }

  return;
}

/**
 * Answers to question + form.
 *
 * @param array $field
 *
 * @return mixed
 */
function answers_helpers_question_answer(array $field) {
  global $user;
  $entity = $field['entity'];
  $html = '';

  if (arg(0) != 'comment') {
    $html .= '<h2 class="@answers_title_class">@answers_title</h2>';
    $html .= views_embed_view('answers', 'answers');

    // Check whether the current user replied to this question.
    if (answers_helpers_is_user_answered_to_question($entity->nid, $user->uid)) {
      $html .= '@user_responded';
    }
    else {
      // Load Answer form;
      if (drupal_valid_path('node/add/answer')) {
        module_load_include('inc', 'node', 'node.pages');
        $form = node_add('answer');
        if ($user->uid == $entity->uid) {
          $html .= '<div class="author-answer-form-info">!author_answer</div>';
        }
        $html .= '<button type="button" id="make-reply" class="button--submit">'. t('Post Your Answer'). '</button>';
        $html .= drupal_render($form);
      }
    }

    $data = array(
      '@answers_title_class' => 'answers__title',
      '@answers_title' => t('Answers'),
      '@user_responded' => t('You have already answered this question. Edit your answer.'),
      '!author_answer' => t('Please, post only answer if you\'ve found.')
    );
  }

  $result = !empty($html) ? format_string($html, $data) : '';

  return $result;
}

моя таблица поля связи ответа с вопросом:

Комментарий оставлен 19.08.2015 - 02:37

Ответы