Александр Туниеков

Александр Туниеков

С нами с 19 декабря 2015; Место в рейтинге пользователей: #15
Александр Туниеков
16 июля 2023, 16:47
0
Если нельзя сделать платную установку, значит надо делать проверку «лицензии» после установки, если её нет — блокировать работу компонента.
Чет не нравиться мне этот вариант. Проверку лицензии можно отключить. Как впрочем и блокирование нежелательных магазинов. Но тут все равно надо делать сайт с продажей «лицензии» и смысл продавать только лицензию если можно весь пакет продавать.
Поскольку речь идёт о движке, пользователь захочет иметь возможность быстро реализовать какой-то функционал, типа магазина, блога, лэндинга. Возьмём, например, MODX3, я делал на нём сайт визитку, как бы самый простой вариант сайта, для реализации мне понадобились: визуальный редактор, Migx, FormIt, AjaxForm, pdoTools.
Эти пакеты в минимальной конфигурации можно сделать на уровне ядра. Я думаю для допмодулей надо компоненты посложнее делать. А аналоги этих включить в стандартную поставку. Работы много конечно и один я наверно не справлюсь, но это не так уж и много работы. Модулей ноде много и много чего уже реализованно. Все с нуля писать не надо.
Второй момент, если ты делаешь CMS похожую на Modx, то, вероятно, рассчитываешь, что те, кто используют Modx, заинтересуются твоей разработкой, НО у тебя Node.JS, что совсем не то же самое, что PHP, для многих это будет проблемой. Чем твоя CMS будет похожа на Modx?
Я не планирую прям перетягивать с модекс. Я подсел на модекс из-за низкого порога входа. Просто вставляешь в html сниппеты прописываешь им параметры и получаешь нужный функционал. Вот чем охота повторить модекс. Чтобы для того чтобы сделать достаточно функциональный сайт нужно минимум знаний и делается сайт очень быстро. С минишоп2 простой магазин можно развернуть за день. И что еще важно его можно в каких-то пределах легко кастомизировать с минимальными знаниями и можно допиливать функционал постепенно разбираясь что в нем как устроенно изнутри.
То есть, я хочу CMS с более-мение современной начинкой, но чтоб в ней было начать работать также просто как и в модекс. Я хочу привлекать новичков и так же чтоб CMS была удобна для профессионалов.
Правда чтоб вставлять сниппеты в код надо парсить html и чанки, а это медленней чем компоненты реакт или vue. Но в это легче вникнуть чем в vue. То есть, основа CMS html шаблоны и чанки, js сниппеты и модель вариэбле — аналог tv.
Александр Туниеков
13 июня 2023, 12:17
0
А как это может быть монеторизовано. За эксклюзивные блоки и темы оплата?
Александр Туниеков
13 июня 2023, 12:09
0
Сталкивались, но редкость и не понятно откуда ноги растут. Вроде конфиг компонента из сесии не подгружает. Проследите за сесиями. Может они меняются как-то при прогрузке странице одна а при ajax другая. Или что-то другое.
Александр Туниеков
13 июня 2023, 12:05
0
Хм… я как-то ожидал конструктор сайтов как тильда. Установил и блоки натыкал на сайте. Но задача конечно сложная… Вообще даже не тестировал. А привязка конкретно к блогу, интернет-магазину жесткая? Произвольный сайт из блоков можно собрать? Например сообщество MODX или сообщество майнкрафт?
Александр Туниеков
08 июня 2023, 18:45
0
в migx при попытке содать таблицы в базе вылетает ошибка
Fatal error: Class 'xPDOGenerator_mysql' not found in C:\OSPanel\domains\modx3.loc\core\components\migx\model\migx\migxpackagemanager.class.php on line 3
Александр Туниеков
08 июня 2023, 18:38
0
Ага. А вот как мне быть? Мне нужно чтоб класс таблицы я мог указать прямо в параметрах сниппета. То есть имя класса в сниппете есть только в виде переменной строки.
$class = 'ModExtra\Model\ModExtraItem';
$class::class;
Так не работает. Конечно можно использовать eval
$class = 'ModExtra\Model\ModExtraItem';
eval('$class1 ='. $class.'::class;');
if($item = $modx->getObject($class1,1)){
    print_r($item->toArray());
}

