ivan

ivan

+1
Репутация
4
Рейтинг
#1 Вывод сайдбара 6 декабря 2025 в 12:10
Всем привет. Помогите ветерану первой ветки)  Как запихнуть картинку в правую колонку с горем пополам разобрался, но как настроить его вывод.
Юрий

Если я правильно понял вопрос, то через отрицательные маски

Изображение

#2 [ЕСТЬ РЕШЕНИЕ] Нет контента в базе данных 5 декабря 2025 в 14:34
 ivan, судя по всему, вы «зашли» не в базу вашего сайта. Посмотрите корректные доступы к базе в файле system/config/config.php
Zau4man

Ёмое, вот это да! Спасибо за подсказку! Извините за потраченное время!

#1 [ЕСТЬ РЕШЕНИЕ] Нет контента в базе данных 4 декабря 2025 в 09:18

Всем привет. Возникла проблема, что надо разместить длинную статью на сайте. Поискал на форуме, нашел ответ как это сделать — в БД поменять text на medium или long. Полез в БД, но не нашел там контент. Раньше стоял на сайте Drupal, потом установил Instant. С друпала остались несколько статей в базе, но нового контента в базе нет и как решить эту задачу?

Изображение

#1 Что это за поле и как его убрать? 8 октября 2025 в 19:44

Всем привет! Подскажите, что это за поле на скрине и как его убрать? Появляется с полем «Текст». Теги отключены, других полей больше нет.

Изображение

#5 Как сделать, чтобы контент был на одном уровне? 3 октября 2025 в 17:09

Кажется нашел решение Listing. Управление списками и записями типов контента

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

Изображение

Добавлено спустя 2 часа

Без базовых знаний CSS и никак

Endroid

Мне вроде бы помогли с css, но куда их прописать? Тема modern 

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

Мне вроде бы помогли с css, но куда их прописать? Тема modern 

ivan

Разобрался)))

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

Кому интересно, меняем содержимое файла default_list_tiles.tpl.php на код:

<?php
/**
 * Template Name: LANG_CP_LISTVIEW_STYLE_TILES
 * Template Type: content
 * Template Options: {«cols»: «4»}
 */
