Ostrova

Ostrova

+3
Репутация
37
Рейтинг
#1 Как сделать аналог меню действий только с кнопкой "Добавить"? 17 ноября 2024 в 12:09

Вы и правда усложняете) Создайте в «пользовательских страницах» HTML виджет, добавьте в него кнопку:

  1. <div class="dropdown">
  2. <button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton1" data-bs-toggle="dropdown" aria-expanded="false">
  3. Добавить
  4. </button>
  5. <ul class="dropdown-menu" aria-labelledby="dropdownMenuButton1">
  6. <li><a class="dropdown-item" href="имясайта.ru/news/add">Добавить новость</a></li>
  7. <li><a class="dropdown-item" href="href="имясайта.ru/posts/add">Добавить публикацию</a></li>
  8. <li><a class="dropdown-item" href="#">Что-то еще здесь</a></li>
  9. </ul>
  10. </div>

И масками пропишите на каких страницах выводить. Хотите — запихните все добавления в одну кнопку, хотите — создайте для каждого ТК отдельную и пропишите маску только на этот тип контента. 

#2 Вывод объявлений в виджете по полю 4 ноября 2024 в 13:46

Ниче не понято,

Happy

ТОгда еще раз подробнее..

Есть сттраница города А и страница города Б.

Хочу  на разные страницы разных городов выводить объявления соответствующих городов.

Для этого в типе контента «объявления» создал поле «город».

Создал объявление для города А.

Как настроить виджет «Список контента» с выводом каждому городу своих объявлений по этому полю? 

МОе поле сейчас -  радиокнопки. Не выводит разный контент.

liner

Добрый день. Полагаю, вам нужно создать набор с фильтром по полю регион, а в виджете указать этот набор. В самом наборе можно отключить показа в общем списке наборов. 

#3 Виджет: адреса филиалов (выпадающий список). Есть ли такой? 19 октября 2024 в 23:17

Здравствуйте. Создаете виджет «HTML блок» в нужном вам месте. В содержимое вставляете 

<div class=«dropdown»>
  <button class=«btn btn-secondary dropdown-toggle» type=«button» id=«dropdownMenuButton1» data-bs-toggle=«dropdown» aria-expanded=«false»>
    Список филиалов 
  </button>
  <ul class=«dropdown-menu» aria-labelledby=«dropdownMenuButton1»>
    <li class=«dropdown-item»>Филиал 1</li>

    <li class=«dropdown-item»>Филиал 2</li>

    <li class=«dropdown-item»>филиал 3</li>
  </ul>
</div>

Цвет кнопки меняется классом btn-secondary

(Можно btn-light btn-info и т.д.)

#4 "Условия выборки" в поле список 15 октября 2024 в 10:37

В коробке нет зависимых списков, кроме показа/скрытия всего поля в зависимости от выбранного значения в другом. Условия выборки типа [{«field»: «id», «condition»: «eq», «value»: "{user.id}"}] формируют содержимое списка перед выводом его пользователю. То есть список формируется ещё до того, как его увидит пользователь. Поэтому, чтобы узнать, что пользователь выбрал, надо писать на javascript обработчик события на нужном (родительском) поле, а потом ещё писать обработчик, который вернет/заменит содержимое списка с учетом выбранного значения. Поэтому вариант [{«field»: «cityid», «condition»: «eq», «value»: "{city}"}] не сработает после загрузки страницы в браузере.

Loadырь

Спасибо за ответ. В целом, так и предполагал. Тогда хотел бы уточнить про скрытие поля в зависимости от значения другого поля. Как это делать в форме добавления материала — понятно. А перенести этот опыт на панель фильтра возможно? Иначе, все поля, которые успешно скрываются в форме добавления, потом разом отображаются в панели фильтра. А это не логично. 

#1 "Условия выборки" в поле список 15 октября 2024 в 09:53

Добрый день, товарищи. 

В поле «список», если мы формируем значения из таблицы БД, появляется опция «условия выборки». Работает норм, если понимать зачем она нужна.

Например, это условие выведет строки из таблицы, где id записи равно id текущего пользователя  [{«field»: «id», «condition»: «eq», «value»: "{user.id}"}] 

Собственно вопрос. Есть у нас список, формируемый из таблицы 'streets' с полями id | street | cityid. И есть отдельное поле-список 'city' со списком городов с полями id | city. Как в списке streets прописать условия выборки в зависимости от выбранного на данный момент (на моменте заполнения полей при добавлении записи) города в таблице city? Т.е. можно ли это вообще сделать динамически в данном случае? Из серии:  [{«field»: «cityid», «condition»: «eq», «value»: "{city}"}] 