Но eval как известно зло. Или Использовать $xpdo->loadClass Но его не изветно когда отрубят.
Так как быть?
Александр Туниеков
08 июня 2023, 18:02
0
Так а что ты проверял? (в обществе вроде по правилам использовать ты)
Я проверяю
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);

$class = 'ModExtra\Model\ModExtraItem';
$class::class;
ошибка: Fatal error: Dynamic class names are not allowed in compile-time ::class fetch in

Работает такой код:
{'!pdoResources' | snippet : [
   'class'=>'ModExtra\Model\ModExtraItem',
   'sortby'=>[
       'ModExtraItem.id'=>'ASC'
   ]
]}
Это работает только не понятно будет ли дальше работать.
\core\components\pdotools\src\Fetch.php вызывает
\core\vendor\xpdo\xpdo\src\xPDO\Om\xPDOQuery.php
public function __construct(& $xpdo, $class, $criteria= null) {
        parent :: __construct($xpdo);
        if ($class= $this->xpdo->loadClass($class)) {
            $this->_class= $class;
            $this->_alias= $this->xpdo->getAlias($this->_class);
            $this->_tableClass = $this->xpdo->getTableClass($this->_class);
            $this->query['from']['tables'][0]= array (
                'table' => $this->xpdo->getTableName($this->_class),
                'alias' => & $this->_alias
            );
            if ($criteria !== null) {
                if (is_object($criteria)) {
                    $this->wrap($criteria);
                }
                else {
                    $this->where($criteria);
                }
            }
        }
    }
