Фильтр "Вставка модуля" v 1.0.0

+69
3.76K
Приветик!
Давненько что-то я ничего не писал )
Не знаю было это или не было, вчера увидел темку, решил сделать немного по-другому. Вещь то нужная. Сделать так, чтобы можно было выводить любой модуль фильтром в любом нужном месте, просто вставивь {МОДУЛЬ=id_модуля}. Пока добрался до компа и наваял, в теме уже успели продвинуться и Pasha уже высказал подобную мысль. Ну, раз сделал, выложу ))

Фильтр позволяет вставить в любое место, где доступны фильтры подобный шаблон и в этом месте будет выводиться результат работы нужного модуля. Мало вывести модуль, нужно ещё и оформить. Поэтому в фильтре доступны параметры.
Шаблоны для вставки:
{МОДУЛЬ=id_модуля}, где id_модуля — уникальный идентификатор модуля, можно узнать в админке.
{МОДУЛЬ=id_модуля&style=css_стили_модуля&class=класс_блока_модуля}, то есть можно передать параметры
style или class. Параметры необязательны. Можно вставить шаблон без параметра, с одним параметром или двумя
параметрами.
Примеры:
{МОДУЛЬ=55}
{МОДУЛЬ=23&style=margin:20px;float:left;}
{МОДУЛЬ=23&class=my_class}
{МОДУЛЬ=23&style=margin:20px;float:left;&class=my_class}

Сделан инсталлятор для установки фильтра. Поэтому инструкция для установки будет выглядеть так:
1. Распаковать архив на хостинге;
2.Перейти по адресу ваш_любимый_сайт.ру/f_module_install.php. Это инсталлятор фильтра.
3.Удалить на хостинге инсталлятор. Файл f_module_install.php в корне сайта.

Скачать архив фильтра

Демо: localhost
Ничего сложного не вижу, как установить фильтр на копии сайта на локалхосте и протестировать. У каждого есть копии icms на локалхосте, думаю smile

Вроде всё работает. Поверхностно тестировал. На большее нет времени.

Приятного пользования.

P.S. Друзья, фильтр как есть. Дальнейшей поддержки не обещаю. Получится — хорошо. Нет, значит нет. Также и прошлые разработки. Не держите зла.

UPDATE 19.12.2013

Архив перезалит. Подробности в комментарии.
+6
Марат Марат 8 лет назад #
Забыл упомянуть некоторые нюансы. Модуль можно вставить везде, где работают фильтры. А работают они в статьях и модулях. Получается любой модуль можно вставить в пользовательский модуль. Также для пользовательских модулей можно вставить модуль в себя. Не советую так делать. Будет бесконечный цикл.
Также в одной статье можно выводить несколько модулей. Если в модуле есть какие то ajax подгрузки, то две копии одного модуля могут работать некорректно. Поэтому, если есть такая необходимость, лучше делать другую копию модуля. и выводить уже две разные модули. Если аякс подгрузок нет, например какой-то пользовательский модуль с кодом какой то контекстной рекламы, то можно выводить несколько копий одного модуля. В общем, масло масляное. Кому надо, разберутся hoho
+2
Олег Васильевич я Олег Васильевич я 8 лет назад #
Спойлер
+2
deltas deltas 8 лет назад #
Группе, к которой вы принадлежите, запрещено просматривать этот скрытый текст
+2
eoleg eoleg 8 лет назад #
Группе, к которой вы принадлежите, запрещено просматривать этот скрытый текст
smile
+3
deltas deltas 8 лет назад #
Ну да! Поэтому и писал под хайдом, боялся гости не поймут))
Сорри за флуд zst
0
Денис Васильевич Денис Васильевич 8 лет назад #
это в магазинах, под скидками маскируют распродажу.. у нас всё по совести :)
0
Марат Марат 8 лет назад #
Распродажу людям испортите такими подарками laugh
Да нет. Я не такой laugh
+2
deltas deltas 8 лет назад #
Как всегда, Марат на высоте +
Только вчера задумался модуль вывести в нужном блоке без шаблона, как то не сообразил что его надо кешировать...
+1
Amurland Amurland 8 лет назад #
Круто! Была мысль, но не знал как оформить установщик! Молодец!
+2
Майкл Майкл 8 лет назад #
Спасибо Марат, за полезную и бесплатную вещь!
+1
lezginka.ru lezginka.ru 8 лет назад #
я устал ставить плюсы Марату :)
сделайте кто-нибудь скрипт, чтобы от меня(юзера) при каждом посте можно было бы плюсовать определенным кодерам :)
0
letsgo letsgo 8 лет назад #
Спасибо Марат, как всегда полезная деталь. С наступающим годом тебя, пусть поменьше будет забот и больше радости. Услышал недавно фразу: не работая не проживешь, работая - жизнь не увидишь. Понравилась, поэтому желаю тебе заниматься любимым делом, чтобы и работа шла и жизнь дарила больше радости.
+1
Марат Марат 8 лет назад #
Спасибо, Саня!
И тебя с наступающим!
letsgo:
поэтому желаю тебе заниматься любимым делом, чтобы и работа шла и жизнь дарила больше радости
Скорее всего, всё к тому и идет smile
+2
Марат Марат 8 лет назад #
Друзья, всем спасибо за добрые слова!
Работает хоть? Проверял кто? Или в преддверии праздника уже всем не до работы? smile
0
Guga Guga 8 лет назад #
Работает. Спасибо. Все отлично. Покроет такой способ 80% случаев.
0
Олег Васильевич я Олег Васильевич я 8 лет назад #
Работает без проблем. Ещё раз, спасибо!
0
Юрий (Pizza Celentano) Юрий (Pizza Celentano) 8 лет назад #
А у меня почему-то несовсем корректно работает, если более одного модуля вставлять, то просто дублируется первый на месте второго. Например вставляю модуль случайное из каталога {МОДУЛЬ=55} и следом например случайная картинка или другой модуль {МОДУЛЬ=105}, в итоге получается два случайное из каталога {МОДУЛЬ=55}, в чём может быть проблема?
+2
Марат Марат 8 лет назад #
Есть такое дело. Спасибо!
Чтобы исправить, перед строками в конце фильтра(/filters/f_module/filter.php):
Код PHP:
  1. //замена шаблона результатом работы модуля
  2. $text = preg_replace($regex, $output, $text);
вставьте следующее:
Код PHP:
  1. //корректируем $regex, вставивь установленный идентефикатор модуля
  2. $regex = '/{(' . $phrase . '='.$module_id.')(.*?)}/i';
0
Юрий (Pizza Celentano) Юрий (Pizza Celentano) 8 лет назад #
Да, спасибо, теперь всё чётко работает, нужно перезалить архив с исправлением.
0
Модератор Реальности Модератор Реальности 8 лет назад #
установил почему то выдал ошибку
0
Марат Марат 8 лет назад #
Поконкретнее пожалуйста. Какая ошибка, при каких условиях? Может можно увидеть где. Чтобы я смог воспроизвести и понять причину. Можно в личку.
0
Странник Странник 7 лет назад #
Маратище! Спасибище! От меня огромный ПЛЮСИЩЕ!
Если серьезно, друг, очень пригодилось. Только стала задача сделать что-то подобное, я уже сел писать свои каракули (тоже фильтр), а тут глядь: УЖЕ ВСЕ ГОТОВО на 98%!!!!!
Для своей задачи допилил за 15 мин.
Спасибо!
0
Александр Александр 7 лет назад #
Огромное спасибо ура я нашел это)) так хотел сейчас такое применить статистику вывести в 1 статье))) Спасибо!!!!!
0
Странник Странник 7 лет назад #
Для справки еще фильтры
0
Тимофей Тимофей 6 лет назад #
Ни кто не подскажет, а что нужно исправить чтобы под 1.10.1 заработало?
0
Странник Странник 6 лет назад #
Если фильтр сделан под 1.10.3 и позже, под 1.10.1 он работать не будет. Причина - различие методов ядра в этих версиях. Выход - сделать миграцию до 1.10.3
0
Юрий Юрий 6 лет назад #
Марат, большой Рахмет ! 1.10.6 работает

Еще от автора

PHP классы для работы с VK API и с API Яндекс Метрики
Доброго времени суток, коллеги! Выкладываю два класса: -для работы с API Вконтакте; -для работы с API Яндекс Метрики.
Микрохак "Кириллический ури для любой страницы"
Всем привет! Простите за столь короткий пост. Навеяно комментарием. Посчитал нужным, что может пригодиться кому-то, а в комментах просто затеряется.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.