Anton

Anton

С нами с 26 мая 2013; Место в рейтинге пользователей: #232
Anton
04 августа 2021, 13:17
0
Василий, рад видеть!

Вопрос по AjaxForm. В описании сказано, используются jQuery.Form и jQuery.jGrowl.
То есть, ему нужен jQuery. Можно ли обойтись без него?
Anton
23 июня 2021, 17:52
0
Вот и спрашиваю где бы подсмотреть уже реализованный пример или опыт.
Велосипедить новый велик хорошо, но я сторонник, чтобы улучшить уже имеющуюся реализацию.
Anton
23 июня 2021, 17:50
0
Удивительно, но нет — это не ресурсы. Там не нужно каждому блюду фото, описание.
Просто 1 страничка со всем списком по дням. Как будто распечатанное меню в ресторане.

Меню планируется сразу на всю неделю. Каждый день предлагается по 2 разных блюда. На следующий день уже будут другие 2 разных блюда. И так всю неделю.

Несколько раз в месяц некоторые блюда повторяются. Цена единственная на все блюда.

Вот и думаю что будет удобнее редактору сайта: список, который пополняется или текстовое поле. Или еще как-то? Чтобы минимизировать количество писанины с его стороны.
Anton
23 июня 2021, 17:27
0
Насколько я понял, то вы подумали про мой вопрос «какие технологии использовать в админке». Типа Vue.js, React.

Нет. Я имею в виду: что должно в админке сайта для ресторана? Есть ли пример, где можно посмотреть как (не «на чем», а «как») реализована админка такого сайта? Какие ТВ-поля используются? Сделать ли блюда списком или простое текстовое поле?

Админку MODX считают абсолютно понятной и логичной. Очень будут рады в ней работать.

Стандартных компонентов для Наименования, Цена, День недели — весьма хватает.

Мне бы пример увидеть. Есть примеры?
Anton
23 июня 2021, 14:17
0
Александр, очень неожиданный совет. Но я даже не представляю, что должно в админке для ресторана, что меня пугают extJS.
Можете подсказать, какие такие страшные компоненты должны быть в админке?
Anton
10 июня 2021, 17:39
0
В общем, реализовал так:
1. Создал группы ресурсов и пользователей.
2. Создал ресурсы, к которым открыл доступы нужным группам (ведь 1 пользователь может состоять в нескольких группах).
3. С помощью сниппета «FileDownload R» сделал вывод нужной директории с ftp.
4. С помощью .htaccess закрыл листинг этой директории.
5. Ну и стандартная логин-форма из сниппета «Login».

Теперь вопрос. Это безопасно?
Anton
13 апреля 2021, 18:59
0
Можешь пример набросать, пожалуйста?
Не могу представить в какую сторону копать. Циклы могу, но не понимаю, как сделать именно персональную рассылку.
Anton
13 апреля 2021, 18:32
0
Всего 1 форма, в ней в списке (select) выбираем город (например, Москва), заполняем поля Имя, Ваш email, Запрос, ждем Отправить.
После этого надо отправить по всем email'ам, кто находится внутри коллекции Москва (всем дочерним ресурсам — филиалам), у которых в ТВ хранятся разные email'ы.

Вызов:
{$_modx->runSnippet('!AjaxForm', [
    'snippet' => 'FormIt',
    'form' => '@FILE chunks/forms/emailForm.tpl',
    'preHooks' => '',
    'hooks' => 'setEmails,email',
    'emailTo' => '[[+parsedEmails]]',
    'emailTpl' => '@FILE chunks/forms/emailFormReport.tpl',
    'emailSubject' => 'Test Message',
    'validate' => '',
])}
Простейшая форма для тестов:
<form action="{$_modx->resource.id | url}" method="post" id="callbackform" class="ajax_form">

    <div class="form-group">
        <label for="callbackform_location">location:</label>
        <input type="text" class="form-control" id="callbackform_location" name="location"
               placeholder="location">
    </div>

    <div class="form-group">
        <label for="callbackform_name">name:</label>
        <input type="text" class="form-control" id="callbackform_name" name="name"
               placeholder="name">
    </div>

    <div class="form-group">
        <label for="callbackform_email">email:</label>
        <input type="email" class="form-control" id="callbackform_email" name="email"
               placeholder="email">
    </div>

    <div class="form-group">
        <label for="callbackform_text">message:</label>
        <textarea class="form-control" name="message" id="callbackform_text"
                  placeholder="message"
                  required></textarea>
    </div>

    <button type="submit" class="btn btn-blue">Send</button>

</form>

Сам сниппет setEmails:
<?php

$array_ids = $modx->getChildIds(2, 1, array('context' => 'web',));

$docs = $modx->getCollection('modResource', array(
    'id:IN' => $array_ids,
    'template' => 2,
));

foreach ($docs as $doc) {
    if ($doc->getTVValue('email_req')) {
        $parsedEmails = $doc->getTVValue('email_req') . ',';
        $hook->setValue('parsedEmails', $parsedEmails);
    }
}