\core\vendor\xpdo\xpdo\src\xPDO\xPDO.php
/**
     * Load a class by fully qualified name.
     *
     * The $fqn should in the format:
     *
     *    dir_a.dir_b.dir_c.classname
     *
     * which will translate to:
     *
     *    XPDO_CORE_PATH/om/dir_a/dir_b/dir_c/dbtype/classname.class.php
     *
     * As of xPDO 3.0, the use of loadClass is only necessary to support BC
     * with older xPDO models. Auto-loading in models built with xPDO 3.0 or
     * later makes the use of this method obsolete.
     *
     * @param string $fqn The fully-qualified name of the class to load.
     * @param string $path An optional path to start the search from.
     * @param bool $ignorePkg True if currently loaded packages should be ignored.
     * @param bool $transient True if the class is not a persistent table class.
     *
     * @return string|boolean The actual classname if successful, or false if
     * not.
     * @deprecated since 3.0
     */
    public function loadClass($fqn, $path= '', $ignorePkg= false, $transient= false) {
loadClass вроде deprecated а закомментировал весь блок с if ($class= $this->xpdo->loadClass($class)) { сайт ушел в аут. Чет похоже разработчики MODX3 недодумали :-)
Александр Туниеков
08 июня 2023, 16:37
0
Черт. Ввязался в обсуждение. Скорее всего не сработает. неймспейс это конструкция языка php а не текстовая переменная. Но чтоб точно сказать придется сейчас модекс 3 ставить пдотулс и модеекстра и пробовать :-(
Александр Туниеков
08 июня 2023, 15:38
0
Возможно. Но тут 1 вопрос имя класса текстовая переменная например
$class = 'MODX\Revolution\modResource'
Как текстовую переменную преобразовать в неймспайс? Просто не нашел этот момент в инете.
use $class
Насколько я понял точно нельзя. А
$class:class

можно?
Александр Туниеков
08 июня 2023, 15:05
0
Я сказал часть функционала не работает и не будет работать. Например попробуйте через новый migx создать пакет и таблицу в базе данных. Когда я тестировал не работало.
А в pdoTools код типа
{'!pdoResource' | snippet : [
   'loadModels'=>'modextra',
   'class'=>'modextraItem',
]}
Работать наверно не будет. У меня сейчас modx3 не установлен и точно сказать не могу работает или нет. Но скорей всего в modx 3.3 такой код не будет работать.
Александр Туниеков
08 июня 2023, 14:15
0
Скорей всего migxdb, pdotools и getTables никогда не смогут нормально работать в MODX3. В MODX3 внесли изменение Перед тем как работать с объектами их необходимо подключить в скрипте через use. Например
use MODX\Revolution\modResource;
Но в MODX REVO можно использовать конструкцию вида
{'!pdoResource' | snippet : [
   'loadModels'=>'modextra',
   'class'=>'modextraItem',
]}
И работать с любой таблицей базы данных. Просто указываешь класс таблицы в настройках сниппета.
Так вот, по идее, чтоб работать с какой-то таблицей в модекс 3 надо прописать вызов ее класса use в начале сниппета. Но это не возможно. Сниппеты и код pdoTools, migx и getTables при запуске кода не знают какой класс им надо подключать. Класс прописан в настройках в виде текста. А в php запустить use какая-то переменная нельзя. Сейсас в MODX 3.0.3 это еще работает, но в MODX 3.3 обещают отключить метод modx->loadClass через который сейчас вызов произвольного класса через текстовую переменную его названия еще работает.

Вообщем существенная для меня часть возможностей migx и pdoTools в MODX3 накроется. Я разбирался в этой теме полгода назад когда хотел перевести getTables на MODX3 и возможно еще что-то не понял. Не судите строго если ошибся. Но по моему для меня переход на MODX3 не имеет смысла. Вроде как часть нужного фуункционала в будущем просто не будет работать.
Александр Туниеков
08 июня 2023, 13:41
0
Есть те, кто делают сайты, а есть те, кто развивает бэк, и их осталось единицы…
Бек или админку? Было бы что в админке развивать… Ресурс, чанк, сниппет, пользователя и т.д. можно создать и отредактировать и что еще надо то?
Александр Туниеков
08 июня 2023, 12:32
0
MODX для тех, кто творит, WP для тех, кто просто делает, это отличие многого стоит
Модекс крут :-). Я только на модекс и работаю. Ни ларавел ничто другое мне ни зашло. Просто потому что от старта начала программирования до рабочего сайта в модекс минимум телодвижений. А на ларавел (Я могу ошибаться) на старте нет админки и пользователей.Смысл самому каждый раз писать админку и процедуры аутентификации??? Модекс крут потому что многое стандартно используемое уже есть и можешь сосредоточиться на конкретно логике своего приложения. В том числе круто что модекс почти не ограничевает в том какое приложение ты хочешь написать. Мы например пишем управление производством.
Аналогов по соотношению гибкость-скорость разработки я не знаю.
Александр Туниеков
11 мая 2023, 18:02
0
Можно getTables использовать. https://modstore.pro/packages/utilities/gettables
Сколько использовал тупняков при виборке из базы не замечал. В пределах секунды грузиться.
Если устроит, то напишу как использовать.
Александр Туниеков
05 мая 2023, 12:19
0
Странно. Вроде обновления в модсторе бесплатные. Было бы хорошо если была бы какая-то процедура разрешения конфликтов. Например написать тему с отзывом об авторе компонента. Только конечно пока заморачиваться никто не хочет.
Александр Туниеков
04 мая 2023, 20:36
0
офтоп. а за что от дмитрия минусы? мешают ориентироваться.

ИИ круто и в будущем поможет снять часть рутины, но уметь правильно ему вопросы задавать мешает. Вообще хотелось бы чтоб был в контексте твоих задач и понимал с полуслова :-)
Александр Туниеков
21 апреля 2023, 12:51
0
Поиск делает OpenSearch в своем индексе(базе) и соответственно сайт должен загрузить на него данные по которым поиск идет. На 40т товаров данные грузятся 5 минут. Если поменять хостинг, то соответственно минут 5-6 и не будет работать фильтр. Надо буде перезапусть создание индекса вручную
Александр Туниеков
21 апреля 2023, 12:39
0
нужно ли в будущем обновления
Ну думаю можно обновлять OpenSearch. Пока совместимость не сломают. Хотя врядли в ближайшем будущем сломают. Я не обновляю пока. Еще даже не разбирался как обновлять.
Александр Туниеков
21 апреля 2023, 12:32
0
OpenSearch бесплатный opensource.
Кроме единоразовой оплаты за модуль, еще будут оплаты?
Нет.
Хотелось бы еще увидеть интеграцию с SeoFilter.
Пока в планах. Но насколько я смотрел там ничего сложного нет. Просто немного переписать js SeoFillter.

Хотя есть одна мысль которая не дает покоя, если клиент на вашем хостинге, то вы подключаете ему этот модуль, а если он хочет уйти на свой хостинг, вы же не будете ему предоставлять место для хранения фильтров на vps.
Ну он не будет ничего загружать на мой хостинг и соответственно место не будет занимать. А к чему вопрос?