Понимаю, что попахивает зависимыми списками, и что скорее всего так не сработает. Но мало ли. 

#5 [ЗАКРЫТО] Разные поля в категориях одного типа контента 11 октября 2024 в 00:25

Добрый вечер. Из коробки нет такой опции. Либо свойствами, как указал Loadырь, либо есть компонент от dwd

instantcms.ru/addons/catfields.html

#6 Автосохранение форм типов контента 4 октября 2024 в 00:25

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

Изображение

Именно выделенный удаляет черновик после добавления материала.

Zau4man

Странно, оба хука на месте. Думал что не обновил события, но нет, не оно.

#7 Автосохранение форм типов контента 3 октября 2024 в 14:24

Спасибо за компонент! Вопрос: вот я заполнил поля, через 30 сек они успешно сохранились в черновик, потом опубликовал запись. Все ок. Начинаю публиковать следующую и подгружается сохранный черновик, вместо пустых полей. Так задумано, что при публикации черновик не стирается, или только у меня так?

#8 Проверка на "дружбу" внутри виджета список пользователей 1 октября 2024 в 10:26

Кто подскажет решение? 

Ostrova

покажите пример ваших правок. В каком файле и как пытаетесь организовать проверку. 

Zau4man

Комп не под рукой. Но если на пальцах — в любом шаблоне для виджета «Список пользователя» пытаюсь добавить кнопку подписаться/ отписаться с помощью этого кода. В профиле пользователя так работает. В шаблоне Список пользователей нет. 

Кто подскажет решение? 

Ostrova

покажите пример ваших правок. В каком файле и как пытаетесь организовать проверку. 

Zau4man

Вот пример. Файл modern/controllers/users/widgets/list/list.tpl

  1. <div class="widget_profiles_list<?php if ($style=='tiles'){ ?> d-flex flex-wrap mr-n2 mb-n2<?php } ?>">
  2. <?php foreach($profiles as $profile){ ?>
  3. <?php $url = href_to_profile($profile); ?>
  4.  
  5. <?php if ($style=='list'){ ?><div class="item media mb-3 align-items-center"><?php } ?>
  6.  
  7. <?php if (!empty($fields['avatar']) && $fields['avatar']['is_in_list']){ ?>
  8. <a href="<?php echo $url; ?>" class="icms-user-avatar<?php if ($style=='list'){ ?> mr-3<?php } else { ?> mr-2 mb-2<?php } ?> <?php if (!empty($profile['is_online'])){ ?>peer_online<?php } else { ?>peer_no_online<?php } ?>" title="<?php html($profile['nickname']); ?>">
  9. <?php if($profile['avatar']){ ?>
  10. <?php echo html_avatar_image($profile['avatar'], $fields['avatar']['options']['size_teaser'], $profile['nickname']); ?>
  11. <?php } else { ?>
  12. <?php echo html_avatar_image_empty($profile['nickname'], 'avatar__inlist'); ?>
  13. <?php } ?>
  14. </a>
  15. <?php } ?>
  16. <?php if ($style=='list'){ ?>
  17. <div class="media-body text-truncate">
  18. <?php if (!empty($fields['nickname']) && $fields['nickname']['is_in_list']){ ?>
  19. <h5 class="my-0">
  20. <a href="<?php echo $url; ?>">
  21. <?php html($profile['nickname']); ?>
  22. </a>
  23. </h5>
  24.  
  25.  
  26. <?php if ($this->controller ->is_subscribe_profile){ ?>
  27. <a class="pt-1 pb-1 mr-2 fs-13 ajax-modal btn btn-outline-secondary" href="/users/unsubscribe<?php echo href_to($profile['id']); ?>">Отписаться </a>
  28.  
  29. <?php } else { ?>
  30. <a class="pt-1 pb-1 mr-2 ajax-modal btn btn-outline-success rounded-pill no-border" href="/users/subscribe<?php echo href_to($profile['id']); ?>">Подписаться </a>
  31. <?php } ?>
  32.  
  33.  
  34.  
  35. <?php } ?>
  36. <?php if (!empty($profile['fields'])){ ?>
  37. <div class="fields mt-2">
  38. <?php foreach($profile['fields'] as $field){ ?>
  39. <div class="field ft_<?php echo $field['type']; ?> f_<?php echo $field['name']; ?>">
  40. <?php if ($field['label_pos'] != 'none'){ ?>
  41. <div class="title_<?php echo $field['label_pos']; ?>">
  42. <?php echo $field['title'] . ($field['label_pos']=='left' ? ': ' : ''); ?>
  43. </div>
  44. <?php } ?>
  45. <div class="value">
  46. <?php echo $field['html']; ?>
  47. </div>
  48. </div>
  49. <?php } ?>
  50. </div>
  51. <?php } ?>
  52. </div>
  53. <?php } ?>
  54. <?php if ($style=='list'){ ?></div><?php } ?>
  55.  
  56. <?php } ?>
  57. </div>

