magr0s 26 января 2015 0 16
Здравствуйте. Вопрос следующего характера.
Существует достаточно большой проект на modx (офисное приложение) люди в нем работают. Подошло время сделать апдейт в связи с расширением возможностей изменением каких то функций и т.д.
Обычный перенос не годится так как на тестовой версии данные фейковые, а задеть существующие данные на реальном проекте нельзя.

Реально ли сделать перенос таким вот способом:
перенести все файлы проекта на сервер.
перенести в бд системные таблицы modx

Нормально ли будет после такого обновления принимать все новые чанки и сниппеты система?
На какие таблицы БД стоит обратить внимание?
16 комментариев
M
MisterN 26 января 2015г в 16:19 #
Дак ведь шут знает, что вы там своего написали и что пойдет нормально, а где будут проблемы. Проведите все-равно репетицию переноса на локалке. И вообще вас интересует апдейт самого вашего компонента или modx? Так-то обновите все, что у вас есть до совместимого с последней версией состояния и обновите cms. Но сайт на время все ж лучше закрыть.
Fi1osof1
Fi1osof 26 января 2015г в 16:38 #
Для начала уточните с какой версии MODX-а и на какую собираетесь переноситься.
m
magr0s 26 января 2015г в 17:39 #
версия не меняется…
обновляется только файлы приложения которое работает на CMF MODx 2.3.2-pl. Т.е. системные файлы не затрагиваются вообще.
Нужно обновить только собственный код + добавить новые чанки/сниппеты.
Все чанки/сниппеты в файлах и подключены как статика.
Вот и думаю могу ли я взять просто перекинуть файлы на сервер и скопировать таблицы
modx_site_htmlsnippets
modx_site_snippets

и не парится с ручным подключением файлов
Нормально ли это подтянется и будет показываться нормально в админке.
Если так можно сделать то возможно есть подводные камни какие то.
И какие таблицы стоит переносить… Те что я написал выше это чанки и сниппеты
Fi1osof1
Fi1osof 26 января 2015г в 17:42 #
1. Создаешь копию боевого сайта, выполняешь как тебе кажется, и смотришь работает или нет. Если работает, то делаешь это же и с боевым (не забываем про бекапы).
2. Просто обновление БД не поможет, так как если ли бы чанки не были статическими, код их брался бы из бд, а так берется из файлов, так что таким чанкам файлы нужны, а не записи в БД.
3. git в помощь!
m
magr0s 26 января 2015г в 17:51 #
2. Просто обновление БД не поможет, так как если ли бы чанки не были статическими, код их брался бы из бд, а так берется из файлов, так что таким чанкам файлы нужны, а не записи в БД.
ну копия файла все равно помещается в бд… ну даже не в этом дело… файлы есть…
хочется просто взять скопировать с сервера разработки папку с проектом на рабочий, перенести 2 таблицы и больше ничего делать :)
ну будем пробовать
3. git в помощь!
давно пора но времени нет
M
MisterN 26 января 2015г в 21:48 #
Я вообще файлы в своем компоненте через ide правил. Но бекап == страховка.
А что, много сниппетов?
m
magr0s 26 января 2015г в 21:52 #
Я вообще файлы в своем компоненте через ide правил. Но бекап == страховка.
А что, много сниппетов?
штук 150, там не только сниппеты но и чанки.

да все это понятно, IDE .GIT и т.д.

но зачем парится если можно найти легчий путь… сейчас вобщим сделаю отпишу о результате :)
M
MisterN 26 января 2015г в 21:56 #
«штук 150» от уж прилично так прилично.
Fi1osof1
Fi1osof 26 января 2015г в 22:35 #
Потому что ни чанки, ни сниппеты не имеют возможности быть расширенными (ну и про другие минусы помним). Потому 100, 200 и даже 300 чанков/сниппетов на MODX-проекте — это не редкость.
m
magr0s 27 января 2015г в 01:48 #
ну к примере генератор таблиц имеет
1. сам сниппет
2. общий чанк table.tpl

<table .... >
[[+table.thead]]
<tbody>
[[+table.rows]]
</tbody>

3. чанк tablethaed.tpl
4. чанк tablerow.tpl

3 и 4 чанки для таблиц разные ну и табличек пока что штук до сотни но толи еще будет…
Fi1osof1
Fi1osof 27 января 2015г в 14:55 #
Ага. И ни циклов, нифига. В Смарти это запросто:
<table>
    <tbody>
        <tr>
            <th>...
            ...</th>
        </tr>
        {foreach $rows as $row}
            <tr>..........</tr>
        {/foreach}
    </tbody>
