+4.51
Рейтинг
42.63
Сила

Как сохранить совместимость при адаптации js шаблона (плагина) к js движка

Зачастую при адаптации шаблонов/плагинов так и тянутся руки поправить js в движке, что чревато потерей совместимости с другими шаблонами и плагинами.

Чтобы разобраться с этим вопросом и с целью самообразования, решил написать этот топик — может кому-то пригодится.

Какие есть варианты:
  1. Редактировать js-файлы прямо в движке
  2. Переписать (переопределить) нужный метод

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

Push уведомления о новостях/событиях на сайте.

Всем привет.
У меня такой вопрос, все же сталкивались с автоматизированными Push уведомлениями которые предлагает сайт?
Кто нибудь реализовывал это на LS?
Если да, то подскажите как или через какие сервисы.

З.Ы. Я имею в виду не habrahabr.ru/post/183630/, а Push уведомления, как к примеру на www.iguides.ru/.
Знаю, есть сервис jeapie.com, но настроить на автоматические уведомления при добавление контента не получилось.

FAQ по работе с плагином «Main Preview»

Больше всего вопросов при использовании моих шаблонов возникает по поводу работы плагина «Main Preview». Ниже — небольшой FAQ по плагину.

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

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

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

Плагин "Journal Page"

Давно подумывал сделать плагин, который выводил бы блоки с топиками из указанных блогов (для каждого блога отдельный блок с его топиками): просто иногда хочется разнообразить вывод топиков и такой плагин был бы очень кстати.

С последним же релизом плагина «Main Page» данная идея переросла в нечто большее, появилось немного свободного времени и в результате получился плагин «Journal Page».

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

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

Feedbacks — лента событий связанных с пользователем (по аналогии «Ответы» в вк)


Feedbacks — лента событий связанных с пользователем (по аналогии «Ответы» в вк).

Создает отдельную страницу, на которой отображаются события связанные с пользователем, а именно:
Лайки/дислайки комментариев пользователя
Лайки/дислайки профайла пользователя
Лайки/дислайки топиков
Ответы на комментарии
Теперь ваши пользователи ничего не пропустят, особенно касаемо старых топиков, и не будет анонимных «кармодрочеров».

Так же при помощи хуков можно выводить в шапку сайта информер с количеством событий (пример на скриншотах)

Установка:


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

TwitterRead — добавляет на сайт страницу с выводом популярных твит-аккаунтов. Работает с api.


ВНИМАНИЕ: Плагин ожидает модерации в каталоге.

TwitterRead — добавляет на сайт страницу с выводом популярных твит-аккаунтов. Работает с api.

Пример: mvpclub.ru/twitter/

Красивый и удобный вывод самых популярных твитов на ваш сайт. Можно добавлять любые аккаунты вручную. Сортировка происходит по количеству ретвитов. Все полученные твиты хранятся в базе. Очень увлекательная и затягивающая штука. Люди подсаживаются и нескончаемо читают самые последние новости, твиты известных людей, троллей и т.д. Чем более разношорстные аккаунты добавите, тем шире будет охват. Даже те, кто не юзают твиттер, начинают активно читать на сайте твиты из-за удобной подачи и самых последних и актуальных новостей. Идея взята у проекта тжурнал.

Принцип обновления ленты:
Читать дальше →

Мультизагрузка изображений

Простой (самый простой) способ реализовать мультизагрузку картинок.

В шаблоне правим window_load_img.tpl, делаем массив img_file[] и дописываем multiple
<input type="file" name="img_file[]" id="img_file" value="" class="input-text input-width-full" multiple />


