Подсчет количества комментариев первого уровня

Главные вкладки

Аватар пользователя Danunafik Danunafik 15 марта в 2:24

Здравствуйте.

Вот в .theme есть код который задает переменную с количеством всех комментариев к ноде:

function sitetheme_preprocess_field__comment(&$variables) {
// Add a comment_count.
$variables['comment_count'] = count(array_filter($variables['comments'], 'is_numeric', ARRAY_FILTER_USE_KEY));
}

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

Комментарии

Аватар пользователя VasyOK VasyOK 15 марта в 12:15

Думаю через views можно. Типа вывести коментарии, отфильтровать те, что без дочерних и подсчитать через агрегацию. Точных инструкций не дам. Нет у меня такого.

Аватар пользователя Danunafik Danunafik 15 марта в 15:15

Через views я пробовал, можно. Я просто думал может есть что попроще. Еще хотел кнопку вверх в товаре вставить с количеством в commerce-product--full.html.twig. А тут так не получится.

Аватар пользователя Danunafik Danunafik 16 марта в 19:19

Забыл что есть модуль twig tweak, тем более уже установлен на сайт. Он позволяет вывести любой views в ...html.twig:

{{ drupal_view('view_name', 'block_1') }}

Вот так и сделаю тогда.

Аватар пользователя Danunafik Danunafik 16 марта в 22:17

Даже лучше вышло, добавил к отзывам (комментариям) поле списка выбора из пяти цифр 1, 2, 3, 4, 5.
Теперь можно оценку выбирать при добавлении отзыва. А во вьюс (включив агрегацию) кроме количества отзывов вывел среднее значение у этого нового поля. Там же и перезаписал поле чтобы в зависимости от оценки выводился либо красный, либо оранжевый, либо зеленый блок с оценкой.
До это искал подобный модуль, навозившись сутками с fivestar и им подобным, ничего путного не получалось. А тут так всё просто оказалось.

Аватар пользователя Danunafik Danunafik 16 марта в 23:34

Еще не было возможности показать количество отзывов и среднюю оценку в тизере товара, так как нет такого функционала по выводу комментариев в тизере. Помог модуль EVA. К тому же view, который подсчитывает количество отзывов первого уровня и среднюю оценку, добавил вкладку EVA, выбрал тип сущности: Product.

В самом commerce-product--teaser.html.twig вывел уже поле EVA - {{ elements.reviews_stats_entity_view_1 }}
( выводится по шаблону: {{ elements.имя представления_машинное имя блока eva }} )

Вопрос исперчен, сам с собой поговорил, все довольны.