Aleksandr Huz

Aleksandr Huz

С нами с 02 августа 2014; Место в рейтинге пользователей: #15
Aleksandr Huz
Вчера в 19:16
+2
Я в 90% случаев использую поиск через Crtl+F
Есть встроенный поиск:
Aleksandr Huz
Вчера в 19:11
+1
Аналогично тому, как например в mFilter2 можно указывать кастомные чанки row и outer для любых полей,
Я об этом даже не знал. Чтобы что-то узнать, все равно нужно читать документацию, а если нужно универсальное решение — использовать феном.

Из пожеланий, всё-таки не терять MODX-style и дать возможность использовать систему чанков полноценно, не прибегая в foreach циклам в коде шаблонизатора.
Теперь я понял, о чем ты. Нужно добавить параметры, как в mFilter2. Например:
'tpl.outer.list' => 'tpl_outer_name',
'tpl.row.list' => 'tpl_row_name'
где list — название переменной.

Но ведь все равно придется читать доку))
Но идея хорошая. Сделаю
Aleksandr Huz
Вчера в 18:51
+1
Вот так? Я подумаю, куда можно вывести стилизацию списка блоков.
Aleksandr Huz
Вчера в 15:50
+1
Да, хорошая идея, это тоже в планах. Сейчас в платной версии есть поиск по блокам, если их более 15, но группировка будет получше. Реализую.
Aleksandr Huz
Вчера в 11:43
+1
В документации для 2й версии увидел что сниппеты другие (в первой просто один PageBlocks), вот и спросил)
Во второй версии нужно заменить на pbBlocks

Спасибо за оперативность! Правда парни из modx.com наверное не сразу пакет опубликуют?)
Уже отправил. Обычно это быстро.
Aleksandr Huz
Вчера в 11:34
+2
Вау, какой красивый и короткий код! Там где описане содержимого вкладки — просто магия какая-то! Давненько такого не видел)))
Спасибо.

Из пожеланий, всё-таки не терять MODX-style и дать возможность использовать систему чанков полноценно, не прибегая в foreach циклам в коде шаблонизатора.
Вместо этого:
{foreach $list as $item}
    <li>{$item.title}</li>
{/foreach}
можно написать так, если сильно хочется:
{$list|pbJson:'<li>{$title}</li>'}

А ещё там внутри чанка можно сделать доступным {$idx} и {$total}
Но, чтобы вместо инлайнового чанка использовать реальный нужно доработать сниппет. Сделаю

Чтобы было примерно так:
{$list|pbJson:'@INLINE <li>{$title}</li>'}
{$list|pbJson:'list_item_tpl'}
и в чанке list_item_tpl дополнительно будет доступно {$_idx}, {$_total}, {$_first} и {$_last}
Aleksandr Huz
Вчера в 11:17
+2
Привет.

Вторая мажорная версия только платная, так? А первая (выложенная на modx.com) бесплатна?
Совершенно верно

Но при этом я вижу что у нее относительно свежий релиз.
Исправлять ошибки тоже нужно.

Я сейчас начал работу с бесплатной, если пойму, что её возможностей мало — на 2-ю версию будет трудно уйти?
Нет, просто обновляешь поверх нее — и все. Первая версия сильно ограничена в возможностях, но все равно полезна для легких сайтов, например, для лендинга.

4) у ресурса осталось старое имя чанка, всё сломалось, поменять его нельзя?
Имя чанка должно автоматически измениться для всех сопутствующих блоков, поэтому это ошибка в бесплатной версии. Исправлю сегодня.
Aleksandr Huz
14 февраля 2025, 22:35
+1
Сниппет pbResources — это аналог pdoResources, но с возможностью присоединять таблицы по принципу «один ко многим», чего нет у pdoResources. Также переменные, добавленные через PageBlocks, добавляются к результату и выводятся как стандартные переменные ресурса.

Если это делать через pdoResources:
{'!pdoResources' | snippet: [
    'parents' => 0,
    'resources' => '1,2,3',
    'tpl' => 'seo-card'
]}
Чанк seo-card
<div class="col-4 mb-4">
    <div class="card">
        {*изображение храниться в виде json*}
        {set $image = $values.seo_img|fromJSON}
        <img loading="lazy" src="{$image.url}" width="395" height="450" class="card-img-top" alt="{$image.title}">
        <div class="card-body">
            <h5 class="card-title">{$values.seo_title}</h5>
            <p class="card-text">{$values.seo_description}</p>
            {*Получаем данные из таблицы*}
            {set $list = 'pbCollections'|snippet: ['field_name' => 'seo_list', 'return' => 'json']|fromJSON}
            <ul class="text-start">
                {foreach $list as $item}
                    <li>{$item.title}</li>
                {/foreach}
            </ul>
        </div>
    </div>
