Как иногда начинают свой монолог неопытные стендаперы: «У всех в жизни было такое …», когда вывел на главную страницу сайта список пользователей, а там половина – серые тени новичков, не подтвердивших регистрацию. Давайте в качестве ещё одного примера по использованию хуков уберём их оттуда, оставив только реальных пользователей.
Новые возможности и удобства, облегчающие разработчикам отладку компонентов и шаблонов.
Одной из неудобных задач при отладке для меня является поиск причины ошибки 403/404. Иногда она настолько неочевидна, что приходится пошагово проходить код xDebug-ом. Ещё одна «зона сумрака» при отладке – любая страница перед редиректом, например, обработка формы добавления/изменения контента. Тут тоже нужен или xDebug, или var_dump() с принудительным остановом после него. «Расширенная отладка» версии 14.1.2 и выше значительно упрощает анализ таких моментов.
Иногда при тестировании кода возникает необходимость как-то более удобно вывести данные из повторяющихся участков кода или наглядно отследить изменения в переменных. Для этого предназначены табличные контрольные точки (ТКТ).
Вторая версия InstantCMS понравилась мне ещё с релиз-кандидатов - очень продуманная система. Но ещё с тех давних времён я хотел добавить ссылки под заголовками виджетов. Предложенный вариант - не самый простой. Зато очень хорошо подходит для изучения работы с хуками.
Часто в блогах и на форуме можно увидеть совет «для решения задачи нужно в таком-то хуке сделать так-то» и даже есть рабочий код, но куда его вставить? Прямо как в анекдоте: Почему холостяки не готовят себе рецепты из интернета? Потому что каждый рецепт начинается со слов «Возьмите чистую кастрюлю». Сделаем себе «чистую кастрюлю» - пустой компонент для своих хуков.
Обновление отладки. Очистка фильтров и другое.
Обновил документацию по использованию "Расширенной отладки" с учётом новых версий движка и отладки. Новые примеры, новые скриншоты, новые возможности.
Авторы InstantCMS 2 подробно описали создание виджетов в разделе документации «Виджеты» и даже наглядно показали весь процесс в видео-туториале «Создание виджета». Цель этого поста – показать работу виджетов сайта «изнутри» не вдаваясь в программистские подробности. Это будет полезно для изучения работы Двойки и для анализа купленных виджетов на тормоза или перерасход памяти.
В разделе документации «Обработка событий» работа с событиями и хуками описана очень качественно и подробно. Поэтому я ни как не претендую на замену документации, а просто попробую наглядно показать сказанное в ней на реальных примерах. Считайте, что я сделал напоминалку по теме самому себе, но может она ещё кому-то пригодится.
Как говорят у нас в Украине: «Лучше 100 раз пощупать, чем один раз услышать». Поэтому представляю возможность наглядно «пощупать» работу Двойки. 😊 Новая, полностью переписанная версия «Расширенной отладки» на базе дефолтной отладки 2.14. Благодаря изменениям в Двойке за последние годы и мудрым подсказкам Fuze теперь она сделана компонентом, работающим в двух режимах: стандартном - практически без изменения ядра, и полном - с патчами ядра для сбора дополнительных отладочных данных.
С версии 14.1 «Расширенная отладка» может работать в двух режимах:
В середине лета решил привести в порядок теги одного своего сайта. Причём, как сами теги, так и их использование на сайте. Итак, делюсь результатами практического применения тем: • "СЕО для тегов", добавленное в версии 2.10, но, на мой взгляд, всё ещё требующее доработки. • Доработка ввода тегов при создании/редактировании записей • Поиск по тегам • "Страница тегов" (главная страница компонента тегов, отсутствующая в "коробке") • Http-ответ 404 для страниц несуществующих тегов • "Все ссылки на теги по одному шаблону" (приведение ссылок на теги к единому виду, только через "+", редирект 301 для ссылок через пробел на правильный адрес) и подобным. Какие-то из этих тем поднимались на форуме или в блоге, какие-то только в частных беседах. Я использовал всё, что нашёл. Итак ...
В дефолтном варианте для страницы несуществующего тега Двойка отдаёт http-код 200 (Ок) и показывает обычную страницу сайта с надписью "Ничего не найдено". И не обратил бы я на это внимание, если бы ...
Повтор письма с кодом подтверждения при регистрации.
Озаботился я давеча "пузомерками" одного своего сайта на InstantCMS 2 в Google PageSpeed Insights и обнаружил, что Гуглу сильно не нравится размер картинок при сжатии 90%, используемом в Двойке по дефолту. Взял я несколько картинок с этого сайта и начал экспериментировать с их качеством в разных пресетах от 65 до 90 процентов, а потом подставил пересжатые картинки на сайт, чтобы посмотреть реакцию Гугла. И вот какие выводы сделал.
Лучше поздно, чем никогда 😊 Продолжаю тему Изменяем автора материала в форме редактирования. В том варианте возникали две нестыковки в данных на сайте. Попробуем их решить.
Обновление «Отладки» для InstantCMS 2.7.0.
В продолжение предыдущего поста. Только теперь делаем хук для добавления выбора пользователей сразу во все типы контента. Я вчера не обнаружил нужный хук, а сегодня его подсказал Fuze - спасибо! Файлы ядра также не изменяются.
Файлы ядра не изменяются. Основано на решении от Вадим Нарочный в теме Поменять владельца контента. Спасибо Вадим Нарочный за идею и практически готовый код. Как и просили, по шагам. 😊
Обновление «Отладки» для InstantCMS 2.6.1.
Ура, товарищи! То, чего так долго ждали большевики - случилось! Товарищ Fuze дал добро на внедрение универсальных логинов и авторизации в ближайший релиз (мажорный или минорный - это ему виднее). 😊 Я перенёс прошлую версию "Логинов" на InstantCMS 2.6.0 и походу поправил пару незамеченных ранее мелочей. Изменено более сотни файлов. Поэтому нужна ваша активная помощь в тестировании. Возможности: - авторизация по любому полю профиля пользователя (универсальные "логины"); - список запрещённых для регистрации логинов; - подстановка любого поля профиля в адреса профилей...
Обновление «Отладки» для InstantCMS 2.6.0.
Общение с Fuze, а также перечитывание каментов в блоге и в темах про логины, адреса профилей и авторизацию произвели на мой системно-программерский ум неизгладимое впечатление. 😊 В общем, дабы учесть видение разработчиков Инстанта и противоречивые желания большинства пользователей, я полностью изменил концепцию и переделал весь код. В систему внесено очень много правок, изменено более сотни файлов. Надеюсь, этот вариант понравится и пользователям, и разработчикам InstantCMS 2 настолько, что он будет включён в систему «из коробки». Нужна ваша активная помощь в его тестировании. Возможности: авторизация по любому полю, подстановка любого поля в адреса профилей пользователей, уникальные никнеймы, правила сайта и другие интересности. Итак, забываем про просто логины и тестируем универсальное решение.
Обновление «Отладки» для InstantCMS 2.5.1.
Прошу протестировать вариант реализации логинов в InstantCMS 2. Если этот вариант окажется удачным, понравится пользователям и в нём будут устранены ошибки, тогда можно будет просить разработчиков InstantCMS 2 включить его в систему «из коробки». Поэтому нужна ваша активная помощь.
1. Меня никто не просил это писать. Сам захотел, сам написал. 😊 2. Не претендую на истину в последней инстанции. Считайте это просто взглядом чуть глубже, чем это делают большинство людей. Вы можете иметь любые другие мысли по этому поводу. При желании даже можете их написать в каментах. Я с Вами заранее согласен, Вы правы в своих мыслях. 3. И да, предупреждаю: возможно читать будет неприятно и обидно. Если не любите думать, то дальше не читайте. 😊
Обновление «Отладки» для обновления Двойки. Плюс ещё чуток оптимизации.
Десятая, юбилейная версия. Очень много доработок и изменений. Пока описывал использование «Расширенной отладки», в голову приходили мысли и идеи. Вот результат их воплощения.
Мощная система расширенной отладки. Позволяет легко, наглядно и управляемо получить информацию о последовательности, времени выполнения, используемой памяти и других параметрах PHP-скриптов и частей CMS, а также о работе с базой данных и кешем. Данная «Отладка» будет полезна как начинающим пользователям для изучения работы InstantCMS 2, так и опытным разработчикам компонентов/шаблонов при создании и тестировании своих продуктов. А так же всем пользователям CMS для выявления проблем при размещении сайтов на реальных серверах, где невозможно или неудобно использовать xDebug или подобную систему отладки.
Ответы актуальны для крайней версии «Расширенной отладки». Влияет ли «Расширенная отладка» на функционирование InstantCMS 2? «Расширенная отладка» не оказывает влияния на работу функций CMS и её компонентов. Она только ведёт учёт происходящих в системе действий. Какие изменения вносит «Расширенная отладка» в систему? «Расширенная отладка» не изменяет базу данных, кроме добавления стандартной записи о новом установленном компоненте. Начиная с версии 14.1 отладка может работать в двух режимах: стандартном - практически без изменения ядра, и полном - с патчами ядра для сбора дополнительных отладочных данных. Подробнее про режимы и изменяемые файлы можете почитать на странице описания режимов. Установил отладку, но информации отладки на сайте не вижу. Что не так? 1.
В стандартной версии движка пока перехватываются и обрабатываются только ошибки при обращении к базе данных. Ошибки PHP и предупреждения (в случае соответствующих настроек на сервере) не выводятся, а тихонько ложатся в лог веб-сервера. «Расширенная отладка» предоставляет несколько больше возможностей при обработке ошибок, которые будут полезны и разработчикам, и вебмастерам.
При анализе работы движка CMS или при отладке своих компонентов/шаблонов требуется знать состояние переменных в разных местах кода. Частично эта задача решается выводом информации об основных операциях несколькими щелчками мышки в «Расширенной отладке». А для более точного понимания происходящего в любом месте кода можно использовать контрольные точки.
Самый интересный вопрос для любого разработчика: «Что там, внутри моего кода, на самом деле происходит с данными?». Потому, что реальность иногда отличается от задумки из-за стратегических, логических и синтаксических ошибок в коде. И чтобы привести их в соответствие, нужно знать, какие данные поступают на вход той или иной части скрипта, и какие результаты обработки данных получаются на выходе.
Немного поговорим про использование фильтров. Поскольку «Расширенная отладка» может выдать в лог очень много разной информации, то возникла необходимость как-то организовать отбор только нужных строк логов. Для этого я сделал фильтры.
Этот и несколько следующих постов про использование «Расширенной отладки» будут в основном полезны для разработчиков и желающих разобраться в InstantCMS 2 на уровне кода. Начну с небольшого поста про трассировку вызовов. Ведь всегда хочется понимать, что откуда вызывается и где источник тех или иных данных.
Использование расширенной отладки. Часть 3. Изучаем работу InstantCMS 2 без знания PHP При создании своих сайтов любой вебмастер довольно быстро сталкивается с необходимостью хотя бы в общих чертах понимать, как устроена и работает выбранная им CMS. Попробуем наглядно посмотреть, как работает InstantCMS 2, без знания программирования и без чтения php-кода системы на примере одной из страниц демо-сайта. Это очень просто!
Пока писал пост про использование «[url=]Класса расширенной отладки v.9[/url]», заметил, что не хватает пары небольших полезностей. Вот, добавил. Заодно исправил обнаруженные небольшие ошибки.
Использование расширенной отладки. Часть 2: Если тормозят некоторые страницы сайта или ругается подд
Бывает так, что весь сайт работает достаточно шустро, а некоторые его страницы – заметно медленнее. Или создали новый сайт, настроили компоненты, виджеты, добавили материалы, а он тормозит. Или страницы сайта стали загружаться через раз, а поддержка хостинга начала ругаться на превышение лимитов процессора/памяти или на слишком «тяжёлые запросы». Как понять, что именно вызывает эти проблемы? Конечно, можно по очереди отключать компоненты, убирать виджеты и пытаться визуально оценить, насколько быстрее стал работать сайт. Но легче и удобнее разобраться с причинами вышеописанных проблем используя «Расширенную отладку». Материал в первую очередь рассчитан на пользователей, которые только начинают разбираться в InstantCMS 2. Но также будет полезен как пример использования отладки и для более опытных.
Обновление класса расширенной отладки и оптимизации для InstantCMS 2.3.0.
Долгожданное обновление класса расширенной отладки и оптимизации для InstantCMS 2.2.1.
Поскольку звучат вопросы о том, как можно определить, в чём может быть причина притормаживаний на сервере, решил написать отдельный пост по этой теме. Чтобы понять, что именно вызывает тормоза, нужно узнать время работы разных частей скриптов и разных компонентов сервера, а потом сравнить это время много раз, обновляя страницы в разное время.
Обновление класса расширенной отладки и оптимизации для InstantCMS 2.1.2. Также исправлены несколько ошибок предыдущей версии.
Обновлённая версия класса расширенной отладки для InstantCMS 2.1.0-2.1.1. Добавил в этой версии: ------------- + Перехват и вывод в лог ошибок PHP. + Сообщения админу о критических ошибках. + Вывод пользователям (не админам) заданного текста вместо информации об ошибке. + Блоки в настройках сделаны в виде вкладок. + Добавлены фильтры для автозагрузок классов. + Сделан учёт расхода памяти на отладку – строка 'debug' в блоке 'Memory' суммарной таблицы. При минимальных настройках класс использует всего 11 килобайт. + Подсветка цветом медленных запросов в логе. + Подсветка цветом "тяжёлых" хуков в логе. + Подсветка цветом "тяжёлых" виджетов в логе. + Добавлена обработка строковых параметров в настройках. Теперь можно использовать одинарные и двойные кавычки в строковых полях настроек. + Функция вызова точки отладки 'DebugCheckPoint' теперь имеет другое, более короткое имя 'dcp'. Я замучался писать длинное имя при постоянном её использовании и решил упростить жизнь себе и вам. 😊
Мощный, но лёгкий класс расширенной отладки для InstantCMS 2.0. Обновлённая версия с новым функционалом. В ответ на просьбы к разработчикам CMS на форуме – теперь также собирается и выводится информация о событиях/хуках и виджетах!