И ActionAjax.class.php, вот функция EventUploadImage() целиком
	/**
	 * Загрузка изображения
	 *
	 */
	protected function EventUploadImage() {
		/**
		 * Т.к. используется обработка отправки формы, то устанавливаем тип ответа 'jsonIframe' (тот же JSON только обернутый в textarea)
		 * Это позволяет избежать ошибок в некоторых браузерах, например, Opera
		 */
		$this->Viewer_SetResponseAjax('jsonIframe',false);
		/**
		 * Пользователь авторизован?
		 */
		if (!$this->oUserCurrent) {
			$this->Message_AddErrorSingle($this->Lang_Get('need_authorization'),$this->Lang_Get('error'));
			return;
		}
		$sFile=null;
                
                
                if (isPost('img_url') && $_REQUEST['img_url']!='' && $_REQUEST['img_url']!='http://') {
                        /**
                         * Загрузка файла по URl
                         */
                        $sFile=$this->Topic_UploadTopicImageUrl($_REQUEST['img_url'],$this->oUserCurrent);
                        switch (true) {
                                case is_string($sFile):

                                        break;

                                case ($sFile==ModuleImage::UPLOAD_IMAGE_ERROR_READ):
                                        $this->Message_AddErrorSingle($this->Lang_Get('uploadimg_url_error_read'),$this->Lang_Get('error'));
                                        return;

                                case ($sFile==ModuleImage::UPLOAD_IMAGE_ERROR_SIZE):
                                        $this->Message_AddErrorSingle($this->Lang_Get('uploadimg_url_error_size'),$this->Lang_Get('error'));
                                        return;

                                case ($sFile==ModuleImage::UPLOAD_IMAGE_ERROR_TYPE):
                                        $this->Message_AddErrorSingle($this->Lang_Get('uploadimg_url_error_type'),$this->Lang_Get('error'));
                                        return;

                                default:
                                case ($sFile==ModuleImage::UPLOAD_IMAGE_ERROR):
                                        $this->Message_AddErrorSingle($this->Lang_Get('uploadimg_url_error'),$this->Lang_Get('error'));
                                        return;
                        }

                        if ($sFile) {                        
                                $sText=$this->Image_BuildHTML($sFile, $_REQUEST);
                        }

                } else {

                        foreach ($_FILES['img_file'] as $k=>$v){
                           if(is_array($v)){
                               foreach ($v as $sk=>$sv){ 
                                        $arr[$sk][$k]=$sv;
                                }
                               }
                            }

                        $sText = "";

                        foreach ($arr as $_FILES['img_file']) {

                                /**
                                 * Был выбран файл с компьютера и он успешно зугрузился?
                                 */
                                if (is_uploaded_file($_FILES['img_file']['tmp_name'])) {

                                        if(!$sFile=$this->Topic_UploadTopicImageFile($_FILES['img_file'],$this->oUserCurrent)) {
                                                $this->Message_AddErrorSingle($this->Lang_Get('uploadimg_file_error'),$this->Lang_Get('error'));
                                                return;
                                        }
                                        /**
                                         * Если файл успешно загружен, формируем HTML вставки и возвращаем в ajax ответе
                                         */
                                        if ($sFile) {
                                                $sText.=$this->Image_BuildHTML($sFile, $_REQUEST);
                                        }

                                }	

                        } //foreach

                }

		$this->Viewer_AssignAjax('sText',$sText);		
		
	}


такие дела

Проблема при загрузке изображений в фотосет

При работе на Shared хостинге возможна ситуация, когда загрузка изображений в фотосет зависает на фразе «file.png Resize...», хотя файл на сервер загрузился и все операции над ним выполнились. Эта ошибка сопровождается следующим сообщением в log-файле:
[15-Nov-2013 00:00:00] PHP Warning:  filesize() [<a href='0function.filesize0'>function.filesize0</a>]: open_basedir restriction in effect. File(/var/sites/site.ru/tmp/phpsnEaep) is not within the allowed path(s): (/var/sites/site.ru/htdocs/:.) in /var/sites/site.ru/htdocs/classes/actions/ActionPhotoset.class.php on line 267


Вызвана данная проблема одновременным действием двух источников:
1) не совсем корректной настройкой PHP, связанной с включенными директивами "open_basedir" и "upload_tmp_dir";
2) неточностью в определении размера загруженного файла в классе "ActionPhotoset".
Исправление любого из пунктов приводит к нормальной работе процесса загрузки.

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

Плагин «Домен для статики»

Описание

Плагин предназначен для переноса статических файлов на отдельный домен (поддомен).
Обязательным условием является использование одного сервера (общей файловой системы для сайта и для статических файлов).

GitHub: github.com/wasja1982/livestreet_staticdomain

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

Посылаем красиво. Шаблон для рассылки LSDigest :) [Обновлено]

Здравствуйте! У нас на сайте стоит замечательный шаблон Vintage. Его разрабатывает — и очень активно — пользователь angelsmedia . Он очень нравится всем — и пользователям, и мне, и моей бабушке. Она мне прямо так и скзала: «Это просто замечательный шаблон!»

А ещё у нас стоит бесплатный плагин LSDigest. Его написал известный в сообществе программист stfalcon , за что ему огромное спасибо! Плагин этот выполняет очень нужную функцию — он рассылает уведомления о том, какие самые интересные записи появились на сайте за прошедший период. Но у него есть одна особенность — он не занимается форматированием текста. Поэтому, если в начале топиков есть картинки, верстка едет. Да и сами письма выглядят как plain text.

Нас это очень расстраивало. Поэтому мы привлекли сообщество для «модернизации» шаблона письма таким образом, что бы пользователь, глядя на него, мог сразу сказать: «О! Опять они!». То есть, что бы сохранить узнаваемость, шаблон письма должен был быть похож на шаблон Vintage.

Первым откликнулся пользователь refik . И пока я ходил за сигаретами он успел сверстать шаблон рассылки. Это, надо сказать, поразило меня до глубины души. Шаблон рассылки оказался настолько хорошим, что мне подумалось: «Иван, безусловно, великолепный фрилансер и его можно рекомендовать к сотрудничеству смело.»

И когда все было готово и все вопросы улажены, я сказал себе: «А чо? Не отдать ли шаблон пользователям?». Иван был не против, Анатолий (автор Vintag'а) — тоже. Посему я от имени нас троих выкладываю в общий доступ шаблон рассылки. Что бы ваши пользователи были довольны и никогда не отписывались!
Посмотреть превью шаблона и скачать