Наумов Алексей

Наумов Алексей

С нами с 31 марта 2013; Место в рейтинге пользователей: #13
Наумов Алексей
28 января 2015, 16:44
0
Если своими словами:
1. делаем xml схему
2. На ее основе через migx: а) создаем компонент, б) парсим классы, в) создаем таблицы
3. Так же через migx настраиваем интерфейс, настроек там много, но все делается визуально, он сохраняется как конфигурация
4. создаем TV с типом migxdb, указываем ему id конфигурации с прошлого шага, назначаем шаблону, и создаем ресурс с этим шаблоном

в примере по ссылке выше есть поле resource_id, по нему идет автоматическая привязка записей к текущему ресурсу, я всегда это использовал…

по идее после всего этого при редактировании ресурса будет доступна табличка с вашими записями, которые можно добавлять, удалять, изменять
Наумов Алексей
28 января 2015, 16:33
1
0
Весьма просто (если опыта нет) это можно сделать с использованием MIGx db.
И весь интерфейс в админке будет доступен (ну кроме функций экспорта, это придется дописать).

Почитай эту статью rtfm.modx.com/extras/revo/migxdb/migxdb.tutorials/migxdb.create-a-basic-gallery-management-from-scratch-with-migxdb и статьи рядом в этом разделе.
Наумов Алексей
28 января 2015, 16:23
+1
Серия и номер это ресурсы обязательно?

Лучше сделать отдельную таблицу под них, а запросы хранить в еще 1 таблице, структуру ее сделать типа:
дата, запрос, найден(да/нет), id найденого номера
Наумов Алексей
27 января 2015, 10:16
0
почему бы не сделать это в сниппете? Зачем городить такую штуку?

MySnippet:
$param = empty($_GET['param']) ? '' : $_GET['param'];
...
Наумов Алексей
21 января 2015, 16:33
+1
Мне кажется, что речь шла об «умеренном использовании» TV. Я лично пользуюсь, но в меру стараюсь. Что бы избежать излишнего их количества или сортировки по ним.

К примеру если нужно вывести список в 1000 строк и 20 столбцов, где каждый столбец — TV, будут проблемы, так как у нас 20 джойнов получится.

А если же эти 20 TV выводятся просто на одной странице для одного объекта — разницы в скорости вы не увидите.

В общем с умом подходим к делу.
Наумов Алексей
20 января 2015, 22:00
0
Спасибо! Как то странно )
Наумов Алексей
20 января 2015, 08:46
0
Окей, в принципе да. Я об этом тоже подумал.

Но в существующем коде возможности голосовать за объект с другим class нет, я верно понимаю:
github.com/bezumkin/Tickets/blob/master/core/components/tickets/processors/web/ticket/vote.class.php#L53
?

Тогда пишу свой код для поддержки голосования за другие типы объектов на сайте!
Наумов Алексей
18 января 2015, 13:36
0
Для слайдера сделай галерею с использованием MIGx. В случае с 3 изображениями загрузить их вручную вполне себе обыденная задача.
Наумов Алексей
17 января 2015, 17:45
0
Ну вот в форме:
<input type="hidden" name="resource_id" value="[[*id]]" />
resource_id — вы ставите id ТЕКУЩЕГО документа, на котором форма расположена

а в сниппете код:

$doc = $modx->getObject('modResource',array('id'=>$hook->getValue('resource_id')));
 
if (empty($doc)){
    $doc = $modx->newObject('modResource');
    $doc->set('createdby', $modx->user->get('id'));
}
else{
    $doc->set('editedby', $modx->user->get('id'));
}
построчно:
найти ресурс, который указан в поле resource_id
если он пустой — то создать новый ресурс
иначе — редактировать существующий.

отсюда и все идет…

кстати, если кто-то умный подменит и установит resource_id = 1, то будет преспокойно менять текст главной страницы вашего сайта =)

а вообще задача для новичка в MODx — сложная
Наумов Алексей
16 января 2015, 10:34
+1
В принципе я тоже согласен с добавлением пары полей.

Придумать можно много чего.
Например смело:
alt, title,tags (или для упрощения я бы назвал это group). Теги предполагают что их может быть несколько через запятую, все это несколько усложняет реализацию, а группа она группа =), одна, без деления запятыми.

Ну и вообще было бы прикольно добавить field1, field2, field3 просто на всякий случай).

И еще замечание, при генерации названия картинки из имени файла стоит сразу удалять расширение файла, а то руками приходится делать это.
Наумов Алексей
15 января 2015, 08:58
0
Сразу в голову пришло запихнуть куда-нибудь массив вида $sales[$resource_id] = $sale в виде json и проверять новое значение TV с ним.

Или для этих же целей можно использовать:

$prop = $modx->fromJSON($resource->get('properties'));
$old_sale = empty($prop['old_sale']) ? 0 : $prop['old_sale'];

... тут сравниваем скидку с $old_sale
...

$prop['old_sale'] = $resource->getTVValue('sale');

$resource->set('properties', $modx->toJSON($prop')))
$resource->save();


как то так…
Наумов Алексей
13 января 2015, 15:16
0
Модификатор date по сути и вызывает php функцию date.
Наумов Алексей
13 января 2015, 10:49
0
php.net/manual/ru/function.date.php

в табличке вторая строка снизу
Наумов Алексей
12 января 2015, 13:20
0
Если пункты меню не будут часто добавляться, то я делаю так:

[[pdoMenu?
	...
	&parents=`0` 
	&resources=`1,5,6,7,8`
        &sortby=``
	...
]]
resources — список id пунктов меню, пустой sortby — сортировать в том порядке, как указаны id.
Наумов Алексей
12 января 2015, 09:03
+1
Я использую параметр rowClass=`item-[[+id]]` или как то так он называется, что бы добавить к каждому пункту меню class=«item-123» (для примера), а потом прописываю эти классы в css файле.
Наумов Алексей
12 января 2015, 09:01
0
Я б наверное не рискнул =)

Хотя ради теста можно поставить MODx с минишопом и нагенерить нужное кол-во товаров, посмотреть, как будет открываться все =)
Наумов Алексей
05 января 2015, 10:27
0
У меня жуткий костыль, код разбросан в 10 местах, суть такая:
1. В низу страницы есть код скрытой формы, эта форма отображается при помощи fancybox при загрузке картинки.
2. В форме есть input type=file, загрузка файлов идет по одному
3. Сама форма отправляется на сервер через ajax (jquery forms)
4. На севере висит php скрипт файл сохраняет и выдает в ответ сформированный html код со ссылкой на картинку и маленьким превью.
Наумов Алексей
03 января 2015, 10:08
1
0
Я делал так:

1. Немного модернизируем js файл от тикетс (точнее делаем копию оригинального и указываем путь к нему в настройках), мой файл
fishspace.ru/assets/components/tickets/js/web/fish_default.js
мои изменения отмечены комментариями // FishSpace
2. в форму добавления комментария добавляем код ниже textarea
<div>
  	  <p>
  	    <a id="commentImagesUpload" href="#"><i class="icon-camera"></i>Прикрепить изображение</a>
  	  </p>
  	  <div id="commentImagesPanel"></div>
  	</div>
В момент написания комментария прикрепленные фотки вставляются внутрь commentImagesPanel (и соответственно у пользователя есть предпросмотр их), а в момент нажатия кнопки «написать комментарий» — html код с комментарями добавляется в textarea (это делает скрипт из п.1) и все отправляется на сервер.

3. На ссылку commentImagesUpload нужно повесить ajax загрузчик файлов, у меня так:
$('#commentImagesUpload').click(function(){
    ImageUpload(true);
    return false;
  });
функция ImageUpload у меня довольно навороченная и приводить ее код не буду. Суть ее в том, что бы показать всплывающее окно, которое позволит выбрать файл и загрузить его на сервер. На сервере скрипт загружает картинку, делает для нее превью, и возвращает ответ в json:

$html_code = '<a href="myimage.jpg"><img src="mythumb.jpg" />';
$result = array('success' => true, 'html' => $html_code);
return htmlspecialchars(json_encode($result), ENT_NOQUOTES);
В общем такой костыль у меня прикручен.