return true;
Кроме того проблема в том, что я не знаю как отправить письма через FormIt персонально, а не в таком виде «mail1@mail.com,mail3@mail.com,mail3@mail.com,». Чтобы бы другие получатели не видели кому еще отправлено письмо.
Anton
07 апреля 2021, 13:54
0
Спасибо, но не работает.

{set $rows = $_modx->runSnippet('!pdoResources', [
'fastMode' => 0,
'limit' => 0,
'parents' => 2,
'depth' => 5,
'includeContent' => 1,
'tvPrefix' => 'tv_',
'includeTVs' => 'stars,room_type,room_details,basis_price,photos',
'select' => '{"modResource":"id,uri,pagetitle,content,photos"}',
'return' => 'json',
'where' => ['isfolder' => 0]
]) | fromJSON}


[{foreach $rows as $row}
    {
    "id":"{$row.id}",
    "uri":"{$row.uri}",
    "pagetitle":"{$row.pagetitle}",
    "content":"{$row.content}"
    },
{/foreach}]
Выводит подобие json'а, но Vue не принимает его и генерирует пустые объекты, без данных.
Пробовал в одну строку, пробовал играться со скобками (выносил в переменные) — не работает.

Что я делаю не так?
Anton
06 апреля 2021, 20:16
0
Я пытаюсь прикрутить Vue.js на фронт, а он принимает json (мне с ним проще работать).

Пытаюсь все обработать привычным MODX Revo и его сниппетами, сформировать правильный json и скормить Vue.js а фронт с помощью axios.

Как можно сделать такой json с уже обработанными ТВ и др.?
Anton
06 апреля 2021, 15:36
0
Поля заданы:

{$_modx->runSnippet('!pdoResources', [
'fastMode' => 0,
'limit' => 0,
'parents' => 2,
'depth' => 5,
'includeContent' => 1,
'tvPrefix' => 'tv_',
'includeTVs' => 'stars,room_type,room_details,basis_price,photos',
'select' => '{"modResource":"id,uri,pagetitle,content,photos"}',
'return' => 'json',
'where' => ['isfolder' => 0]
])}
Но я не могу использовать вложенные сниппеты при return=json, которые можно использовать только в чанках.

Как сначала обработать фотографии с помощью? Как В это (огромная фотка)
"image": "assets/uploads/room_2_3.webp"
воткнуть это
[[*thumbnailImage:phpthumbof=`w=300&h=300&zc=1`]]
?
Как получить имя родителя? А потом вывести все в формате json?

Если все обобщить, то я ищу вариант чтобы сначала обработать встроенными сниппетами все что можно (мне нужно в чанках вложенные сниппеты использовать), затем сформировать правильный json и выкатить его на страницу (ресурс).

Как такое сделать? Смотрел в сторону API Rest, но это не совсем то.
Anton
06 апреля 2021, 12:38
0
Спасибо. Но говорю же — не помогает. Мне нужно, например, обработать все фото с помощью phpthumbon и вывести название родителя. Это можно сделать внутри чанка для pdoResources.
&return=`json`
выводит все поля ресурса, без обработок.

Попробую по-другому спросить. Как получить и вывести в json?
  1. Обработанные изображения (image)
  2. Имя родителя, вместо id родителя
{
"id": "7",
"pagetitle": "Студия",
"parent": "4",
"tv_photos": [
{
"MIGX_id": "1",
"title": "Room",
"image": "assets/uploads/room_2_1.webp"
},
{
"MIGX_id": "2",
"title": "Room",
"image": "assets/uploads/room_2_2.webp"
},
{
"MIGX_id": "3",
"title": "Room",
"image": "assets/uploads/room_2_3.webp"
}
},
Буду очень рад помощи.
Anton
05 марта 2021, 14:34
0
Можешь, пожалуйста, привести пример такого сниппета, который будет всё слать на API?
Anton
05 марта 2021, 14:08
0
Почитал. Слишком запарно будет делать API (и без того немаленького функционала) + делать еще сниппет к нему. И в случае изменений в Ларке надо будет лезть еще в сниппет.

Есть вариант встроить это именно вместо $resource->content?
Anton
05 марта 2021, 13:30
0
Спасибо за совет. Это удобно. Но опять же — мне удобно использовать MODX в плане простой верстки на сайте и удобные (привычные) pdoTools и FormIt.
3 модуля на Laravel, которые отображают списки и форма добавления в этот список (ну и update, delete).

Вот и ищу как встроить это в MODX.
Anton
05 марта 2021, 13:24
0
Поправил, спасибо =))
Я пока с API своим еще не работал. Но через API, как я понял, можно только считывать? Записывать через него можно?
Anton
03 декабря 2020, 12:23
0
Артур, Большое Тебе Спасибо за подсказку и помощь!
Со всем этим справлюсь самостоятельно. Просто не понимал как всё склеить вместе.