Просмотр, чтобы отображать точки пользователя и причину точек

Используя модуль пользовательских точек, пользователям моего сайта успешно присваиваются очки для любого контента, который они публикуют, или изменений, которые они делают, и так далее. Теперь, когда пользователь входит в систему, я хочу, чтобы пользователь мог видеть его точки и причину назначения точек. Выход вида будет примерно таким:

  • 1.Blog Pic A, Заголовок блога A, Блог TeaserA (и затем) Точки

    2.Blog Pic B, заголовок блога B, блог TeaserB (и затем) Точки

Здесь пользователь получает баллы за загрузку своего блога. Как я могу создать представление, показывающее вышеприведенный результат. Я попытался, но не был успешным. Я создал представление пользовательских точек с контекстным фильтром Пользовательские транзакции: пользователь и поля как транзакции пользователей: точки (точки) . Однако я не получаю никаких полей как контент: тело и так далее. Я понимаю, что мне нужно добавить отношения, но я немного смущен. Я попытался добавить отношения Userpoints Transactions: Entity ID , но я получаю сообщение об ошибке: SQLSTATE [42S22]: столбец не найден: 1054 Неизвестный столбец userpoints_txn.nid в разделе on on . Что это. Как я могу создать представление для показанного выше примера. Это простое решение. Что мне не хватает?

Изменить: я пробовал разные виды, но никто не показывает, что мне нужно. Был бы признателен, если кто-то может экспортировать представление, или, по крайней мере, и предпочтительнее, направлять меня, чтобы я также понимал, где я иду не так.

6 голосов | спросил why 25 FebruaryEurope/MoscowbMon, 25 Feb 2013 19:58:38 +0400000000pmMon, 25 Feb 2013 19:58:38 +040013 2013, 19:58:38

1 ответ


5

У меня есть пользовательские точки, активные на одном из моих сайтов, и отображаемый вами дисплей интегрирован с модулем.

Посмотрите на учетную запись пользователя, там должна быть вкладка (точки) (/user/$uid/points).

Чтобы создать свою собственную страницу, введите требуемую связь с таблицей пользователей, а затем контекстный фильтр, используя эти отношения для пользователя: uid. Когда появится экран конфигурации, в разделе «Когда фильтр не находится в URL», укажите значение по умолчанию> UID от текущего пользователя. Это должно заставить ваше представление работать.

Примечание . Сначала необходимо создать связь для контекстного фильтра.


Изменить : шаг за шагом.

  1. Добавить новое представление: (/admin/structure/views/add)

    На экране «Добавить вид» введите имя представления и выберите «Показать транзакции пользовательских точек» типа «все». Я выбрал формат таблицы для отображения полей. Остальное регулируется позже.

    Нажмите «Continue and Edit», чтобы перейти к экрану редактирования.

  2. Добавить связь для «Userpoints Transactions: User». Установите флажок «Обязательный» и «Применить все дисплеи». Это приведет к представлению таблицы пользователей.

  3. Создайте контекстный фильтр для пользователей: uid, используя только что созданные отношения. Настройте значение по умолчанию, указанное как «UID от зарегистрированного пользователя», и «Применить».

  4. Добавьте все поля, которые вы хотите, и отформатируйте представление.

Это экспорт:

$view = new view();
$view->name = 'users_points';
$view->description = '';
$view->tag = 'default';
$view->base_table = 'userpoints_txn';
$view->human_name = 'Users Points';
$view->core = 7;
$view->api_version = '3.0';
$view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */

