Сейчас как раз этим сам и занимаюсь..скорее всего геморный путь избрал, но тем не менее работает.
вывел с помошью модуля Content templates ( предварительно посмотрев на структуру БД ) моя структура бд у меня в атаче
фотки выводились у меня в колонке delta и машинное имя поля content_field_fotogallery.
тоесть в Content templates выбираем нужный тип материала и вбиваем этот запрос
<?php
$result = db_result (db_query('SELECT COUNT(delta) FROM (content_field_fotogallery) WHERE nid='.$node->nid.''));
echo $result;
?>
А если вьюха самая обычная - название ноды и количество фоток в поле foto каждой ноды, то код запроса будет вроде такой же, только вместо
SELECT COUNT(delta)
на странице редактирования представления. Там в столбике Basic settings (основные настройки?) в самом низу есть нужная вам ссылка. А сам файл шаблона лежит в папке модуля views\theme
До сегодняшнего дня мне казалось, что я умею с ним работать
Там у меня написано:
Поле Cодержимое: Фото (field_foto) (ID: field_foto_fid): views-view-field.tpl.php, views-view-field--field-foto-fid.tpl.php, views-view-field--galleryviews.tpl.php, views-view-field--galleryviews--field-foto-fid.tpl.php, views-view-field--page.tpl.php, views-view-field--page--field-foto-fid.tpl.php, views-view-field--galleryviews--page.tpl.php, views-view-field--galleryviews--page--field-foto-fid.tpl.php
Я так понимаю надо создать файл
field-foto-fid.tpl.php (или?)
views-view-field--galleryviews--field-foto-fid.tpl.php
и в нем написать... Э-э-э... А что в нем написать?
В node.tpl.php:
<?php if($node->type == 'rybalka'): ?>
Фото о рыбалке ( <?php print count($node->foto); ?> фото )
<?php endif; ?>
Можно использовать не общий шаблон node.tpl.php, а создать свой node-rybalka.tpl.php
Views тут не нужен - поле уже загружено и доступно - зачем ещё раз опрашивать БД?
Спасибо aleks_84!
Да, действительно. Так оно и есть.
Поставил там 0 - и оно мне подсчитало.
Правда при этом во вьюхе выводятся все картинки из ноды. А как сделать чтобы выводилась только первая? При этом чтобы их количество все равно подсчитывалось.
Правда при этом во вьюхе выводятся все картинки из ноды. А как сделать чтобы выводилась только первая? При этом чтобы их количество все равно подсчитывалось.
навскидку:
чтобы отображалась 1-я из всех - в поле картинок в группировке выбрать: показывать 1 начиная с 0.
+ дописать запрос на получение кол-ва картинок.
Комментарии
А какое машинное имя у этого поля?
leovka, ну не один ли хрен? Ну пусть машинное имя будет foto.
aleks_84, это куда? В tpl.php файлы темы возле вывода терминов?
А если мне нужно во вьхе вывести названия статей и фото в них:
Фото о рыбалке ( 12 фото )
Сейчас как раз этим сам и занимаюсь..скорее всего геморный путь избрал, но тем не менее работает.
вывел с помошью модуля Content templates ( предварительно посмотрев на структуру БД ) моя структура бд у меня в атаче
фотки выводились у меня в колонке delta и машинное имя поля content_field_fotogallery.
тоесть в Content templates выбираем нужный тип материала и вбиваем этот запрос
<?php
$result = db_result (db_query('SELECT COUNT(delta) FROM (content_field_fotogallery) WHERE nid='.$node->nid.''));
echo $result;
?>
иии..усе профит
обычно в node.tpl.php, ну или куда вам там нужно. Во вьюхе думаю в шаблон вывода поля. Код для вьюхи не скажу, ни разу не требовалось.
А если вьюха самая обычная - название ноды и количество фоток в поле foto каждой ноды, то код запроса будет вроде такой же, только вместо
SELECT COUNT(delta)
Надо
SELECT COUNT(мое поле)
зачем делать отдельный запрос, когда можно использовать данные, которые выгребает вьюха?
Это как? Во вьюхе есть такое?
ну блин, если выбрать это поле для вывода вьюхой - есть конечно.
Плюсую. Где есть массив с выводимыми данными вызовите count()
В ноде вывести получилось. Во вьюхе чет не понял
Где оно там есть? Вывожу Поле: Содержимое Фото там можно формат фото задать. А как количество?
а количество нужно смотреть в шаблоне вывода поля(его подсмотреть можно открыв раздел Theme (тема, или как оно там переведено у них)
Вот не понимаю: а где смотреть этот шаблон вывода? На сайте или в теме оформления?
на странице редактирования представления. Там в столбике Basic settings (основные настройки?) в самом низу есть нужная вам ссылка. А сам файл шаблона лежит в папке модуля views\theme
зы: НАСТОЯТЕЛЬНО рекомендую разобраться в модуле views.
До сегодняшнего дня мне казалось, что я умею с ним работать
Там у меня написано:
Поле Cодержимое: Фото (field_foto) (ID: field_foto_fid): views-view-field.tpl.php, views-view-field--field-foto-fid.tpl.php, views-view-field--galleryviews.tpl.php, views-view-field--galleryviews--field-foto-fid.tpl.php, views-view-field--page.tpl.php, views-view-field--page--field-foto-fid.tpl.php, views-view-field--galleryviews--page.tpl.php, views-view-field--galleryviews--page--field-foto-fid.tpl.php
Я так понимаю надо создать файл
field-foto-fid.tpl.php (или?)
views-view-field--galleryviews--field-foto-fid.tpl.php
и в нем написать... Э-э-э... А что в нем написать?
Да, нужно создать файл views-view-field--galleryviews--field-foto-fid.tpl.php а в него написать что-то вроде
<?php print "Count FOTO:".substr_count($output,"<img"); ?>
<?php print ($output); ?>
И не забудь "Пересканировать файлы шаблонов" нажать
<?phpprint "Count FOTO:".substr_count($output,"<img"); ?>
Вроде бы даже если я прямо такой файл и создам у меня что-то должно вывестись. Но ничего дополнителного во вьюхе не выводится.
Вьюху с названием и фото сделал. Шаблон поля посмотрел - вот файлик закинул. Может что-то забыл.
В node.tpl.php:
<?php if($node->type == 'rybalka'): ?>
Фото о рыбалке ( <?php print count($node->foto); ?> фото )
<?php endif; ?>
Можно использовать не общий шаблон node.tpl.php, а создать свой node-rybalka.tpl.php
Views тут не нужен - поле уже загружено и доступно - зачем ещё раз опрашивать БД?
имхо лучше из $row данные брать, а не substr_count.
Dan, то что ты пишешь это я уже сделал, см. выше. Это в ноде. А теперь я во вьюхе пытаюсь.
ну ТС спрашивал как во views сделать, ему и объясняли
Я бы хранил в ноде значение. Для вьюхи это будут либо подзапросы, либо группировки.
Нет я еще не понял.
leovka, спасибо. Действительно надо было нажать "Просканировать файлы шаблонов"
Теперь выводится, но только не то что надо.
<?phpprint "Count FOTO:".substr_count($output,"<img");?>
После этого выводится Count FOTO: 1
1 - в не зависимости от того сколько фоток в поле каждой ноды
группировка у поля включена?
сейчас посмотрел что творит views 2.12 при таком выводе... Это пиздец.
по моему более "лёгкий" вариант.
Спасибо aleks_84!
Да, действительно. Так оно и есть.
Поставил там 0 - и оно мне подсчитало.
Правда при этом во вьюхе выводятся все картинки из ноды. А как сделать чтобы выводилась только первая? При этом чтобы их количество все равно подсчитывалось.
ток писать надо так:
и пошевелить ушами куда лучше это всунуть...
навскидку:
чтобы отображалась 1-я из всех - в поле картинок в группировке выбрать: показывать 1 начиная с 0.
+ дописать запрос на получение кол-ва картинок.
Хорошо, куда это лучше всунуть?
Я так понимаю это уже не в файл?
в файл таки...
Из $row не взять. картинки в данном случае не в массиве, а одной строкой в $output
В настройках поля фотографий есть пункт "Группировать множественные значения"
Ставишь в поле "Показать 1 значение(я)"
да, ошибся.
Всем привет!
А можно сделать в типе материала поле, которое подсчитывало бы количесво фоток в другом поле?
Ну а потом я это значение уже буду выводить куда мне надо.
http://drupal.org/project/computed_field
Поставил модуль. Добавил computed поле в материал.
Вписал
Computed Code:
$node_field[0]['value'] = sizeof($node->field_foto);
В отображении полей выбрал Computed Value
Не вижу я этого поля в ноде в результате. Может что-то не то делаю...
volocuga, это оно: http://drupal.org/node/879652 ?
Вписал также это все равно не работает
$count2 = 0;
for($i = 0; $i < $count1; $i++) {
$fid = $node->field_foto[$i]['fid'];
$n = is_null($fid) || $fid == 0;
if (!$n) {
$count2++;
}
}
$node_field[0]['value'] = $count2;
Ну перво наперво, нужно сначала загрузить сам объект нужной ноды (переменная $node), а то сейчас у тебя она просто в воздухе болтается
Да, вроде оно. И там в примере node_load() нет, значит мой камент выше ошибочен
Как это загрузить?
count(node_load($node->field_foto)); ?
Не, node_load(ID_ноды);
То есть например
node_load(arg(1));
???
volocuga, ну не понимаю. Может потому что с этим модулем раньше не приходилось работать. Что там написать надо?
Код оставил
$count2 = 0;
for($i = 0; $i < $count1; $i++) {
$fid = $node->field_foto[$i]['fid'];
$n = is_null($fid) || $fid == 0;
if (!$n) {
$count2++;
}
}
$node_field[0]['value'] = $count2;
Тупой код конечно же проще попытаюсь.
Подсчитывает.
Но: результат показывается только после того, как отредактируешь нужную ноду.