brioni

brioni

Был в сети 13 февраля 2024, 11:54
Заказы не принимаю
Вот здесь есть решение:
<input type="file" name="photo">
Дальше, добавь enctype атрибут для формы.
<form method="post" enctype="multipart/form-data" action="[[~[[*id]]]]">
Дальше в плагине добавляем обработку загрузки изображения:
case 'OnDocFormSave':
      // Указываем путь, пробовал $modx->getOption('assets_url').'path/to/dir/';
      // получается со слэшем вначале: /assets/images/.
      $path = 'assets/images/'; 
      if($mode == 'new'){  // Режим создания документа
        if (!empty($_FILES)) {  // Проверка на пустоту массива $_FILES
          @mkdir($path, 0777, true); // Создаем папку для хранения изображений, с правами 0777, третий аргумент - рекурсивное создание папок.
          foreach($_FILES as $k => $v) {
            $name = $v['name'];
            $size = $v['size'];
            $tmp = $v['tmp_name'];

            $ext = pathinfo($name, PATHINFO_EXTENSION); //получаем расширение файла
            $hash = md5(time().$name.$size); // новое название файла
            $uploadfile = $path.$hash.$ext; // объединяем в конечный путь к файлу

            if (copy($tmp, $uploadfile)) { // копируем изображения из временной папки в нужное место
              $resource->set('photo', $uploadfile); 
              $resource->save(); // Сохраняем объект.
            }
          }
        }
      } else {
        //resource update
      }
но мне не удается даже загрузить файл на сервак…
Может кто спарвился?
Можно сделать проще:
tpl.Tickets.form.create
<div class="form-group">
		<label for="ticket-img">Метки</label>
		<input type="text" class="form-control" placeholder="Добавьте 3-5 ключевых слов через запятую" name="tags" value="" maxlength="50" id="ticket-tags"/>
		<span class="error"></span>
	</div>
Вывод тегов в любом месте, на любой странице
[[tagLister? &target=`id страницы вывода результатов` &limit=`20` &parents=`[[*id]]` &altCls=`` &cls=`categories` &weightCls=`` &tpl=`tpl-post-tags`]]
tpl-post-tags стандартный
<li><a class="[[+cls]]" href="[[+url]]">[[+tag]]</a></li>
Всё, что требуется — это установить GetPage & GetResource
Запустил мультисайт по инструкции автора.
Удалось обойтись без создания папок в корне для каждого сайта — файлы отлично подгружаются из общей папки assets и не требуется вырезать часть URL.
Также избежал создания отдельных чанков для доп сайтов, кроме footer где стоит индивидуальный счетчик. Например, логотип сайта в header легко подгружается из общей кучи путем:
<img src="assets/template/images/logo [[++site_name]].png" alt="" />
. То есть создаем сколько угодно логотипов соблюдая название logo [[++site_name]].png и создавать отдельный чанк не нужно.
getTickets и pdoMenu отлично понимают контекст, хотя в некоторых случаях и пришлось добавить параметр &context=``
В итоге копирую «шаблонный» контекст и на него вешаю новый домен разделы и документы использую все чанки и шаблоны от основного сайта.

Однако остался нерешенный момент с файлом robots.txt, а именно строкой Host:
Пока её тупо удалил — посмотрим на реакцию поисковиков…

P.S. — Спасибо автору поста за идею — люблю все оптимизировать. Например, хостинг Бегет теперь обходится дешевле, т. к. тарифы привязаны к количеству сайтов, а количество доменов не ограничено. Думаю ход мысли вы уловили :)