Исправление позиции на странице после подгрузки ajax-ом в Chrome

В браузере Chrome начиная с v56 появилась т.н. функция Scroll Anchoring, которая включена по умолчанию.

В результате на всех Chrome-based браузерах на странице с подгрузкой контента (например в Активности) после подгрузки скролл уходит вниз страницы. и подгружаемый контент «уходит» вверх, а не появляется внизу как положено. В итоге теряется смысл этой фичи и чтобы увидеть подгруженный контент, нужно скроллить вверх вручную.

Этот баг воспроизводится и на этом сайте (см. страницу Активность). В Firefox все работает как надо.

Решение:
Читать дальше →

Lazy Loading на самом деле не совсем Lazy

На сайте подключена библиотека для ленивой загрузки изображений (Lazy Loading).
Таких js-библиотек достаточное количество на github-е. Вот одна из популярных.
Как правило, для задействования либы требуется:
a) — наличие у тега img определенного класса
b) — наличие у тега img атрибута data-original (или data-src) c указанием ссылки на изображения.
Примерно так:
<img data-original="site.com/uploads/.../img.jpg"/>

Атрибут src может быть не задан вовсе, либо в нем должна быть ссылка на «заглушку».
Чтобы не «ковырять» редактор и/или текстовый парсер было решено сделать в js так:
$('#content .topic-type-topic img').each(function () {
    $(this).addClass('lazy');
    $(this).attr('data-original', $(this).attr('src'));
    $(this).removeAttr('src');
});

$("img.lazy").lazyload({
    effect: "fadeIn"
});

После этого все работает, картинки подгружаются при скролле, по крайней мере визуально.

Недавно заглянул в консоль и увидел, что картинки при загрузке страницы все равно загружаются все разом, а эффект ленивой подгрузки лишь визуальный, т.к. никакой экономии трафика не происходит. Причина загрузки всех изображений в том, что обработка атрибутов тега img происходит ПОСЛЕ загрузки дерева DOM, в частности после загрузки всех картинок и jQuery.

В идеале конечно обработать img в самом движке — добавить правила Jevix, подправить редактор и/или текстовый парсер, затем все имеющиеся топики прогнать через все это.
Можно ли обработать тег img на лету до загрузки страницы? (через модуль Viewer?)

Гугл предложил еще вариант — заменить js-обработку тега img с jQuery на чистый JavaScript и вставить её в head. Кто знает как это сделать — прошу помочь, а я протестирую этот вариант.

Мысли о переходе на https

Столкнулся с некоторыми проблемами при переходе на https. Все решилось правкой ссылок.

Я подумал возможно все сделать универсально, чтобы не было зависимости от протокола и вот какие мысли возникли:

1. Конфиг.
Наличие протокола https можно «забирать» прямо в php ($_SERVER['HTTPS']). Поэтому в конфиге прописал вот такую строку (переопределяем в config.local.php эту строку):
if (isset($_SERVER['HTTP_HOST'])) {
    if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') {
        $config['path']['root']['web'] = 'https://'.$_SERVER['HTTP_HOST'];
    } else {
        $config['path']['root']['web'] = 'http://'.$_SERVER['HTTP_HOST'];
    }
} else {
    // for CLI scripts. or you can append "HTTP_HOST=http://yoursite.url" before script run command
    $config['path']['root']['web']        = null;
}

или одной строкой:

$config['path']['root']['web'] = isset($_SERVER['HTTP_HOST']) ? ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') ? 'https://' : 'http://') . $_SERVER['HTTP_HOST'] : null;

Выглядит непрезентабельно, и возможно неоптимально, но вроде работает. В зависимости от протокола по которому зашли, меняется конфиг {Config::Get('path.root.web')}

2. Ссылки на изображения.
На github-е уже предлагалось при загрузке изображений в редактор подставлять относительные ссылки.
src="http://site.com/uploads/images/.../img.jpg" -> src="/uploads/images/.../img.jpg"
Это дает универсальность и независимость от протокола. Но возникает проблема с RSS, т.к. в RSS потоке относительные ссылки не работают. По всей видимости, если переходить на относительные ссылки, то необходимо в ActionRSS делать replace для относительных ссылок и добавлять к ним {Config::Get('path.root.web')}

3. Внутренние ссылки в контенте.
Для внутренних ссылок существует универсальный способ href="http://site.com/..." -> href="//site.com/...". В данном случае протокол у ссылки будет задействован тот, в котором открыта страница со ссылкой. Решение универсальное, но распространяется только на внутренние ссылки. Вероятно, возможно применить это, делая replace в контенте при условии что это внутренняя ссылка.

Восстановление базы

Случайно подпортил базу на проекте. Благо есть недавний backup.
Есть база ls103 -> в ней таблица prefix_topic_content -> в ней поле topic_text_source
Вот это поле и «подпортилось».
Помогите, кто знает каким запросом заменить данные в этом поле из базы ls103_backup?

Т.е. нужно заменить все данные в поле topic_text_source, в том случае если в этой строке совпадает значение поля topic_id

Как добавить простой плеер в топик

У меня имеется код плеера с видео которое мне нужно. И мне это видео интегрировать в топик (именно в 1 нужный топик). Я добавляю код — но как я понимаю livestreet съедает некоторые теги. Помогите мне пожалуйста! Та же проблема и с добавлением pdf ридера в топик.

Жду Вашей помощи, многоуважаемое комьюнити!

edit: Я думаю сделать это через iframe. Делю все как в других постах сказано, но нифига.

Решено. Как решал:


открыл файл /application/config/jevix.php

Добавил код:
array(
               'iframe',
                array( 'src' => array('#domain'=>array('youtube.com', 'voidboost.net', 'rutube.ru','vimeo.com','protectorat.cc')), 'width' => '#int', 'height' => '#int',  'frameborder' => '#int', 'allowfullscreen' )
            ),


Ровно перед этим фрагментом:
),
        // Теги с обязательными параметрами
        'cfgSetTagParamDefault'     => array(

Как установить счетчик?

Доброе время суток!

Прошу подсказать как можно установить счетчики от Яндекса на сайт? Не могу найти, где в новой версии находится сам шаблон.

Если добавляю код в файл bootstrap /start.php, то сайт не работает.

Заранее благодарю!

Добавлена поддержка РНР 7.4 для LiveStreet CMS

Обновил движки как первой так и второй версии для поддержки РНР 7.4. Плюс исправил некоторые ошибки. Можете написать, что ещё надо поправить.

LiveStreet 1.0.3
github.com/sersar/livestreet-1/tree/3fa6ae9d441092cd1b7b0e256e4ef7fc76431dbd

LiveStreet 2.1.0
github.com/livestreet/livestreet
github.com/sersar/livestreet-framework
(возможно позже внесут изменения в официальную ветку)

Просьба в комментариях ответить на вопросы:
  1. Будете ли обновлять движок до совместимости с РНР 7.4?
  2. Хотели бы внести какие-нибудь поправки в движок? Обновить библиотеки?
  3. Интересует адаптация/разработка плагинов в складчину?

P.S. Пишите по делу! Без больших постов и «умных» мыслей.

Желающим поддержать финансово можно здесь.