+83.57
1168 читателей, 3014 топиков

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. Кто знает как это сделать — прошу помочь, а я протестирую этот вариант.

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

Случайно подпортил базу на проекте. Благо есть недавний 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(

Как получить настройки из конфига вывода блока?

Имеется плагин, который выводит блок через свой конфиг:
Config::Set('block.rule_somerule', array (
    'action'  => array (
        'index',
        'feed'
    ),
    'blocks' => array (
        'right' => array (
            'block_someblock.tpl'=> array (
                'params' => array ( 'plugin' => 'someplugin' ),
                'priority' => 101,
            )
        )
    ),
));


Помогите указать в шаблоне условие, что текущий action ($sAction) соответствует action из настроек вывода блока.

К примеру, такая конструкция не работает:
{if in_array($sAction, Config::Get('plugin.someplugin.block.rule_somerule.action')}
    ...
{/if}

Изменение контента топиков после редактирования конфига Jevix

После редактирования конфига Jevix новые правила обработки текста применяются если войти в режим редактирования топика и сохранить его.

Существует ли способ «прогнать» через новые правила все топики одним разом?

Где аналог Livestreet?

Неужели так и не появился аналог Livestreet? Всего-то нужно:

Авторизация/Регистрация
Постинг постов всеми пользователями
Рубрики (они же блоги)
Рейтинг постов и пользователей
Комментарии

И чтобы это просто работало из коробки.

Высота тегов br при публикации кода

При публикации топика когда мы между между участками текста оставляем пустую строку (чтобы выглядело как параграфы) -> на выходе мы вместо одной пустой строки получаем один тег br. И в опубликованном топике это выглядит как один перенос строки. Соответственно, параграфов, как при редактировании, не получается.

Именно поэтому Jevix автоматически добавляет еще один тег br, потому что именно два тега br выглядят как пустая строка и дает нам вид параграфа. Есть конечно теги-исключения, которые задаются в конфиге Jevix-а.

К примеру наш параграф — это код ( в теге code):

Some Code


Не могу понять, почему два тега br над кодом имеют меньшую высоту, чем два тега br под ним. Собственно доказательство этого представлено выше. Причем это касается только только кода.



Кто-нибудь знает, почему так происходит?