Дмитрий

Дмитрий

С нами с 16 декабря 2015; Место в рейтинге пользователей: #47
Дмитрий
01 апреля 2017, 11:24
0
В ссылках написано всё. Всё. Кроме последнего вопроса. Но мне кажется, что нет, не планируется. Если весь мир до сих пор упорно использует getPage, Wayfinder, getResources, о чем может вообще речь идти?
Дмитрий
01 апреля 2017, 02:58
0
Ссылки почитайте. Там все написано.
Дмитрий
31 марта 2017, 23:29
4
+4
1. Вводная статья о том, что такое Fenom и зачем оно надо
2. Статья о том, как работать с файловыми элементами
Серьезно, после освоения этого инструмента делать сайты на MODX стало еще проще. И код стал куда красивее. Идиотские однообразные простыни шаблонов с одним отличием сменились на шаблоны с наследованием, все чанки и собственноручно написанные сниппеты/модификаторы хранятся в файлах, их можно использовать с Git, а это вообще просто потрясающе! Теперь никаких утерянных чанков, все всегда можно откатить и радоваться жизни. Прелесть. Если до сих пор никогда не использовали Fenom — потратьте пару дней и познайте дзен реально крутой разработки.
Дмитрий
31 марта 2017, 22:40
+1
Иногда приходится с чем-то смириться.
Дмитрий
31 марта 2017, 11:13
0
Все в таком случае теряют больше, чем получают. Заказчик — год ждет результата. Разработчик — работает за еду, как вы верно подметили, а студия за этот год получает ужасно смешные деньги от этого проекта. Профита вообще никакого.
Дмитрий
31 марта 2017, 10:50
0
Немножко убрал название сайта. Теперь нужно погуглить, чтобы найти. В статье все-таки есть некоторый объем кода, и хотелось показать его в деле. А без кода и демонстрации это получаются и вправду, советы от капитана.
Дмитрий
29 марта 2017, 14:13
0
Да тоже самое:
0. Импортировать таблицы из сайта на Joomla в бд с сайтом на MODX.
1. Составить запрос к БД с присоединением всех нужных параметров (категории, рейтинги, просмотры и т.п.)
2. Выполнить запрос с помощью $modx->query()
3. Обработать запрос, заполнив массив данными
4. С помощью процессора MODX resources/create создавать ресурсы из значений массива
5. Профит. Вы восхитительны.
Примерный код выше.

Я вам даже больше скажу. Вы можете сбыдлокодить и тупо скопировать значения из таблицы в таблицу, минуя процессоры. Это не тру, так делать нельзя, но оно работает. Я сталкивался с такими вещами. Очень многие умники любят так делать.
Дмитрий
29 марта 2017, 12:59
0
Напиши плагин на событие OnPageNotFound, который будет проверять, какой адрес запрошен и делать редирект на эту страницу.
Про плагины, события и маршрутизацию на этом ресурсе информации полно.
Дмитрий
29 марта 2017, 12:44
2
+1
Примерно так это выглядит для Revo (взял из одного проекта, и не проверяя подкорректировал).
<?php
set_time_limit(500);
$modx->setDebug(E_ALL & ~E_NOTICE); // sets error_reporting to everything except NOTICE remarks
$modx->setLogLevel(modX::LOG_LEVEL_DEBUG);
$result = $modx->query("SELECT k2.id,k2.title, k2.fulltext, k2.introtext, k2.created, k2.hits, k2.alias, FROM `joomlasite_k2_items` k2";
if (!is_object($result)) {
    return 'No result!';
} else {
    while ($row = $result->fetch(PDO::FETCH_ASSOC)) {
                $data['pagetitle'] = $row['title'];
                $data['content'] = $row['introtext'];
                $data['template'] = 4;
		$data['context_key'] = 'web';
                $data['createdon'] = strtotime($row['created']);
                $data['tvs'] = true;
                $data['tv43'] = $row['hits'];
                $response = $modx->runProcessor('resource/create', $data);
                if ($response->isError()) {
                    html .= ($modx->error->failure($response->getMessage())) . '<br />
</br>?';
                } else {
                    $object = $response->getObject();
                    $html .= "
Был обновлен документ с ID {$object['id']}";
                }
}
return $html;
Но дело в том, что в Revo есть процессоры, а в Evo, вроде бы (последний раз работал с Evo в 2014), нет.
А смысл простой — взять нужные данные из таблиц Джумлы, завернуть их в массив и вставить с помощью какой-то матери в таблицу для Evo. Если погуглить, то можно найти такую ссылку. Осталось только присобачить пример выше к примеру по ссылке и добавлять данные как-то так, судя по статье:
// где $new_document это массив с данными из базы.
$newDocId = $modx->db->insert( $new_document, $modx->getFullTableName('site_content') );
Дмитрий
29 марта 2017, 11:25
1
+2
Да, конечно. Я рассматриваю пример в вакууме, без человеческого фактора типа: «ой а давайте в шапке шрифт больше сделаем, мы же солидная компания, нас должно быть видно хорошо. И еще почему вот здесь фотографии вот так листаются? Стандартный скрипт? А его можно поменять? Хочу, чтобы было как вот здесь. Это же не сложно, да? А можно еще, чтобы когда клиент заказ делает, чтобы сразу в почте были все его данные, не хочу в админку лазить постоянно, я не понял, как ей пользоваться»
Дмитрий
29 марта 2017, 11:21
0
На Revo — есть. Для Evo — увы.
и кода там писать реально всего ничего
Дмитрий
28 марта 2017, 19:48
0
docs.modx.pro/components/hybridauth/snippets/hybridauth
Ну, вот, поковыряйтесь. Может что-то получится.
Я правда, ни разу не пробовал, поэтому даже не могу сказать ничего.
Дмитрий
28 марта 2017, 19:07
0
Landing page с реальными отзывами? Такие существуют?
Но если по делу, то можно подумать об интеграции с социальными сетями. Типа, кликнул пользователь — авторизация через соц.сети и в получили его аватарку. Вроде так должно работать, но не уверен. Ну или супер быдлокод вариант — сделать форму с загрузкой файла, и прописывать путь до файла в extended полях тикета
Дмитрий
28 марта 2017, 12:32
+1
Если реально делать минимум, то это просто установить минишоп, настроить шаблоны категорий и товаров, корзину, офомление заказа. Это день работы максимум. Если делать хорошо, то тогда сделать все шаблоны и чанки на Fenom, сделать наследование шаблонов и все такое, то тут дня два уже максимум. То есть, в 10 000 уложится можно без проблем.
Дмитрий
28 марта 2017, 01:30
+1
А что мешает связать Office и Tickets, например?
Дмитрий
27 марта 2017, 13:52
0
Ну да, но это справедливо для создаваемых элементов. Но для обновляемых скорее всего нужно пересоздать URL, если нужно.
Дмитрий
27 марта 2017, 11:32
+2
Плагину RobotsBuilder приоритет задавали?
Дмитрий
27 марта 2017, 11:31
0
Что-то типа такого:
$title = $page->get('pagetitle');
    $alias = $page->cleanAlias($title);
    $aliasPath = $page->getAliasPath($alias);
    $response = $modx->runProcessor('resource/update',array(
            'id' => $page->get('id'),
            'pagetitle' => $title,
            'context_key' => 'web',
            'alias' => $alias,
            'uri' => $aliasPath
        )
    );
Дмитрий
27 марта 2017, 11:27
+1
Ну, или почитайте это