Обновление до 5.6.1.2

Любая помощь по установке/настройке/модификации concrete5

Обновление до 5.6.1.2

Сообщение iDom » 23 мар 2013, 15:12 ,  »  Сообщение:#1

Добрый вечер.
Собрался с мыслями и подумал о том что неплохо было бы обновить цмс пока она сильно не обросла моим быдло-кодом.
Но перед сим замечательным действом хотел уточнить, шаблоны цмс и спецоформления блоков придётся переделывать?
iDom
 
Сообщения: 31
Зарегистрирован: 18 ноя 2012, 11:12

Re: Обновление до 5.6.1.2

Сообщение guyasyou » 23 мар 2013, 17:13 ,  »  Сообщение:#2

Если вы их переопределяли (override вроде) то нет, обновление не затронет ваши изменения. Ну а если вы правили прямо внутри ядра, то обновление сведет все к стандарту.
www.pure-web.ru - fullstack разработка сайтов и веб-приложений
Аватара пользователя
guyasyou
Администратор
 
Сообщения: 559
Зарегистрирован: 05 янв 2012, 12:29
Откуда: Новосибирск

Re: Обновление до 5.6.1.2

Сообщение iDom » 23 мар 2013, 18:17 ,  »  Сообщение:#3

"Мысли в слух":
В каком смысле переопределяли? Что вы имеете ввиду под словом override? Например в Java вы делаете оверрайды внутри наследованного класса и если вы перепишете класс родитель без изменений вида входных и выходных параметров для методов, то естественно код переопределённый в наследнике будет работоспособен (это если совсем грубо прикидывать).
На сколько я понимаю всё обновление заключается в том что были переписаны основные классы модели и хелперы движка. То-есть если я что либо менял вне директории concrete то все изменения сохранятся.
iDom
 
Сообщения: 31
Зарегистрирован: 18 ноя 2012, 11:12

Re: Обновление до 5.6.1.2

Сообщение guyasyou » 23 мар 2013, 19:06 ,  »  Сообщение:#4

Обновление заключается в полной замене папки concrete на новую версию. Все изменения там будут стерты к дефайлту.

Да, переопределение это о том. тоесть вы выводите изменяемый скрипт за пределы папки concrete(выше его) и назначаете класс который расширяет родительский класс в папке concrete.
пример: Я вношу изменения в файл C:\WebServer\www\concrete\core\helpers\file.php (класс там такой: class Concrete5_Helper_File { })
1) я создаю одноименный файл C:\WebServer\www\helpers\file.php
2) пишу такой класс: class FileHelper extends Concrete5_Helper_File { }

Но название FileHelper помоему не с потолка взято. я подсматриваю названиея дочернего класса в C:\WebServer\www\concrete\helpers\file.php. Посмотрите там, все файлы там есть, классы прописаны, но они пустые- можно просто их копернуть и вынести за concrete. А уже в этом классе добавляете свою функцию, или копируете орогинальную из ядра и переделываете.

Вот мой вынесенный file.php
Код: Выделить всё
<?php
defined('C5_EXECUTE') or die("Access Denied.");
class FileHelper extends Concrete5_Helper_File {

   public function sanitize($file) {
      // $file = preg_replace("/[^0-9A-Z_a-z-.\s]/","", $file); // pre 5.4.1 allowed spaces
      $file = preg_replace(array("/[\s]/","/[^0-9A-Z_a-z-+.]/"),array("_",""), $file);
      return trim($file);
   }
   
}


Таким же образом можно выносить блоки из ядра (у меня без переопределения классов робит) или из packages. Так как обновления аддонов также стирают изменения в папке packages.
P.S. Кеш очистите, а то проблемы бывают из-за него после переопределения.
www.pure-web.ru - fullstack разработка сайтов и веб-приложений
Аватара пользователя
guyasyou
Администратор
 
Сообщения: 559
Зарегистрирован: 05 янв 2012, 12:29
Откуда: Новосибирск

Re: Обновление до 5.6.1.2

Сообщение iDom » 23 мар 2013, 23:45 ,  »  Сообщение:#5