После никнейма выводится кнопка. Но она всегда в режиме «подписаться», т.е. проверка не происходит. 

#9 Поле "Контент пользователя" 30 сентября 2024 в 20:16

Как будет время обязательно гляну

Zau4man

Глянул. Поправил код, вернул опцию сокрытия пустых типов контента. Скрыл показ фильтра.

ИзображениеИзображение

Архив с полем в приложении. Имя файла поля то же, поэтому при установке вариант от Ostrova будет обновлен.

Zau4man

Сенсей) 

#1 Проверка на "дружбу" внутри виджета список пользователей 30 сентября 2024 в 14:26

Всем доброго. 

Проверка на дружбу в шаблоне «profile_view» работает корректно. 

<?php if ($this->controller->is_friend_profile){ ?>
ссылка удалить
<?php } else { ?>
ссылка добавить
<?php } ?>

А когда пытаюсь организовать проверку в виджете список пользователей, то такой номер не проходит. Кто подскажет решение? 

#10 Поле "Контент пользователя" 29 сентября 2024 в 13:49

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

Happy

Логично. Подумаю как можно сделать. А пока можете вообще кнопку «перейти» убрать и оставить только название ТК.  Откройте файл поля и там увидите пометки, где можно внести изменения. 

Ostrova

Скажу честно, вы выложили вовремя свое поле, он мне заменило связи, где надо вручную выводить каждый раз контент. По этому доделайте плиз, что бы если нет контента то не выводить название тк, кнопку, и Нет «название контента» для отображения

Happy

Ну на самом деле поле-то вообще не мое. А Zau4man Я внес правки, чтобы оно работало в профиле, а не только в группах. И я не очень-то программист))  Думаю совместно сможем поправить. 

#11 Поле "Контент пользователя" 29 сентября 2024 в 13:34

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

Happy

Логично. Подумаю как можно сделать. А пока можете вообще кнопку «перейти» убрать и оставить только название ТК.  Откройте файл поля и там увидите пометки, где можно внести изменения. 

#12 Поле "Контент пользователя" 29 сентября 2024 в 13:01

А после того как выведется выставленное количество выводимых записей, что дальше происходит? Новая страница или ?

Happy

Ничего. Просто в рамках поля выведутся первые N записей, указанных в настройках поля. Над ними название контента и кнопка «перейти».

Добавлено спустя 5 минут

А после того как выведется выставленное количество выводимых записей, что дальше происходит? Новая страница или ?

Happy

Это больше информационное поле. Кто-то не хочет использовать стену в профиле, и хочет вывести последние записи из блогов пользователя. У кого-то сайт с агентствами недвижимости и надо вывести новые объекты агентства. И т.д. Применений масса. 

#1 Поле "Контент пользователя" 29 сентября 2024 в 12:12

Всем доброго дня. Немного переделал поле «Контент групп» от @Zau4man и превратил его в поле «Контент пользователя». Теперь в профиле пользователя можно вывести последние записи нужного вам типа контента (или нескольких). Можно использовать вместо стены, или одновременно с ней. Как и в оригинальном поле, поддерживается выбор типа контента и ограничение количества выводимых записей.  

Установка и использование: Поле идет без установщика. Просто распакуйте файл в папку system/fields. Далее в полях профиля пользователя создаем новое поле и выбираем тип поля «Контент пользователя». В нем выбираем контент, который будет отображаться и количество записей. 

Приветствуется помощь в доработке. Например, совместными усилиями придумать, как разным группам пользователей выводить разный контент. 

Поле выкладывается «как есть», используйте на свой страх и риск. 

Прикрепленный файл
userscontent.rar 2 Кб
🍪Мы используем файлы cookie для работы сайта. Читать подробнее.