</div>

А если через pbResources, то у нас уже будут доступны переменные seo_img, seo_title, seo_description и list (массив)
Aleksandr Huz
14 февраля 2025, 15:53
+1
Реального сайта нет. Меня попросили показать как вывести из несколько ресурсов seo-карточки, где будет картинка, заголовок, описание и еще таблица.
Aleksandr Huz
12 февраля 2025, 22:15
+1
Компонент бесплатный.

А реально организовать подсказки при вводе?
Делаем запрос на сервер, а на сервере получаем данные:
$algolia = $this->modx->services instanceof \MODX\Revolution\Services\Container
            ? $this->modx->services->get('algolia')
            : $this->modx->getService('algolia', 'Algolia', MODX_CORE_PATH . 'components/algolia/model/');
$results = $algolia->search($query); // результат поиска
Еще можно прочитать про Query Suggestions Index
Aleksandr Huz
12 февраля 2025, 21:16
0
Пока нет, но обязательно добавлю. Спасибо
Aleksandr Huz
12 февраля 2025, 16:10
0
Про поиск можно прочитать у них на сайте — www.algolia.com/

В чем фишка сервиса? Для чего продукт? В описании не написано.
Самое первое предложение:
Algolia — это мощная облачная поисковая платформа, обеспечивающая мгновенный и релевантный поиск.

По ссылке на «репозиторий» ссылка algolia.boshnik.com/docs/ битая, выходит ошибка.
Убрал ссылку, документацию еще не добавил. Но все в статье описано.
Aleksandr Huz
10 февраля 2025, 22:02
0
Но сам чанк в админке создать всё равно придётся, это да.
Нет, это не обязательно. Можно создавать только файловые чанки.

Как и сами блоки.
С последнем обновлением, это тоже не обязательно. Можно в файле core/App/Models/Resource.php создавать блоки и таблицы
Aleksandr Huz
10 февраля 2025, 21:59
+3
1. Интуитивный интерфейс
Проще и понятнее, чем в MIGX.

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

3. Готовые блоки
Создаёшь блок один раз, а потом используешь его на любых страницах. Если редактируешь блок, изменения автоматически применяются везде.

4. Надёжное хранение данных
Вся информация хранится в отдельной таблице, так что даже при ошибках данные не теряются. В MIGX всё хранится в JSON, и если что-то пойдёт не так (что бывает при большой вложенности), все данные могут быть утеряны.

5. Мультиязычность
Легко переводить контент через Deepl или ChatGPT.

6. UTM-метки
Есть поддержка тестирования разных меток, что полезно для аналитики.

7. Версионирование
Каждое изменение сохраняется, и можно откатиться к любой версии. А при удалении помещается в корзину, откуда тоже можно восстановить.

8. Коллекции
Можно создавать полностью настраиваемые таблицы с фильтрацией по любым данным.

9. Синхронизация блоков
Можно синхронизировать блоки между собой, даже если они не являются готовыми блоками.

10. Мощное копирование
Копировать можно по ID, по контексту или все блоки с определённого ресурса.

11. События
Доступно 17 событий для управления контентом. pageblocks.boshnik.com/docs/events.

12. Роутинг
Гибкая система роутинга, как в Laravel. Легко настраивать кастомные маршруты для страниц или API.

13. Form Builder
Можно создавать блоки, таблицы, табы и добавлять поля прямо через PHP-код.

и останавливает то, что нет файловых элементов
Это поддерживалось почти с самой первой версии.
{'!pbBlocks'|snippet: [
    'fileElements' => 1
]}
Все чанки находятся в core/elements/ (настраивается в pdoTools) и, соответственно, загружается файл из:
core/elements/chunks/chunknameblock.tpl,
где chunknameblock — это имя чанка блока.

Но вскоре поддержка pdoTools будет удалена, так как в PageBlocks уже встроен Fenom, но еще не настроен.
Aleksandr Huz
01 февраля 2025, 01:10
+1
Про мультиязычность напишу отдельную статью. Вкратце: есть комбо-поле, которое переключает контекст для блоков, которые можно переводить вручную или с помощью сторонних сервисов (DeepL, ChatGPT). Также есть отдельная вкладка для перевода текущего ресурса — по принципу Локализатора. Конфликтов не должно быть. Дополнительные поля я не использую с этим компонентом — ни разу не пригодились. Вся информация находится в блоках, поэтому отдельной вкладки для лексиконов, как в Локализаторе, тоже нет.
Aleksandr Huz
28 января 2025, 01:22
+3
Version 2.3.1

Added
  • support MySQL 5.7
  • description for ready blocks
  • support for custom parameters for snippets
@Баха Волков @Rus