Версия 1.1.23 — небольшие исправления и чуть-чуть новенького

Таки вышел релиз Alto CMS 1.1.23. Каких-то «прорывных» фишек в ней нет, она, главным образом, исправляет ряд обнаруженных ошибок и чуть-чуть добавляет некоторых новых возможностей для разработчиков.

Вот список основных изменений:

Исправлены ошибки:
  • несовместимость с php 5.3
  • установка в конфиге экшена/ивента по умолчанию
  • иногда нарушался порядок подключения js-файлов
  • не работал ресайз в методе getPhotosetMainPhotoUrl() топика
  • в некоторых случаях ломалась цветопередача для загружаемых jpeg-файлов с CMYK-профилем (очень старая ошибка, но никак не могли ее выловить)
  • исправлен еще ряд мелких, но неприятных ошибок в коде и шаблонах

Обновлены сторонние библиотеки:
  • CSSTidy до 1.5.5
  • JShrink до 1.1.0
  • jQuery до 1.12.4

Добавлено:
  • местоположение директории для для загрузки и хранения изображений
  • для js-файлов можно указывать атрибуты defer и async
  • выбор изображений топика по параметрам
  • методы AppendAsset() и PrependAsset() модуля Viewer
  • вызов E::Module('Name') теперь кеширует экземпляр модуля, что увеличивает быстродействие
  • ну и кое-что еще по мелочи

Кому интересны подробности про добавленные «плюшки», то добро пожаловать под кат
Местоположение директории для загрузки и хранения изображений
По умолчанию изображения загружаются в директорию /uploads, находящуюся в корневой директории сайта. Но иногда возникает желание загружать и хранить изображения в куда-то в другое место, возможно, на отдельный хост, специально создаваемый для статических файлов. Для этого в конфиге появились новые параметры:
$config['module']['uploader']['drives'] = array(
    'local' => array(
        'dir' => '___path.root.dir___',
        'url' => '___path.root.url___',
    ),
);

Нетрудно догадаться, что здесь задается полный путь на локальном диске до места расположения директории /uploads и URL к этой директории извне. Если изображение в базе сохраняется в виде '@uploads/path/to/image.jpg', то символ '@' заменяется на пути, указанные в конфиге, как показано выше.

Атрибуты defer и async для js-файлов
Если вы в курсе, зачем нужны атрибуты defer и async для загружаемых скриптов, то теперь вы можете их задавать в наборах js-файлов в конфигурации:
$config['assets']['default']['js'] = array(
    '___path.skin.dir___/assets/js/script1.js' => array('defer' => true),
    '___path.skin.dir___/assets/js/script2.js' => array('async' => true),
);

Если в настройках задано слияние js-файлов, то файлы с заданными атрибутами будут группироваться, конечно же, отдельно. Грамотное использование этих атрибутов может значительно ускорить отображение загружаемых страницы сайта.

Новые методы получения изображений топика
В сущность топика добавлены новые методы, которые можно вызывать так (считаем, что в $oTopic у нас экземпляр конкретного топика):
  • $oTopic->getImages() — возвращает все изображения топика (и включенные в текст, и в фотосет)
  • $oTopic->getLoadedImages($aFilter = []) — возвращает загруженные изображения топика (т.е. изображения включенные в текст по ссылке, включены не будут); в метод может быть передан массив с набором фильтров для выборки нужных изображений (описание фильтра см. ниже), если фильтр не задан, то возвращаются все загруженные изображения.
  • $oTopic->selectImage($aFilter = []) — возвращает первое из загруженные изображения топика (т.е. изображения включенные в текст по ссылке, включены не будут); фактически вызывает метод getLoadedImages() и берет первое значение из возвращенного массива.

Параметры фильтра методов getLoadedImages() и selectImage():
  • 'width-more' => N — получить изображения с шириное более N пикселей
  • 'width-less' => N — получить изображения с шириное менее N пикселей
  • 'height-more' => N — получить изображения с высотой более N пикселей
  • 'height-less' => N — получить изображения с высотой менее N пикселей
  • 'width-max' => true — получить изображения с максимальной шириной
  • 'width-min' => true — получить изображения с минимальной шириной
  • 'height-max' => true — получить изображения с максимальной высотой
  • 'height-min' => true — получить изображения с минимальной высотой