</table>
m
magr0s 28 января 2015г в 10:27 #
Ага. И ни циклов, нифига.
почему?
под это дело есть сам сниппет генератор с набором выборок :)

да безусловно смарти крутая штука я на него уже давно обратил внимание но далее знакомство не пошло

под какой версией МОДх смарти работает?
Fi1osof1
Fi1osof 28 января 2015г в 14:37 #
почему?
под это дело есть сам сниппет генератор с набором выборок :)
Именно, сниппет, а не сам чанк или MODX-шаблон. Для оформления одного блока таблицы 4 сущности (сниппет и три чанка). Напомню, что все это — объекты. То есть помним и про нагрузку.

под какой версией МОДх смарти работает?
Смарти в MODX Revolution с самых истоков. Вся админка его на ней работает. То есть и modxSmarty можно устанавливать на любую версию MODX Revolution (но держать не ктуальные версии движка — не правильно).
m
magr0s 27 января 2015г в 03:12 #
Как и обещалось отписываю о ходе обновы

Суть задачи: Есть 2 сайта рабочая версия (РВ) и тестовая версия (ТВ). На ТВ ведутся разработки приложения, тестируются, одобряются заказчиком и уж потом ставятся на РВ. Все чанки и сниппеты да и вообще максимально все что можно хранится в фалах и подключено как статика. До сегодня были обновления в рамках исправления багов или фиксов интерфейса, оптимизация и т.д. и решалось это все копированием файлов из ТВ на РВ.
Сегодня созрела глобальная обнова по расширению функционала и стала задача обновить систему в «ленивом» режиме без ручной регистрации всех новых сниппетов. Системные файлы MODx не менялись и вообще к самому движку это не имеет отношения. Обновление нужно было провести так что бы не затронуть данные РВ поскольку на ней реально работают люди.

Процесс:
1. Забекапился.
2. Скопировал все (касающиеся нашего проекта) папки с файлами с ТВ на РВ.
3. Взял базу с ТВ и выгрузил таблицы БД
*_site_htmlsnippets — здесь записаны все чанки
*_site_snippets — здесь записаны все сниппеты
*_site_plugins — здесь плагины
Ресурсы не брались поскольку в РВ версии существует лента новостей которая создает Ресурс для каждой новости. Поэтому ID ресурсов совпадать точно не будут
Отсюда первая проблема, в коде использовались 2 ссылки на ресурс вида [[~1]] поправил руками
4. Залил таблицы на РВ
5. Добавил новые таблицы в БД
7. Очистил кеш через фтп.
8. Зашел в админку нашел проблему.
Не все чанки сниппеты были видны. Причина в том что не перенес категории.
Возврат на ТВ и вытащил еще 2 таблицы
*_categories
*_categories_closure

Все заработало и все показывает. Обнова прошла достаточно быстро и с экономила время. Ну дольше бы пришлось регать все руками.

Вывод лично для себя. При обновах проектов где нужно закинуть много чанков и сниппетов, вполне пригодная для работы схема.
Fi1osof1
Fi1osof 27 января 2015г в 14:03 #
Как это происходит у нас? Два варианта.
Вариант 1.
1. В ТВ версии фиксируем все изменения в гите git add .; git commit -am «comment»;
2. На РВ накатываем изменения git pull;
3. Очищаем кеш.

Вариант 2.
Плагин newDesign (должен вызываться раньше, чем плагин modxSmarty).
Делается копия скина Смарти-шаблона сайта с новым названием. Когда плагин активирован, включается другой скин сайта и кеш-префикс, и разработчик работает на боевом сайте, но никакие изменения в шаблонизации сайта не могут быть увидены простыми посетителями. Какой-нибудь новый процессор в системе они тоже никак не увидят. Таким образом на сайте ведется реальная работа с реальными данными, но сайт для неадминов работает в обычном режиме.
Когда работа выполнена, проверена и готова к запуску, просто в системной настройке меняется название используемого шаблона на новый и все.
m
magr0s 27 января 2015г в 18:49 #
Вариант 2.
вот это замечательно… но уже поздно наверное… а на будущее самое то…
Авторизуйтесь или зарегистрируйтесь (можно через соцсети ), чтобы оставлять комментарии.