Как сделать вставку рекламного кода в текст статьи?

Всем привет!

Подскажите, а можно ли как-нибудь вставить в текст статьи партнерский скрипт? Его парсер режет сейчас.

Пример:

<script class="cheScrpt" type="text/javascript">
    (function(o) {
        var js = document.createElement('script');
        var id = Math.floor( Math.random()*1000000 );
        o.iframeId = "che-widget-"+id;
        js.type = "text/javascript";
        js.async = true;
        js.src = "//d2j2dl4huu79en.cloudfront.net/s/latest/widget.min.js";
        js.setAttribute("data-che-options", JSON.stringify(o));
        document.getElementsByTagName('head')[0].appendChild(js);
    })({"partnerId":1111,"widgetId":11111});
</script>


Например, где-нибудь в конфигах его прописать, а потом через шорткод вставлять в пост.

LS 2.0

Вышла стабильная LS 2.0 - а что дальше?

Всем привет.
Собственно, частично мой вопрос понятен из названия поста — вышла стабильная версия, но пока нет ясности по адаптации модулей и шаблонов. Да, есть какие-то комменты в посте с релизом… А ведь это важно, думаю, что мало к то поспорит с этим. Да, есть большие и сложные проекты, для которых большинство функционала пишется снуля… но, мне кажется, что большинство пользователей LS набирают основной функционал посредством установки и небольшой доработки готовых модулей из каталога. А это, без сомнения, выгодно и разработчикам.

----------------------------------------------------------------------------

Вообщем, о выгодах для разработчиков, об ожиданиях пользователей, о перспективах развития… и так далее можно говорить много бла-бла-ба… :)

Поэтому от прелюдий перехожу к вопросам уважаемым разработчикам модулей/шаблонов:
1. Какие планы по адаптации своих продуктов?
2. Если можете, назовите ориентировочные сроки по своим продуктам.
3. И отдельно по шаблонам. Когда в планах адаптация?

-----------------------------------------------------------------------------

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

Спасибо.

Релиз LiveStreet 2.0.0

Основные изменения относительно версии 1.0 описаны в этом посте — livestreet.ru/blog/dev_livestreet/17704.html
В текущем релизе постарались исправить баги бета-версии.
--------------------------------------------------------
Сам уже не верил, что что-то произойдет, не говоря уже о сообществе :)
За это время успел обзавестись двумя сыновьями, а тут какую-то версию не мог выпилить :)
В общем, гора с плеч, одним словом.

За эти четыре года уже всех могу не вспомнить, но хочу сказать большое спасибо deniart , что хватило терпения из года в год перелопачивать фронт. PSNet за реализацию админки (точно не помню, но версия эдак четвертая по счету), gran , kerby , Chiffa , lifecom , Chiliec , kpoxas , prokopov за несчетное число багов, и всему сообществу. Отдельно спасибо LeX — отличный источник заряда энергии.

Вот такие дела. Всем спасибо!
--------------------------------------------------------
Скачать можно здесьlivestreetcms.ru/download/get/
Документация по новой структуре фронта — github.com/livestreet/livestreet/wiki + в дистрибутиве идет плагин docs с доками по каждому компоненту.

Поддержать новость на Хабре — habrahabr.ru/post/320848/

Бета версия LiveStreet 2.0

Вышла бета версия LS 2.0
Содержит в себе множество исправлений и доработок + шаблон synio.

Скачать можно по ссылке — livestreetcms.ru/download/get-beta/
Просьба всех принять участие в тестировании версии, это поможет ускорить процесс поиска и фикса багов.

Демо в виде копии livestreet.ru доступна здесь — beta.demo.livestreetcms.com (пароли могут не совпадать с текущими, поэтому можно сделать сброс пароля)

Документация по фронту — github.com/livestreet/livestreet/wiki

Переопределения в плагине для LS 2.0

Здравствуйте, не получается переопределить шаблон в плагине. С переопределением модулей и экшенов проблем нет, переопределил нормально в $aDelegates и $aInherits, а вот шаблон не хочет.

пишу так:

public $aDelegates = array(
        'template' => array(
            'blocks.tpl' => '_blocks.tpl'
        ),
    );


но загружается tbl из папки активного шаблона, а не из плагина. В плагине tpl лежит в папке:
application/plugins/my_plugin/templates/skin/default/blocks.tpl

Имя активного шаблона отлично от default, но я пробовал и так:
application/plugins/my_plugin/templates/skin/my_template/blocks.tpl


Вообще мне нужно переопределить один из файлов компонента, но с этим вообще не понятно, примеров в документации не нашел и скопировал папку компонента в активный шаблон и в плагине пытаюсь переопределить tpl.
Может быть скажете как переопределить компонент напрямую, а не так как у меня?

Новогодняя альфа

Первым делом хотим поздравить всех с наступающим Новым 2015 Годом! Прошлый год выдался не простым, как для страны в целом, так и для LS ) Нам не удалось полностью выполнить намеченные планы, а именно, выпустить стабильный релиз LS 2.0. Но мы провели достаточно большую работу и довели разработку до альфа версии, которую и хотим сегодня презентовать.

Почему она альфа? Альфа, т.к. не успели зафиксировать все необходимые правки по frontend'у, который претерпел значительные изменения (подробнее в отдельном посте — livestreet.ru/blog/dev_livestreet/17706.html). В остальном функционал достаточно устаканившийся, но требует тестирование и мелкие фиксы.

Ниже список основных новых возможностей альфы LS относительно LS 1.0:

  • Новая структура файлов/каталог движка. Фреймворк полностью отделен от приложения.
  • Механизм универсальных категорий. Возможность привязки категорий к разным объектам.
  • Механизм дополнительных полей (EAV) для различных объектов
  • Универсальный механизм управления медиа-файлами
  • Управление типами топиков и их кастомизация
  • Встроенная поддержка превью для топиков
  • Возможность вставлять в топик несколько опросов
  • Система управления правами пользователей
  • Центральный крон
  • Новый удобный механизм загрузки фото и аватара пользователя
  • Поддержка жалоб на пользователей
  • Новый продвинутый поиск пользователей
  • Упрощения системы рейтинга
  • Поиск по сайту «из коробки» (без sphinx)
  • Новый поиск блогов
  • Категории для блогов
  • Возможность постить топики в несколько блогов
  • Опционально каптча при авторизации
  • Новый инсталлятор
  • Возможность запустить процесс обновления LS из консоли (для крупных проектов)
  • Упрощена навигация по топикам
  • Официальная админ-панель (отдельный плагин в комплекте)
  • Редактирование комментариев
  • Поддержка мульти-авторизаций для пользователей (можно одновременно логиниться с разных браузеров)
  • Поддержка работы через https, в том числе принудительное использование для страниц регистрации/авторизации
  • Возможность расширения эвентов отдельными классами
  • Существенная доработка ORM
  • Возможность не только переопределять файлы шаблона, но и наследовать их
  • Для плагинов теперь не обязательно дублировать tpl файлы для всех шаблонов. Можно их все держать в шаблоне default, а в конкретный шаблон копировать только измененные
  • Поддержка разных конфигов для разных окружений
  • Конфиги плагинов теперь можно переопределять в каталоге с главным конфигом (/application/config/plugins/[plugin_name]/config.php)
  • Удобный механизм интеграции плагинов в админ-панель — управление конфигом и собственный функционал
  • Новый модуль кеширования и логирования
  • Новый модуль для работы с изображениями
  • Поддержка миграций для плагинов
  • Весь код отформатирован под PSR-2
  • Большое число мелких фиксов и улучшений ядра
  • Переработанный фронт

Самое главное! Скачать альфу можно по ссылке — livestreetcms.com/download/get-alfa/
Дополнительно мы сделали ежедневную ночную сборку девел версии, специально для самых ативных тестеров. Скачать ее можно здесь.
Демо версия доступна на сайте — alfa.demo.livestreetcms.com

Админ-панель сейчас может отображаться не совсем корректно — она еще не адаптирована к новым стилям/компонентам ядра. Не пугайтесь )

Еще раз всех с наступающим Новым Годом!

Механизм обновления плагинов

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

Как это работает
Пользователь заливает новую версию плагина в каталог /plugins/. Система сравнивает текущую версию плагина с версией этого плагина в БД. И если версия в БД старее, то в админке появляется кнопка «Применить обновление», которая автоматически запустит необходимые скрипты для обновления.


Скрипты (классы) для обновления у плагина находятся в каталоге /update/, который в свою очередь содержит каталоги с номерами версий. Для каждой версии можно создать несколько скриптов с произвольным названием, главное, что нужно помнить — названия файлов должно быть уникальным в рамках всего плагина для всех его версий.
Файл с обновлением представляет собой класс наследник от базового класса ModulePluginManager_EntityUpdate и название класса является производным от имени файла — Plugin[plugin_name]_Update_[file_name]. Например, для файла /update/1.0/CreateTable.php класс будет таким:
<?php

class PluginArticle_Update_CreateTable extends ModulePluginManager_EntityUpdate {
	/**
	 * Выполняется при обновлении версии
	 */
	public function up() {
		if (!$this->isTableExists('prefix_article')) {
			/**
			 * При активации выполняем SQL дамп
			 */
			$this->exportSQL(Plugin::GetPath(__CLASS__).'/dump.sql');
		}
	}

	/**
	 * Выполняется при откате версии
	 */
	public function down() {
		$this->exportSQLQuery('DROP TABLE prefix_article;');
	}
}

Как видно из примера, класс содержит два метода up и down. Первый выполняется при обновлении до версии, второй при откате версии. В этих методах может быть не только работа с БД, но и другая необходимая для обновления логика.

При удалении плагина из админки выполняется автоматический откат всех изменений всех версий (метод down).
Данный поход позволит «разгрузить» у плагинов методы Activate и Deactivate от лишней логики и дать удобный механизм обновления версий. Для корректной работы данного механизма, необходимо версии плагинов именовать используя вот этот стандарт — ru2.php.net/manual/ru/function.version-compare.php, он позволит правильно сортировать версии.

RBAC - управление правами на основе ролей

В новой версии появился новый модуль Rbac — модуль управления правами на основе ролей и разрешений (RBAC).
Суть его сводится к тому, что теперь в админке можно создавать различные роли, давать ролям необходимые права (разрешения) и назначать эти роли пользователям. Роли могут наследовать от других ролей. Таким образом можно очень гибко настраивать систему управления правами.



Читать дальше →

Центральный крон

В новой версии мы реализовали механизм центрального крона. Суть в том, что для выполнения периодических задач достаточно в cron на сервере добавить только один скрипт, а периодические задачи добавлять уже в специальном интерфейсе.



В системный cron на сервере необходимо добавить скрипт — /application/utilities/cron/main.php с периодом 1 раз в 2 минуты.
Далее в специальном интерфейсе в админке можно управлять списком задач. По умолчанию созданы две задачи — очистка старого кеша и рассылка отложенных емайл сообщений. Там же можно в ручном режиме добавить новую задачу, в качестве вызываемого метода указывается полный синтаксис вызова метода модуля.

Центральный крон может работать в двух режимах — последовательное выполнение задач и параллельное (fork). Параллельный режим пока работает в тестовом режиме, т.к. до конца не протестирован. Выставляется режим в конфиге: $config['module']['cron']['use_fork'] = false;

Плагины могут добавлять в крон свои задачи. Для этого в главной файле плагина достаточно прописать специальные вызовы при активации и деактивации плагина.

public function Activate() {
    $this->Cron_CreateTask('Тестовая задача','PluginArticle_Main_RunTest',6,$this);
    return true;
}

public function Deactivate() {
    $this->Cron_RemoveTasksByPlugin($this);
    return true;
}