Параметры фильтров могут быть заданы в любой комбинации. При этом имеет значение порядок задания фильтров:
$aFilter = ['width-more' => 799, 'height-max' => true];
// Сначала будут выбраны все изображения с шириной более 799px, а потом из них будет выбрано с максимальной высотой 
$oImage = $oTopic->selectImage($aFilter);

// Сначала будут выбраны изображения с максимальной высотой, а из них - с шириной более 799px
$aFilter = ['width-more' => 799, 'height-max' => true];
$oImage = $oTopic->selectImage($aFilter);

Разумеется, эти методы могут быть использованы в шаблонах. Например, так:
<!-- выберем изображение с максимальными размерами, но не менее 800х600 -->
{$aFilter = ['width-more' => 799, 'height-more' => 599, 'height-max' => true, 'width-max' => true]}
{$oImage = $oTopic->selectImage($aFilter)}
{if $oImage}
    <img src="{$oImage->getImageUrl('800х600crop')}">
{else}
    <img src="default-image.jpg">
{/if}

Методы AppendAsset() и PrependAsset() модуля Viewer
Это лишь «синтаксический сахар»: методы в зависимости от расширения подключаемого файла вызывают AppendStyle()/AppendScript() или PrependStyle()/PrependScript() соответственно

Похожие статьи

  • Версия 1.1.29 — багфиксы и небольшие доработки
    Ничего революционного версия эта не несет, но помимо мелких багфиксов, есть пара небольших, но полезных доработок: 1) В когфиг добавлены опции для настройки пнели вставки изображений в топик (особенно актуально для...
  • ВАЖНО: Критическое обновление
    В AltoCMS используется библиотека PHPMailer, в которой была обнаружена критическая уязвимость. В версии Альто 1.1.27 эта библиотека обновлена. Настоятельно рекомендуется обновить движок до версии 1.1.27! Или...
  • Релиз 1.1.19 и новые подробности про версию 1.2
    Вышел релиз движка 1.1.19 Чего-то особенного он не принес, это, в основном, множественные багфиксы. За исключением одной детали — в качестве парсера текстов по умолчанию теперь используется Qevix. Поэтому если вы...
  • Сайт переехал на новую версию движка
    Долго сидели, как сапожник без сапог — новые версии выходят, а официальный сайт сидит на старой версии. Но, наконец, это произошло — этот сайт тоже переехал на ветку 1.1.х и будет теперь обновляться регулярно.

28 комментариев

0
Отлично, система развивается, хотелось-бы получить краткую инструкцию по обновлению, чтобы не слетели настройки шаблона.
0
0
Это все понятно, а если я изменил шаблон по умолчанию, причем редактировал, не только css файлы, но и сами файлы шаблона, отсюда вопрос как в таком случае лучше обновиться без потери изменений?
0
Скопировать шаблон на локалку, обновить альту и обратно перезаписать шаблон с локалки
0
Можно и так, конечно, но лучше все ж немного иначе — http://altocms.ru/1741.html
0
Вчера вечером так и сделал, хотел написать про это, но Вы меня опередили. Обновил систему, вроде пока вопросов нет.
0
Вадим не подскажите как поставить только плюшки добавленные в обновления? И обновить библиотеки?
0
Я не очень понимаю, чего я должен угадать в этом ребусе
0
С прошлой версией долго боролся, не грузились фото, как-то все наладил, грузилось и работало.
Тут обновился, все вроде бы нормально, когда фото грузить с интернета то проблем ни каких.
А вот если фото с ПК, то они загружаются без ошибок, но в статье дублируются. Заметил после публикации сегодня статьи, проверил размещенные ранее, статьи, во всех где загружались с ПК, одна фото идет в самом начале статьи и одна на том где я ее размещал. Дублируется только первая фото.
0
Дополнение.
В статье, в которой дублируется фото, захожу в редактирование, удаляю эту картинку и загружаю другую с интернета, при сохранении в самом верху статьи остается ненужная копия изображения которое уже удалил и вместо него загрузил другое
0
перезаписываем папки и получаем это

куда копать?



приходится откатываться на 1.1.19.3
Отредактирован:
0
строка в логе [06-Nov-2016 03:53:17 Europe/Moscow] PHP Parse error: syntax error, unexpected '[' in /home/d5065/public_html/pottery.su/common/classes/modules/topic/entity/Topic.entity.class.php on line 1848

версия php 5.3 на хостинге.
+1
Это получилась случайная проверка тех, кто еще на старых версиях php сидит :)