/* Display: Master */
$handler = $view->new_display('default', 'Master', 'default');
$handler->display->display_options['title'] = 'Users Points';
$handler->display->display_options['use_more_always'] = FALSE;
$handler->display->display_options['access']['type'] = 'none';
$handler->display->display_options['cache']['type'] = 'none';
$handler->display->display_options['query']['type'] = 'views_query';
$handler->display->display_options['exposed_form']['type'] = 'basic';
$handler->display->display_options['pager']['type'] = 'full';
$handler->display->display_options['pager']['options']['items_per_page'] = '10';
$handler->display->display_options['style_plugin'] = 'table';
/* Relationship: Userpoints Transactions: User */
$handler->display->display_options['relationships']['uid']['id'] = 'uid';
$handler->display->display_options['relationships']['uid']['table'] = 'userpoints_txn';
$handler->display->display_options['relationships']['uid']['field'] = 'uid';
$handler->display->display_options['relationships']['uid']['required'] = TRUE;
/* Field: User: Name */
$handler->display->display_options['fields']['name']['id'] = 'name';
$handler->display->display_options['fields']['name']['table'] = 'users';
$handler->display->display_options['fields']['name']['field'] = 'name';
$handler->display->display_options['fields']['name']['relationship'] = 'uid';
/* Field: Userpoints Transactions: Description */
$handler->display->display_options['fields']['description']['id'] = 'description';
$handler->display->display_options['fields']['description']['table'] = 'userpoints_txn';
$handler->display->display_options['fields']['description']['field'] = 'description';
/* Field: Userpoints Transactions: Points */
$handler->display->display_options['fields']['points']['id'] = 'points';
$handler->display->display_options['fields']['points']['table'] = 'userpoints_txn';
$handler->display->display_options['fields']['points']['field'] = 'points';
/* Contextual filter: User: Uid */
$handler->display->display_options['arguments']['uid']['id'] = 'uid';
$handler->display->display_options['arguments']['uid']['table'] = 'users';
$handler->display->display_options['arguments']['uid']['field'] = 'uid';
$handler->display->display_options['arguments']['uid']['relationship'] = 'uid';
$handler->display->display_options['arguments']['uid']['default_action'] = 'default';
$handler->display->display_options['arguments']['uid']['default_argument_type'] = 'current_user';
$handler->display->display_options['arguments']['uid']['summary']['number_of_records'] = '0';
$handler->display->display_options['arguments']['uid']['summary']['format'] = 'default_summary';
$handler->display->display_options['arguments']['uid']['summary_options']['items_per_page'] = '25';

/* Display: Page */
$handler = $view->new_display('page', 'Page', 'page');
$handler->display->display_options['defaults']['hide_admin_links'] = FALSE;
$handler->display->display_options['path'] = 'users-points';

/* Display: Block */
$handler = $view->new_display('block', 'Block', 'block');
$handler->display->display_options['defaults']['hide_admin_links'] = FALSE;
$handler->display->display_options['defaults']['pager'] = FALSE;
$handler->display->display_options['pager']['type'] = 'some';
$handler->display->display_options['pager']['options']['items_per_page'] = '5';

Второе редактирование :

Описания, показанные на экране, которые вы показали мне, не хранятся в базе данных, а генерируются «на лету», когда запрашивается страница.

Вот как вы завершаете представление.

Сначала установите и активируйте модуль Views PHP .

Во-вторых, перейдите в userpoints.views.inc и измените 'field' => 'nid'; в строке 435 на 'base field' => 'nid';. Затем вставьте следующий код после строки 466:

$data['userpoints_txn']['txn_id'] = array(
      'title' => t('Transaction ID'),
      'help' => t('The transaction ID for the points allocation.'),
      'field' => array(
          'handler' => 'views_handler_field',
      ),
      'filter' => array(
          'handler' => 'views_handler_filter_string',
      ),
      'sort' => array(
          'handler' => 'views_handler_sort',
      ),
  );

Это сделает идентификатор транзакции доступным для просмотра. (Необходимые изменения включены в файл исправления, связанный в конце этого ответа.)

Сохраните свой вид в его текущей форме, чтобы очистить свой временный кеш, затем перейдите к /admin/config/development/performance и очистите свои кеши.

Вернитесь к своему представлению и добавьте в поле «Пользовательские транзакции: идентификатор транзакции» и установите его как исключенное из экрана.

Затем добавьте другое поле. На экране «Добавить поле» выберите фильтр «Глобальный» и выберите «Глобальный: PHP».

Чтобы настроить поле, создайте метку по вашему выбору, а в поле «Вывод» добавьте следующее:

<?php
$transaction = userpoints_transaction_load($row->txn_id);
$value = userpoints_create_description($transaction);
echo $value;
?>

Примечание . Не помещайте ничего в поле «Значение»! Он используется для другой цели.

Сохраните свой вид, и вы хорошо пойдете.

BTW . Изменения, необходимые в userpoints.views.inc, находятся в патче, прикрепленном к проблеме Особенности вопроса , которую я открыл на DO

ответил Triskelion 1 MaramFri, 01 Mar 2013 01:21:16 +04002013-03-01T01:21:16+04:0001 2013, 01:21:16

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132