Перенести статьи с Joomla перенести на Modx EVO

Помогите, подскажите пожалуйста
Необходимо статьи с сайта который на Joomla перенести на MODX EVO
Предоставляю скрины обеих БД
Василий173
28 марта 2017, 19:19
modx.pro
1 296
0

Комментарии: 6

Eugene Generalov
29 марта 2017, 10:55
0
Я не думаю что у кого-то найдется свободное время чтоб Вам тут написать безвозмездно скрипт переноса. Тем более на MODX Evo )
Хотя там не так много писать кода.
    Дмитрий
    29 марта 2017, 11:21
    0
    На Revo — есть. Для Evo — увы.
    и кода там писать реально всего ничего
      Василий173
      29 марта 2017, 12:00
      0
      Ну помоги пожалуйста, если не трудно
        Дмитрий
        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, 13:50
          0
          А если переносить на Revo, не можете подробнее описать действия по переносу?
            Дмитрий
            29 марта 2017, 14:13
            0
            Да тоже самое:
            0. Импортировать таблицы из сайта на Joomla в бд с сайтом на MODX.
            1. Составить запрос к БД с присоединением всех нужных параметров (категории, рейтинги, просмотры и т.п.)
            2. Выполнить запрос с помощью $modx->query()
            3. Обработать запрос, заполнив массив данными
            4. С помощью процессора MODX resources/create создавать ресурсы из значений массива
            5. Профит. Вы восхитительны.
            Примерный код выше.

            Я вам даже больше скажу. Вы можете сбыдлокодить и тупо скопировать значения из таблицы в таблицу, минуя процессоры. Это не тру, так делать нельзя, но оно работает. Я сталкивался с такими вещами. Очень многие умники любят так делать.
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      6