В строке 1848 вот это
$aSorted = [];
надо заменить на
$aSorted = array();

Но вообще php надо бы обновлять
0
а какую версию PHP рекомендуете использовать? хостинг позволяет до 7 включительно
+1
Если есть возможность работать под php7, то под ней и нужно. Движок Альто полностью совместим с семеркой, у меня несколько сайтов под ней работает — проблем никаких, а скорость заметно выше
0
да после установки 7 по умолчанию все обновилось и заработало. но стали происходить чудеса. вообще не знаю как обьяснить. не работает выбор превью. выбирает само какую хочет, но это еще покопаюсь. интересней другое. изображения из одного топика отображаются как превью в другом, хотя в этом топике даже упоминания нет о нем. )))
0
Наводит на мысль что проблема с дублированием фото тоже может быть из за PHP 7, вечером попробую понизить версию, посмотрю как отреагирует.
+1
Нет, дублирование фото — это баг шаблона, на гитхабе уже исправленная версия
0
Обновил шаблон, дублирование фото пропало, но так же пропало добавление водяного знака. В конфиге включаю, но водяной знак не добавляется.
Так же пропала фича, которой уже привык пользоваться, а именно — фото из основного текста отображалось в превью статьи. Для превью использую Topic Intro.
0
С водяным знаком разобрался
0
А с превью проблема осталась?
0
Да.
Пока копирую картинку и в анонс в статьях где картинки с компьютера, там где с интернета то отображаются нормально.
Загружаются картинки видно совершенно по разному, раз такие отличия с отображением.
Еще нюанс связанный с этим и плагином похожих статей
Вот на скрине видно 3-и статьи где фото с интернета, в анонсе только текст, а одна статья с фото с компьютера, в анонсе сначала картинка и потом текст


Видно что там где с компа вместо миниатюры статьи только серый квадрат, а где с интернета, там нормальная миниатюра
Так же, плагин подтягивает с анонса все, будь то текст или картинку или видео (видео подтягивает и из основного текста).
картинку режит, видео вообще в полный размер подтягивает.
Проблема тянется уже давно, но похоже ответа так и небыло: http://altocms.ru/addons/item/86/
Отредактирован:
0
Все таки проблемы выявились после обновления.
1.Не работает превью фотосета, точнее это вроде как и работает, после выбора превью пишет, что изображение отмечено как превью, но превью в итоге не меняется, все превьюшки заменились 1 фото.
2.Не работает загрузка изображений в тело топика, выдает ошибку «Ошибка при загрузке изображения»
Подскажите куда копать?
0
Хотелось бы узнать как без полного обновления, добавить эти новые фичи..

Добавлено:
местоположение директории для для загрузки и хранения изображений
для js-файлов можно указывать атрибуты defer и async
выбор изображений топика по параметрам
методы AppendAsset() и PrependAsset() модуля Viewer
вызов E::Module('Name') теперь кеширует экземпляр модуля, что увеличивает быстродействие
ну и кое-что еще по мелочи

Кто подскажет?
0
Не совсем понятен смысл того что вы собираетесь делать, но вы можете в любом случае сделать diff и потом patch между версиями.
0
как это?
0
0
Полезная вещь, спасибо
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.