Вообщем я недождался вашего ответа. Я прикинул куда сам вносил изменения, поскольку сайт мне скажем так внаследство остался, сделал бекап файлов и базы, и локально через админку обновился. Вроде всё работает, вот только вопрос у меня в /updates/ появилась следующая история "/concrete5.6.1.2_updater/concrete/" и из неё подгружается jQuery и несколько CSS файлов в исходный код разметки страниц сайта. Хотя если верить движку то он пашет на последней версии, то есть стало быть в папке /concrete/ лежит всё самое нужное, но в ней ничего не поменялось и теперь походу новые классы лежат именно в "/concrete5.6.1.2_updater/concrete/". Таки я что-то сделал не так?
iDom
 
Сообщения: 31
Зарегистрирован: 18 ноя 2012, 11:12

Re: Обновление до 5.6.1.2

Сообщение iDom » 23 мар 2013, 23:49 ,  »  Сообщение:#6

Как бы теперь разобраться и порядочек навести.
iDom
 
Сообщения: 31
Зарегистрирован: 18 ноя 2012, 11:12

Re: Обновление до 5.6.1.2

Сообщение guyasyou » 23 мар 2013, 23:52 ,  »  Сообщение:#7

iDom писал(а):Вообщем я недождался вашего ответа. Я прикинул куда сам вносил изменения, поскольку сайт мне скажем так внаследство остался, сделал бекап файлов и базы, и локально через админку обновился. Вроде всё работает, вот только вопрос у меня в /updates/ появилась следующая история "/concrete5.6.1.2_updater/concrete/" и из неё подгружается jQuery и несколько CSS файлов в исходный код разметки страниц сайта. Хотя если верить движку то он пашет на последней версии, то есть стало быть в папке /concrete/ лежит всё самое нужное, но в ней ничего не поменялось и теперь походу новые классы лежат именно в "/concrete5.6.1.2_updater/concrete/". Таки я что-то сделал не так?


Что-то странно... вообще папка concrete должна замениться на новую версию. Тут я хз почему так
www.pure-web.ru - fullstack разработка сайтов и веб-приложений
Аватара пользователя
guyasyou
Администратор
 
Сообщения: 559
Зарегистрирован: 05 янв 2012, 12:29
Откуда: Новосибирск

Re: Обновление до 5.6.1.2

Сообщение iDom » 24 мар 2013, 11:39 ,  »  Сообщение:#8

Код: Выделить всё
<?php define('DIRNAME_APP_UPDATED', 'concrete5.6.1.2_updater');?>

Собственно вот такая директива появилась после обновления... я так полагаю её можно затереть и перезалить файлы по месту назначения.
Но хочется заметить что сайт воистину стал работать быстрее, несмотря на некоторые на мой взгляд долбанутые, моменты в этой CMS.
Кстати есть предположение что обновление происходит таким образом, потому что парв ему по чмоду нехватает, что собственно и правильно, нефига мухам в котлеты лезть.
iDom
 
Сообщения: 31
Зарегистрирован: 18 ноя 2012, 11:12

Re: Обновление до 5.6.1.2

Сообщение iDom » 24 мар 2013, 12:00 ,  »  Сообщение:#9

Оуу я нашёл на офф.сайте небольшой мануальчик.
Пожалуйста зарегистрируйтесь, чтобы увидеть ссылку

Да там собственно об этом и говорится:
Вольный перевод:
Метод 1 шаг 2:
Привет паря, если ты это читаешь, то скорее всего ты уже залил новое ядро в папку /updates/. До победы осталось немного, шуруй в админку, там зайди в раздел обновления и жмакни на кнопку "Обновить" после чего твой движок станет резким как гепард, так что вперёд. И да будь внимателен после этого. Старые сорцы находится по прежнему в папке /concrete/ а новое ядрище лежит в папке /updates/concrete5.x.x.x/ чтобы это всё хоть как-то ездило мы запилили тебе вот такую штуку в конфиг сайта:
Код: Выделить всё
define('DIRNAME_APP_UPDATED', 'concrete5.x.x.x');

По этому парниша всё норм и не парься.

Также там описаны прочие возможные методы обновления различного уровня ламповости.
По моим прикидкам получается если я ядро перезалью по назначению и грохну дефайн апдейта то ничего не изменится.
iDom
 
Сообщения: 31
Зарегистрирован: 18 ноя 2012, 11:12

Re: Обновление до 5.6.1.2

Сообщение guyasyou » 24 мар 2013, 14:27 ,  »  Сообщение:#10

ну я обновляю по другому, как тут написано.
просто русский движок обновлять через админсую панел проблемы вызвает
www.pure-web.ru - fullstack разработка сайтов и веб-приложений
Аватара пользователя
guyasyou
Администратор
 
