Fi1osof 12 июля 2015 1 4
На стороннем магазине столкнулся вот с таким случаем: некоторые товары (которые раньше были заведены как тип Товар) были переделаны в обычные документы, то есть их тип ресурса был изменен на Документ. Вот этого нельзя делать. Основная причина заключается в том, что когда создается новый документ-товар, для него создается сопутствующий объект ShopmodxProduct. И этот допобъект не только содержит необходимые данные, но и является главным критерием для отличия товаров от основных документов, то есть в процессоре web/catalog/products/getdata таблица товаров джоинится к выборке и если для документа есть запись в этой таблице, значит этот документ — товар. По этой причине на данном сайте документов-товаров сейчас меньше десятка, а выборка товаров возвращает 5 десятков товаров. Табличный редактор товаров тоже видит их пять десятков.

Для тех, кто все-таки эту ошибку допустил, публикую скрипт для чистки (удаления лишних записей товаров). Имейте ввиду, что записи с этими товарами так же удалятся из заказов.

<?php 
print '<pre>';
ini_set('display_errors', 1); 

$q = $modx->newQuery('ShopmodxProduct');

$q->innerJoin('modResource', 'Resource');

$q->where(array(
    "Resource.class_key:in" => array("modDocument", "modWebLink"),
));

print $modx->getCount('ShopmodxProduct', $q); 

foreach($modx->getIterator('ShopmodxProduct', $q) as $product){
    $product->remove();
}
4 комментария
guru881
guru88 12 июля 2015г в 14:16 #
Привет, Николай! Сейчас собираюсь писать редактор товаров на frontend'е (Полностью ajax для ускорения работы). Все же через админку это делать нереально, клиенты постоянно ругаются. Как считаешь, это рентабельная идея или лучше потратить время на проработку адмики? С моим знанием extjs времени займет очень много, и не все скорее всего реализую.
Fi1osof1
Fi1osof 12 июля 2015г в 14:23 #
Я не знаю какую ты цену берешь и за сколько времени ты сделаешь для них то, что они хотят, потому ничего не могу тебе сказать на счет рентабельности.
На счет не все реализуемо: странное предположение. Мне совсем не ясно что можно во фронте сделать такого, чего нельзя сделать в бэкэнде. Не нравится родное редактор документов — напиши свой. Плюс ко всему во фронте многие элементы придется писать самому с нуля, а в админке практически все необходимое есть.
Но это так, мысли вслух. Разговор ни о чем, так как нет четких задач, а одни рассуждения. Но и в конкретику не готов вдаваться сейчас. Обсуждение написания или ненаписания альтернативы админки — слишком большая тема, чтобы на нее кучу времени тратить и бесплатно обсуждать.
guru881
guru88 12 июля 2015г в 14:30 #
Видимо вопрос был не корректный) просто хотел услышать твое отношение к расширение админки через фронт.
А про «не все реализуемо», это конкретно мной не все, я достаточно слабо знаю extJS, и времени затрачу больше, хотя я тоже считаю, что через апи админки это правильнее сделать.
Fi1osof1
Fi1osof 12 июля 2015г в 14:37 #
Мое мнение однозначное: в админке всем подряд делать нечего. Пустите меня в админку с ограниченными правами и с большой долей вероятности я смогу поднять права доадмина. Потому к вопросу переноса части функционала во фронт чисто по соображениям безопасности я ничего против не имею. Здесь же вы публикуете новые документы через фронт, а не через админку.
Но если функционал требуется именно для сотрудников компании и ни для кого больше, то любой функционал надо писать в админке. Это мое ИМХО. Не знаем ExtJS? Учим. Тем более, что документация по ExtJS офигенная, плюс еще и наши гонконгские товарищи опубликовали примеры под MODX, о чем я совсем недавно публиковал заметку.

А вообще все это обсуждение в данном топике — дичайший оффтоп. Хочется продолжить обсуждение? — публикуем отдельный топик.
Авторизуйтесь или зарегистрируйтесь (можно через соцсети ), чтобы оставлять комментарии.