// Встраиваем CSS и JS один раз на странице
static $icms_grid_css_injected = false;
if (!$icms_grid_css_injected) {
    $icms_grid_css_injected = true;
    echo '<style>';
    echo '
    .icms-tiles-template .icms-grid-container{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px;margin:16px 0}
    .icms-tiles-template .icms-grid-container .icms-grid-card{background:#fff;border:1px solid #e9ecef;border-radius:8px;box-shadow:0 2px 8px rgba(100,52,245,0.15);transition:all .2s ease;min-height:320px;display:flex;cursor:pointer}
    .icms-tiles-template .icms-grid-card:hover{box-shadow:0 6px 16px rgba(100,52,245,0.25);border-color:#6434f5}
    .icms-tiles-template .icms-content-fields{display:flex;flex-direction:column;padding:12px;height:100%!important}
    .icms-tiles-template .field.f_title{flex-shrink:0;margin-bottom:12px}
    .icms-tiles-template .field.f_title h3{font-size:1rem;font-weight:600;line-height:1.35;color:#212529;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;height:2.7em;margin:0}
    .icms-tiles-template .field.f_title h3 a{color:inherit;text-decoration:none}
    .icms-tiles-template .field:not(.f_title){flex-grow:1;margin-bottom:10px;overflow:hidden}
    .icms-tiles-template .field .title_left,
    .icms-tiles-template .field .title_top{font-weight:500;margin-bottom:3px;font-size:.85rem;color:#6c757d}
    .icms-tiles-template .field .value{color:#495057;line-height:1.4;font-size:.9rem;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
    
    /* Центрирование изображений */
    .icms-tiles-template .field.f_photo img,
    .icms-tiles-template .field.f_image img,
    .icms-tiles-template .field.f_cover img,
    .icms-tiles-template .field.f_gallery img{display:block;margin:0 auto 8px auto;max-width:100%;height:auto;border-radius:4px}
    
    .icms-tiles-template .tags_bar,
    .icms-tiles-template .info_bar{flex-shrink:0;margin-top:auto;padding-top:12px;border-top:1px solid #f5f5f5;font-size:.75rem;color:#6c757d}
    .icms-tiles-template .icms-btn-tag{font-size:.7rem!important;padding:2px 6px!important}
    
    /* Адаптивность */
    @media (max-width:575px){
        .icms-tiles-template .icms-grid-container{grid-template-columns:1fr}
    }
    @media (min-width:576px) and (max-width:1199px){
        .icms-tiles-template .icms-grid-container{grid-template-columns:repeat(2,1fr)}
    }
    @media (min-width:1200px){
        .icms-tiles-template .icms-grid-container{grid-template-columns:repeat(4,1fr)}
    }
    ';
    echo '</style>';
    
    // JavaScript для кликабельных карточек
    echo '<script>';
    echo '
    document.addEventListener(«DOMContentLoaded», function() {
        // Добавляем обработчик для всех карточек с data-url
        document.querySelectorAll(".icms-grid-card[data-url]").forEach(function(card) {
            card.addEventListener(«click», function(e) {
                // Проверяем, что клик не по ссылке или кнопке
                if (!e.target.closest(«a») && !e.target.closest(".dropdown") && !e.target.closest(«button»)) {
                    window.location.href = this.getAttribute(«data-url»);
                }
            });
        });
    });
    ';
    echo '</script>';
}
?>
<?php
if($ctype['options']['list_show_filter']) {
    $this->renderAsset('ui/filter-panel', [
        'css_prefix'   => $ctype['name'],
        'page_url'     => $page_url,
        'fields'       => $fields,
        'props_fields' => $props_fields,
        'props'        => $props,
        'filters'      => $filters,
        'ext_hidden_params' => $ext_hidden_params,
        'is_expanded'  => $ctype['options']['list_expand_filter']
    ]);
}
?>
<?php if (!$items){ ?>
    <p class=«alert alert-info mt-3 alert-list-empty»>
        <?php if(!empty($ctype['labels']['many'])){ ?>
            <?php echo sprintf(LANG_TARGET_LIST_EMPTY, $ctype['labels']['many']); ?>
        <?php } else { ?>
            <?php echo LANG_LIST_EMPTY; ?>
        <?php } ?>
    </p>
<?php return; } ?>

<!-- Обёртка с уникальным классом -->
<div class=«icms-tiles-template»>
    <div class=«content_list tiled <?php echo $ctype['name']; ?>_list icms-grid-container»>

        <?php foreach($items as $item){ ?>
            <?php 
            // Определяем URL для карточки
            $item_url = (!empty($item['is_private_item']) || !$ctype['options']['item_on'])? '': href_to($ctype['name'], $item['slug'].'.html');
            ?>

            <!-- Карточка с data-url атрибутом -->
            <div class=«tile <?php echo $ctype['name']; ?>_list_item icms-grid-card<?php echo $item_url? ' cursor-pointer': ''; ?>»<?php echo $item_url? ' data-url="'.htmlspecialchars($item_url).'"': ''; ?>>
                <div class=«icms-content-fields d-flex flex-column h-100»>
                <?php foreach($item['fields'] as $field){ ?>

                    <div class=«field ft_<?php echo $field['type']; ?> f_<?php echo $field['name']; ?> <?php html($field['options']['wrap_style'].' '.$field['options']['wrap_style_list']); ?>»>

                        <?php if ($field['label_pos'] !== 'none'){ ?>
                            <div class=«title_<?php echo $field['label_pos']; ?>»>
                                <?php echo string_replace_svg_icons($field['title']). ($field['label_pos']==='left'? ': ': ''); ?>
                            </div>
                        <?php } ?>

                        <?php if ($field['name'] === 'title' && $ctype['options']['item_on']){ ?>
                            <h3 class=«h5 m-0»>
                            <?php if (!empty($this->menus['list_actions_menu'])){ ?>
                                <div class=«dropdown float-end»>
                                    <button class=«btn p-0» type=«button» data-toggle=«dropdown»>
                                        <?php html_svg_icon('solid', 'ellipsis-vertical', 12); ?>
                                    </button>
                                    <ul class=«dropdown-menu»>
                                        <?php foreach($this->menus['list_actions_menu'] as $menu){ ?>
                                            <li>
                                                <a class=«dropdown-item <?php echo isset($menu['options']['class'])? $menu['options']['class']: ''; ?>» href="<?php echo string_replace_keys_values($menu['url'], $item); ?>" title="<?php html($menu['title']); ?>">
                                                    <?php echo $menu['title']; ?>
                                                </a>
                                            </li>
                                        <?php } ?>
                                    </ul>
                                </div>
                            <?php } ?>
                            <?php if ($item['parent_id']){ ?>
                                <a class=«parent_title small text-muted» href="<?php echo rel_to_href($item['parent_url']); ?>"><?php html($item['parent_title']); ?></a>
                                →
                            <?php } ?>

                            <?php if (!empty($item['is_private_item'])) { ?>
                                <?php html($item[$field['name']]); ?>
                                <span class=«text-muted ms-1» title="<?php html($item['private_item_hint']); ?>">
                                    <?php html_svg_icon('solid', 'lock', 10); ?>
                                </span>
                            <?php } else { ?>
                                <a href="<?php echo $item_url; ?>">
                                    <?php html($item[$field['name']]); ?>
                                </a>
                                <?php if ($item['is_private']) { ?>
                                    <span class=«text-muted ms-1» title="<?php echo LANG_PRIVACY_HINT; ?>">
                                        <?php html_svg_icon('solid', 'lock', 10); ?>
                                    </span>
                                <?php } ?>
                            <?php } ?>
                            </h3>
                        <?php } else { ?>
                            <div class=«value»>
                                <?php echo $field['html']; ?>
                            </div>
                        <?php } ?>
                    </div>
                <?php } ?>

                <?php if (!empty($item['show_tags'])){ ?>
                    <div class=«tags_bar»>
                        <?php echo html_tags_bar($item['tags'], 'content-'.$ctype['name'], 'btn btn-xs btn-outline-secondary icms-btn-tag px-2 py-1', ''); ?>
                    </div>
                <?php } ?>

                <?php if (!empty($item['info_bar'])){ ?>
                    <div class=«info_bar p-0 bg-transparent border-0»>
                        <?php foreach($item['info_bar'] as $bar){ ?>
                            <div class=«bar_item <?php echo !empty($bar['css'])? $bar['css']: ''; ?>» title="<?php html(!empty($bar['title'])? $bar['title']: ''); ?>">
                                <?php if (!empty($bar['icon'])){ ?>
                                    <?php html_svg_icon('solid', $bar['icon'], 10); ?>
                                <?php } ?>
                                <?php if (!empty($bar['href'])){ ?>
                                    <a class=«stretched-link» href="<?php echo $bar['href']; ?>">
                                        <?php echo $bar['html']; ?>
                                    </a>
                                <?php } else { ?>
                                    <?php echo $bar['html']; ?>
                                <?php } ?>
                            </div>
                        <?php } ?>
                    </div>
                <?php } ?>
                </div>
            </div>

        <?php } ?>

    </div>
</div>

<?php echo html_pagebar($page, $perpage, $total, $page_url, $filter_query); ?>

Выбираем шаблон списка «Плитка (default_list_tiles)» и получается вот так

Изображение

Карточки полностью кликабельные, при наведении курсора — выделяются

#6 Как сделать, чтобы контент был на одном уровне? 3 октября 2025 в 11:06

фиксированную высоту для заголовка нужно сделать стилями

TOPg

Еще бы знать как это сделать

#1 Помогите с Listing"ом 2 октября 2025 в 22:03

В прошлом своем сообщении просил помочь с расстановкой контента. Кажется нашел решение Listing. Управление списками и записями типов контента

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

Изображение

И все одно и то же по кругу...

#8 Как сделать, чтобы контент был на одном уровне? 2 октября 2025 в 21:01

Подозреваю, что у вас нет знаний CSS

Clear

К сожалению, нет

#1 Как сделать, чтобы контент был на одном уровне? 2 октября 2025 в 19:57

Всем привет! Как сделать, чтобы контент был на оном уровне, чтобы заголовок, допустим на это не влиял? Смотрите на скрине. Если заголовок длинный, то картинка ниже получается, а если короткий, то выше. Может есть способ уменьшить заголовок, чтобы он вписывался, так сказать в карточку? И еще такой вопрос, можно ли сделать так, чтобы каждая запись была, как бы сказать, на карточке? Чтобы были четкие границы (как на ВБ) и чтобы все вписывалось в эти границы и эти карточки были все на одном уровне.

Изображение

#10 Всплывающая подсказка в мобильной версии 29 сентября 2025 в 19:51

По настройке в принципе всё легко. 

Ostrova

Спасибо большое за разъяснение.

Попробовал через код, как советовали выше. Вроде бы получается, но надо дорабатывать.

Если кому интересна эта тема, то я своего добился при помощи нейросети. Написали с ней HTML-код, для моих нужд вполне подходит. В разделе «Виджеты и страницы» из раздела «Общие» берем HTML блок (я поставил его в Header в раздел «Лого+меню пользователя» на все страницы). Код:

  1. <div id="icms-app-banner" style="display:none; position:fixed; top:10px; left:10px; right:10px; background:white; color:black; padding:14px 20px; text-align:center; z-index:99999; box-shadow:0 4px 12px rgba(0,0,0,0.1); font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif; border-radius:12px; max-width:500px; margin:0 auto;">
  2. <div style="display:flex; flex-wrap:wrap; justify-content:space-between; align-items:center; gap:12px;">
  3. <span style="font-weight:500; font-size:15px;">📱 Установите наше приложение</span>
  4. <div style="display:flex; align-items:center; gap:12px;">
  5. <a href="https://вашассылка" id="app-download-link" target="_blank" rel="noopener" style="background:#007bff; color:white; padding:8px 20px; border-radius:24px; text-decoration:none; font-weight:600; font-size:14px; white-space:nowrap;">Скачать</a>
  6. <button id="app-banner-close" style="background:transparent; border:none; color:#666; font-size:20px; cursor:pointer; padding:0; width:24px; height:24px; display:flex; align-items:center; justify-content:center;">&times;</button>
  7. </div>
  8. </div>
  9. </div>
  10.  
  11. <script>
  12. (function() {
  13. function isWebView() {
  14. const ua = navigator.userAgent;
  15.  
  16. // Ключевая проверка: наличие "Version/4.0" в Android WebView
  17. if (/Android.*Version\/4\.0.*Chrome/.test(ua)) {
  18. return true;
  19. }
  20.  
  21. // Стандартная проверка
  22. if (/wv/i.test(ua)) return true;
  23.  
  24. // Проверка для iOS WebView
  25. if (/iPhone|iPad|iPod/.test(ua) &&
  26. 'standalone' in window.navigator &&
  27. !window.navigator.standalone) {
  28. return true;
  29. }
  30.  
  31. return false;
  32. }
  33.  
  34. function isMobile() {
  35. return /Android|iPhone|iPad|iPod|Opera Mini|IEMobile|BlackBerry/i.test(navigator.userAgent);
  36. }
  37.  
  38. function getCookie(name) {
  39. const nameEQ = name + "=";
  40. const ca = document.cookie.split(';');
  41. for(let i = 0; i < ca.length; i++) {
  42. let c = ca[i];
  43. while (c.charAt(0) === ' ') c = c.substring(1, c.length);
  44. if (c.indexOf(nameEQ) === 0) return c.substring(nameEQ.length, c.length);
  45. }
  46. return null;
  47. }
  48.  
  49. function setCookie(name, value, days) {
  50. const expires = new Date();
  51. expires.setTime(expires.getTime() + (days * 24 * 60 * 60 * 1000));
  52. document.cookie = name + '=' + value + ';expires=' + expires.toUTCString() + ';path=/';
  53. }
  54.  
  55. if (isMobile() && !isWebView() && getCookie('icms_app_banner_shown') !== '1') {
  56. document.getElementById('icms-app-banner').style.display = 'block';
  57.  
  58. document.getElementById('app-banner-close').onclick = function() {
  59. document.getElementById('icms-app-banner').style.display = 'none';
  60. setCookie('icms_app_banner_shown', '1', 14);
  61. };
  62.  
  63. document.getElementById('app-download-link').onclick = function() {
  64. setCookie('icms_app_banner_shown', '1', 365);
  65. document.getElementById('icms-app-banner').style.display = 'none';
  66. };
  67. }
  68. })();
  69. </script>
  1. В третьей строке "📱 Установите наше приложение" можете вставить свой текст.
  2. В пятой строке ссылку на ваше приложение и «Скачать» можно поменять на «Установить».

Ключевые особенности:

  1. Всплывающая подсказка показывается только на мобильных устройствах
  2. Не показывается в WebView приложениях (как в моем случае)
  3. Если пользователь закроет эту подсказку, то она ему в следующий раз будет показана через 14 дней
  4. Если пользователь нажмет на кнопку «Установить», то будет показана только через 365 дней (год).

Настройки блока HTML блока следующие:

  • Подзаголовок не показываем
  • Дизайн: без шаблона контейнера, чтобы он нигде не высвечивался
  • Шаблон виджета — html
  • Доступ — без разницы. На ПК эта подсказка показываться не будет.

Буду рад вашим мнениям))

Добавлено спустя 20 часов

Тестирую второй день, полет нормальный! Чищу куки, захожу, проверяю. Все норм.

Кстати, можно ведь не только ссылку на приложение туда вставить, можно на другой ресурс.

#11 [ЕСТЬ РЕШЕНИЕ] Как перенести запись с одного типа контента в другой? 29 сентября 2025 в 19:49

Все просто. Открываете БД и меняете ID пользователя на нужного.

Endroid

Спасибо, так и сделал, а то подтверждения не дождешься

#12 [ЕСТЬ РЕШЕНИЕ] Как перенести запись с одного типа контента в другой? 29 сентября 2025 в 13:02

Был компонент такой там подтверждать не надо. Только не знаю работает сейчас или нет 

rshabalin

Я находил здесь тему на форуме, но этой теме лет уже, рисковать не стал

#13 [ЕСТЬ РЕШЕНИЕ] Как перенести запись с одного типа контента в другой? 29 сентября 2025 в 12:24

Потом передаете его нужному пользователю автору

Clear

Ох, спасибо! А нельзя без подтверждения по почте, чтоб передалось? Только обязательно подтверждать нужно?

#14 [ЕСТЬ РЕШЕНИЕ] Как перенести запись с одного типа контента в другой? 29 сентября 2025 в 11:18

Если не много там пару тройку, в ручную проще

Clear

Да, пару тройку. Как это сделать?

#1 [ЕСТЬ РЕШЕНИЕ] Как перенести запись с одного типа контента в другой? 29 сентября 2025 в 11:11

Всем привет! Подскажите, возможно ли такое, нужно перенести запись с одного типа контента в другой? Поля у них одинаковые, просто тип контента разный. И да, этот контент добавляют пользователи, нужно, чтобы и у них тоже перенеслось.

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