Сообщения: 559
Зарегистрирован: 05 янв 2012, 12:29
Откуда: Новосибирск

Re: Обновление до 5.6.1.2

Сообщение iDom » 25 мар 2013, 11:11 ,  »  Сообщение:#11

Чото я ничерта не понимаю. Это локальное обновление через админку, что-то сделало записало кучу классов в папку апдейт, все класса наследованные, абстрактные и пустые... банально конфиг капчи не сделать, потому что ничерта не найти. Походу придётся откат делать и обновляться заново.
UPD: Хотя не нашёл, но это всё очень странно...
iDom
 
Сообщения: 31
Зарегистрирован: 18 ноя 2012, 11:12

Re: Обновление до 5.6.1.2

Сообщение Count_Raven » 27 мар 2013, 18:05 ,  »  Сообщение:#12

iDom писал(а):Чото я ничерта не понимаю. Это локальное обновление через админку, что-то сделало записало кучу классов в папку апдейт, все класса наследованные, абстрактные и пустые... банально конфиг капчи не сделать, потому что ничерта не найти. Походу придётся откат делать и обновляться заново.
UPD: Хотя не нашёл, но это всё очень странно...

Да не, все нормально.
С версии 5.6 файлы в /concrete/ в основном все (не все конечно) пустые, ну т. е. там только объявления классов, которые наследуются от классов в /concrete/core/. Т.е. основная часть ядра переехала в /concrete/core/

Сделано это для того, чтобы если вы хотите внести изменения в работу какого-либо класса, то вам бы не пришлось копировать весь код.
Т. е. как работает:
Допустим, мы хотим изменить работу ImageHelper, который находится в /concrete/helpers/image.php
Раньше, вам нужно было скопировать файл из /concrete/helpers/image.php в /helpers/image.php и в нашем новом файле внести изменения.
Системный Loader проверял наличие в /helpers нашего файла image.php и загружал его, вместо родного из ядра.
Но тут проблема - мы в наш новый хелпер вынуждены переносить весь код из ядра, даже если мы хотим изменить только одну строку.
Для этого файлы в /concrete/ зачастую пустые и наследуются от файлов в /concrete/core/ в которых находится на самом деле код.
Теперь мы можем проделать ту же самую операцию, что и раньше, но наш пустой файл же наследуется от файлов в /concrete/core, и мы можем теперь изменить только одну функцию или там что-то где-то подправить, остальное все пойдет от класса-родителя.
Теперь системный Loader также загружает наш новый хелпер, но то, чего в нем нет, он наследует от родителя в ядре.
Сумбурно объяснил, но вот так. На самом деле все просто, только хреновый из меня оратор.

И да - если уберете
Код: Выделить всё
<?php define('DIRNAME_APP_UPDATED', 'concrete5.6.1.2_updater');?>

и просто зальете /concrete/ из архива с новой версией поверх вашей /concrete/ то должно все работать.

Мне этот 1-й метод обновления не нравится. Я обновляюсь по классике - заливаю файлы новой версии поверх старой и перехожу на
Пожалуйста зарегистрируйтесь, чтобы увидеть ссылку
и кликаю "Обновить". Папка updates у меня всегда пустая.

P.S.
Контроллер дефолтного типа капчи с настройками находится в /concrete/core/models/system/captcha/types/securimage/controller.php
Напрямую его править не надо - при обновлении убьется. Нужно вынести его за пределы ядра. Об этом уже много писали - разберетесь.

В Concrete5 все логично структурировано, если понять эту структуру, то все находится очень легко и быстро. В той же Joomla порой намного дальше и глубже приходится лазить, чтобы найти то, что нужно. А тут ясная как божий день структура. В среднем, если я хочу в Concrete5 найти код чего-то, что я раньше не трогал (т.е. не знаю где это), у меня уходит от 20 секунд (очевидные контроллеры, модели и виды, их искать нечего, они все по своим местам) до 1-2х минут (некоторые менее очевидные вещи). В любом случае, структура очень проста, даже не знаю как ее еще можно упростить. Наверное проще сделать уже невозможно.
Country Amiant - Regno All Rianto
Аватара пользователя
Count_Raven
Супермодератор
 
Сообщения: 1156
Зарегистрирован: 06 окт 2010, 15:00
Откуда: Country Amiant


Вернуться в Помощь по concrete5

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron