Нужна помощь с кодом

InstantCMS 2.X
#1 15 июня 2022 в 20:36

1) нужно в шаблоне списка контента вывести фильтр поиска только по title 

2) нужно в типе контента вывести  текстовой поле системного имени text 

3) нужно что бы заполнив поле например системного имени novinka данный контент был всегда первым по списку 

Все это делается в шаблоне контента. кто поможет кодом буду премного благодарен, и обязательно задоначу 

#2 15 июня 2022 в 20:49

Второй пункт непонятен — можно чуть подробнее? 

#3 15 июня 2022 в 20:52

Второй пункт непонятен — можно чуть подробнее? 

Make

Поле продублировать с этим системным именем, в админке скрою, но вывести нужно 

#4 15 июня 2022 в 21:37

Аааа.

1) Пункт 1 пока оставим

2) Пункт 2. У вас есть текстовое поле, которое вы скрываете в админке, но которое нужно показать в списке записей. Используйте такую конструкцию:

  1. <?php if(!empty($item['НАЗВАНИЕ ПОЛЯ'])) { echo $item['НАЗВАНИЕ ПОЛЯ']; } ?>

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

  1. <?php if(!empty($item['НАЗВАНИЕ ПОЛЯ'])) { ?>
  2. <h3><?php echo $item['НАЗВАНИЕ ПОЛЯ']; ?></h3>
  3. <?php } ?>

Если необходимо, чтобы поле принимало дефолтное значение, если оно не заполнено, то перепишем конструкцию используя тернарный оператор

  1. <?php echo (empty($item['НАЗВАНИЕПОЛЯ'])) ? 'Цена не указана' : $item['НАЗВАНИЕПОЛЯ']; ?>
Добавлено спустя 5 минут

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

Изображение

Добавлено спустя Только что

Ну и по первому пункту тоже немного непонятно. У вас же есть фильтр? Отключите ненужные поля и оставьте для показа в фильтре только заголовок

#5 15 июня 2022 в 23:21

Ну и по первому пункту тоже немного непонятно. У вас же есть фильтр? Отключите ненужные поля и оставьте для показа в фильтре только заголовок

Make

По второму и третьему спасибо, а фильтр мне нужно вывести одно только поле в списке, а полноценный фильтр при клике в модалке . 

#6 16 июня 2022 в 00:22

По второму и третьему спасибо, а фильтр мне нужно вывести одно только поле в списке, а полноценный фильтр при клике в модалке .

Happy

Вряд ли это получится без серьезных переделок.

#7 16 июня 2022 в 07:27

Вряд ли это получится без серьезных переделок.

Make

Можно сделать копию файла github.com/instantsoft/icms2/blob/master/templates/modern/assets/ui/filter-panel.tpl.php как filter-title.tpl.php с одним полем внутри и указать его в github.com/instantsoft/icms2/blob/master/templates/modern/content/default_list.tpl.php#L7 

  1. $this->renderAsset('ui/filter-title', [

А сам фильтр выводить виджетом.

#8 16 июня 2022 в 08:28

 Loadырь, да, это логично

#9 16 июня 2022 в 20:14

Вряд ли это получится без серьезных переделок.

Make

Можно сделать копию файла github.com/instantsoft/icms2/blob/master/templates/modern/assets/ui/filter-panel.tpl.php как filter-title.tpl.php с одним полем внутри и указать его в github.com/instantsoft/icms2/blob/master/templates/modern/content/default_list.tpl.php#L7 

  1. $this->renderAsset('ui/filter-title', [

А сам фильтр выводить виджетом.

Loadырь

Подскажите как в файле вывести только одно поле 

#10 17 июня 2022 в 06:45
  1. <?php
  2. $user = cmsUser::getInstance();
  3. $form_id = isset($form_id) ? $form_id : md5(microtime(true));
  4. if (!isset($is_expanded)){ $is_expanded = false; } unset($filters['user_id']);
  5. $form_url = is_array($page_url) ? $page_url['base'] : $page_url;
  6. $form_url_sep = strpos($form_url, '?') === false ? '?' : '&';
  7. ?>
  8.  
  9. <div class="icms-filter-panel gui-panel my-3 <?php echo $css_prefix;?>-filter">
  10.  
  11. <a class="icms-filter-link__open btn btn-block btn-light text-left <?php if($filters || $is_expanded){ ?>d-none<?php } ?>" href="#">
  12. <?php html_svg_icon('solid', 'filter'); ?> <span><?php echo LANG_SHOW_FILTER; ?></span>
  13. </a>
  14.  
  15. <div class="icms-filter-container p-3 bg-light position-relative <?php if(!$filters && !$is_expanded){ ?>d-none<?php } ?>">
  16. <button type="button" class="close position-absolute icms-filter-link__close" title="<?php echo LANG_CLOSE; ?>">
  17. <span>&times;</span>
  18. </button>
  19. <form action="<?php echo $form_url; ?>" method="get" id="<?php echo $form_id; ?>" accept-charset="utf-8">
  20. <?php echo html_input('hidden', 'page', 1); ?>
  21. <?php if(!empty($ext_hidden_params)){ ?>
  22. <?php foreach($ext_hidden_params as $fname => $fvalue){ ?>
  23. <?php echo html_input('hidden', $fname, $fvalue); ?>
  24. <?php if($filters){ $filters[$fname] = $fvalue; } ?>
  25. <?php } ?>
  26. <?php } ?>
  27. <div class="fields form-row">
  28. <?php $value = isset($filters['title']) ? $filters['title'] : null; ?>
  29. <?php $output = $fields['title']['handler']->getFilterInput($value); ?>
  30. <div class="form-group col-md-6 field ft_<?php echo $fields['title']['type']; ?> f_<?php echo $fields['title']['name']; ?>">
  31. <label class="font-weight-bold"><?php echo $fields['title']['title']; ?></label>
  32. <?php echo $output; ?>
  33. </div>
  34. </div>
  35.  
  36. <div class="buttons d-flex flex-column flex-md-row">
  37. <?php echo html_submit(LANG_FILTER_APPLY); ?>
  38. <?php if (count($filters)){ ?>
  39. <a class="btn btn-secondary cancel_filter_link my-2 my-md-0 mx-md-2" href="<?php echo ((is_array($page_url) && !empty($page_url['cancel'])) ? $page_url['cancel'] : $form_url); ?>">
  40. <?php echo LANG_CANCEL; ?>
  41. </a>
  42. <?php
  43. if(!empty($page_url['filter_link'])){
  44. $filter_url = $page_url['filter_link'];
  45. } else {
  46. $filter_url = $form_url.$form_url_sep.http_build_query($filters);
  47. }
  48. ?>
  49. <a class="btn btn-link" href="<?php echo $filter_url; ?>">
  50. # <?php echo LANG_FILTER_URL; ?>
  51. </a>
  52. <?php } ?>
  53. </div>
  54. </form>
  55. </div>
  56. </div>
#11 18 июня 2022 в 17:09
  1. <?php
  2. $user = cmsUser::getInstance();
  3. $form_id = isset($form_id) ? $form_id : md5(microtime(true));
  4. if (!isset($is_expanded)){ $is_expanded = false; } unset($filters['user_id']);
  5. $form_url = is_array($page_url) ? $page_url['base'] : $page_url;
  6. $form_url_sep = strpos($form_url, '?') === false ? '?' : '&';
  7. ?>
  8.  
  9. <div class="icms-filter-panel gui-panel my-3 <?php echo $css_prefix;?>-filter">
  10.  
  11. <a class="icms-filter-link__open btn btn-block btn-light text-left <?php if($filters || $is_expanded){ ?>d-none<?php } ?>" href="#">
  12. <?php html_svg_icon('solid', 'filter'); ?> <span><?php echo LANG_SHOW_FILTER; ?></span>
  13. </a>
  14.  
  15. <div class="icms-filter-container p-3 bg-light position-relative <?php if(!$filters && !$is_expanded){ ?>d-none<?php } ?>">
  16. <button type="button" class="close position-absolute icms-filter-link__close" title="<?php echo LANG_CLOSE; ?>">
  17. <span>&times;</span>
  18. </button>
  19. <form action="<?php echo $form_url; ?>" method="get" id="<?php echo $form_id; ?>" accept-charset="utf-8">
  20. <?php echo html_input('hidden', 'page', 1); ?>
  21. <?php if(!empty($ext_hidden_params)){ ?>
  22. <?php foreach($ext_hidden_params as $fname => $fvalue){ ?>
  23. <?php echo html_input('hidden', $fname, $fvalue); ?>
  24. <?php if($filters){ $filters[$fname] = $fvalue; } ?>
  25. <?php } ?>
  26. <?php } ?>
  27. <div class="fields form-row">
  28. <?php $value = isset($filters['title']) ? $filters['title'] : null; ?>
  29. <?php $output = $fields['title']['handler']->getFilterInput($value); ?>
  30. <div class="form-group col-md-6 field ft_<?php echo $fields['title']['type']; ?> f_<?php echo $fields['title']['name']; ?>">
  31. <label class="font-weight-bold"><?php echo $fields['title']['title']; ?></label>
  32. <?php echo $output; ?>
  33. </div>
  34. </div>
  35.  
  36. <div class="buttons d-flex flex-column flex-md-row">
  37. <?php echo html_submit(LANG_FILTER_APPLY); ?>
  38. <?php if (count($filters)){ ?>
  39. <a class="btn btn-secondary cancel_filter_link my-2 my-md-0 mx-md-2" href="<?php echo ((is_array($page_url) && !empty($page_url['cancel'])) ? $page_url['cancel'] : $form_url); ?>">
  40. <?php echo LANG_CANCEL; ?>
  41. </a>
  42. <?php
  43. if(!empty($page_url['filter_link'])){
  44. $filter_url = $page_url['filter_link'];
  45. } else {
  46. $filter_url = $form_url.$form_url_sep.http_build_query($filters);
  47. }
  48. ?>
  49. <a class="btn btn-link" href="<?php echo $filter_url; ?>">
  50. # <?php echo LANG_FILTER_URL; ?>
  51. </a>
  52. <?php } ?>
  53. </div>
  54. </form>
  55. </div>
  56. </div>
Loadырь

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

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

Аааа.

1) Пункт 1 пока оставим

2) Пункт 2. У вас есть текстовое поле, которое вы скрываете в админке, но которое нужно показать в списке записей. Используйте такую конструкцию:

  1. <?php if(!empty($item['НАЗВАНИЕ ПОЛЯ'])) { echo $item['НАЗВАНИЕ ПОЛЯ']; } ?>

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

  1. <?php if(!empty($item['НАЗВАНИЕ ПОЛЯ'])) { ?>
  2. <h3><?php echo $item['НАЗВАНИЕ ПОЛЯ']; ?></h3>
  3. <?php } ?>

Если необходимо, чтобы поле принимало дефолтное значение, если оно не заполнено, то перепишем конструкцию используя тернарный оператор

  1. <?php echo (empty($item['НАЗВАНИЕПОЛЯ'])) ? 'Цена не указана' : $item['НАЗВАНИЕПОЛЯ']; ?>

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

Изображение

Ну и по первому пункту тоже немного непонятно. У вас же есть фильтр? Отключите ненужные поля и оставьте для показа в фильтре только заголовок

Make

Спасибо, донатик скинули 

Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.