+23.14
Рейтинг
79.20
Сила

Владимир

Устанавливаем коды бирж ссылок на Livestreet

Здесь периодически возникают вопросы о том, как подключить LS 0.51 к биржам ссылок
Проблема в том, что текущая версия Smarty не поддерживает тег {php}.
Есть советы разрешить этот тег в директивах Smarty.
Но у меня получилось только с кодом от Sape. Другие биржи упорно не находили кода(( В конце концов помогла корпорация добра.
Итак,
  1. Заливаем в корневую папку хостинга нужны файлы и папки, устанавливаем нужны права на запись
  2. Заходим в папку /www/ваш сайт/engine/lib/external/Smarty/libs/plugins
  3. Создаем файл под названием function.trustlink.php или function.sape.php
    В него помещаем следующий код (на примере trustlink )
    <?php
    function smarty_function_trustlink($params,&$smarty)
    {
    define('TRUSTLINK_USER',
    'ваш хеш код');
    require_once($_SERVER['DOCUMENT_ROOT'].'/'.
    TRUSTLINK_USER.'/trustlink.php');
    $o['charset'] = 'UTF-8';//кодировка сайта
    $trustlink = new TrustlinkClient($o);
    unset($o);
    echo $trustlink->build_links();
    }
    ?>
  4. Далее идём к вашему шаблону и вставляем в него
    {trustlink}
  5. профит:)
Ссылки для тех, кто хочет монетизировать свой сайт на livestreet:
три наиболее крупные биржи
сапа
трастлинк
линкфеед

У нас есть идея и нам нужен программист ©

Добрый вечер LiveStreet!

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

С чем начнем работать:
Не так давно я запустил сайт на LS по онлайн (ммо) играм. Проект работает на немного измененном шаблоне simple. Собственные наработки пока не закончены и находятся на другом, тестовом сервере, заинтересованным в сотрудничестве я их обязательно покажу. Но чтобы дать какое-то представление, для сравнения скажу что внешний вид будет больше напоминать первые версии google+, чем большинство шаблонов livestreet (Надеюсь, буду понят правильно. Большинство доступных шаблонов на LS обладает похожим, визуальным “каркасом” и возможностями). Будет нужен больший уклон на социальные взаимодействия пользователей и создание полноценного функционала для сообществ (для этих целей купил плагин “Компании” и немного изменил его, но нужны более масштабные изменения, “на бумаге” все есть, воплотить идеи в код, мне к сожалению не по силам)
Читать дальше →

Nofollow для всех, кроме Администратора [Решено]

Друзья, требуется ваша помощь. Недавно решил попробовать Livestreet. До этого делал не сложные сайты и разбираюсь в HTML гораздо лучше, чем в PHP.

Установил ЛайвСтрит, закрыл ссылки тегом nofollow, но вот беда, хочу убрать nofollow для админских постов. Пересмотрел много сообщений на данном форуме. Наткнулся на пост В топку noindex

В комментариях к нему один из участников предлагает следующее решение проблемы:
Text.class.php
168 строка добавьте
if (BLOG_URL_NO_INDEX && !$this->oUserCurrent->isAdministrator()) {

и топики созданные админом не будут проходить через MakeNoindex.

Попробовал так сделать. Не выходит. Думаю потому, что ответ уже устарел, ведь дан он был в 2009 году. Возможно сейчас эту строку нужно добавлять в другое место. Проблема в том, что я не знаю, куда именно. Поэтому решил задать вопрос снова: подскажите, как можно убрать nofollow из постов Администратора?

Моя версия LiveStreet — 0.5.1

РЕШЕНИЕ ДАННОЙ ЗАДАЧИ
Благодарность beauty_free и ort за то, что отозвались и помогли в решении проблемы.

Итак, в файле Text.class.php (/engine/modules/text.Text.class.php) находим строку (у меня строка 79)
if (Config::Get('view.noindex') and isset($this->oJevix->tagsRules['a'])) {
    $this->oJevix->cfgSetTagParamDefault('a','rel','nofollow',true);
}

Заменяем на
$oUserCurrent = $this->User_GetUserCurrent();
if (Config::Get('view.noindex') and isset($this->oJevix->tagsRules['a']) and (!$oUserCurrent or !$oUserCurrent->isAdministrator())) {
    $this->oJevix->cfgSetTagParamDefault('a','rel','nofollow',true);
}

Результат: ссылки с администраторских постов становятся do-follow. (В уже созданных постах ничего не изменится, нужно пересохранять старые посты)

Full Cache. Простое Frontend кеширование без Nginx

Цель. Снизить нагрузку при большом потоке незарегистрированных пользователей.
Причины нагрузки.
1) Даже при включении бэкенд кеша любого вида(memcache, file, xcache) движок все же ест память, так как структуру данных он выстраивает в любом случае. При большом количестве плагинов растет количество классов и экземпляров этих классов, которые загружаются в память. В данном случае использование бэкенд кеша увеличивает скорость работы за счет кеширования результатов запросов в базу данных. Но размер потребляемой памяти остается тот же. Например, у меня страница топика ела 19 Мб, а список — 30мБ. При этом частично помогает, например, использование ссылок на объекты с помощью & при переборе, а не их копий. Но все же это крошки.
2) Даже при полном кеше БД все же выполняются несколько запросов, таких как получение данных о сессии или update таблицы просмотров. Под нагрузкой и при использовании InnoDb базы «update запрос» может очень сильно тормозить.
Ресурсы и методы
Собственно смысл прост. Он состоит в том, чтобы один раз генерировать страницу, а потом отдавать ее сразу.
Проверять на существование и отдавать кеш надо будет перед запуском движка, что разгрузит потребляемую память.

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

Новое в LiveStreet 1.0 для разработчиков

Для разработчиков плагинов и шаблонов в LiveStreet 1.0 есть некоторые изменения.
Постараюсь их все собрать в одном месте.
Изменений, на самом деле, не так много.

Список:
  1. Модуль GEO, теперь в своих плагинах с помощью него можно делать географические привязки различных объектов
  2. Модуль Subscribe, организация подписок пользователей на различные события и рассылка по ним. Например, через него реализован механизм подписки на комментарии к топикам
  3. js вынесены за пределы шаблона в библиотеки, теперь в шаблонах достаточно только переопределить необходимый функционал
  4. Механизм валидации данных, подробнее — livestreet.ru/blog/dev_documentation/10221.html
  5. Возможность в тулбар добавлять свои элементы через стандартных механизм блоков
  6. Консоль для автоматической генерации каркаса плагина
  7. Переопределять настройки редактора стало проще, теперь они находятся в ls.settings
  8. Класс Object переименован в LsObject, позволит избежать проблем с некоторыми IDE и подключить автоподстановку методов
  9. Доработан модуль Image, теперь для сохранения изображения на другой сервер, достаточно переопределить методы SaveFile() и RemoveFile()
  10. Каптча вынесена в блочный хук {hookb run=«popup_registration_captcha»}, что позволит ее переопределить
  11. Возможность делать всплывающие подсказки через poshytip или infobox.js (с погрузкой данных через ajax)
  12. Появился модуль Tools, сейчас в нем только один метод — формирование облака тегов
  13. Шаблоны блоков перенесены в отдельный каталог /blocks/
  14. При ручном определении сеттеров в сущностях теперь следует возвращать данные как return $this->_getDataOne('blog_id'); — это позволит избежать проблемы с Notice ошибками
  15. Прямой эфир теперь автоматически группирует вкладки, если их много, в выпадающий список
  16. Смена приоритетов при загрузке блоков — теперь блоки из конфига загружаются после блоков, объявленных в коде экшенов, соответственно блоки из конфига имеют более высокий приоритет. Это позволит применять правила к блокам после окончательного определения экшена/евента, которые можно переопределить в ходе выполнения логики экшена/хуков.
  17. Возможность делать именованные евенты и управлять блоками из конфига о их именам. Например для евента на основе регулярно выражения можно задать имя и его использовать в правилах блоков. Если имя не задать, то оно автоматически определится как имя метода евента.
  18. Теперь все текстовки плагинов помещаются в пространство 'plugin.name', например, Get_Lang('plugin.page.admin_title');


Если есть вопросы, то отвечу более подробно.

Установка Livestreet с нуля (Debian): nginx + mysql + php-fpm + apc + memcached + sphinx

Возможно, этот гайд даже кому-нибудь понадобится.

0) Итак, у нас имеется свежепоставленный Debian с настроенным ssh-доступом и юзер с правами, достаточными для работы sudo.
Здесь и далее "#" в начале команды означает, что ее необходимо запускать с правами root-пользователя (например, с помощью sudo)
1) Пакеты будем ставить из репозитория dotdeb, поэтому для начала добавим его в sources.list:
# nano /etc/apt/sources.list

дописываем в конец файла
deb http://packages.dotdeb.org stable all

Далее импортируем ключ dotdeb'а:
wget http://www.dotdeb.org/dotdeb.gpg -O - -q | sudo apt-key add -

Обновляем список пакетов
# apt-get update

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

Seo настройки сайтов на LS

Что-то так мало инфы на сайте по этому поводу, я решил по-немногу собирать все в этом топике.

Тайтлы


Как я вижу нормальную работу с тайтлами:

1. Главная имеет тайтлы с ключами
2. На внутренних в тайтле выводим название статьи + рубрика + название сайта(не обязательно). Причем, если название сайта и выводить, то только краткое и оно не должно повторять тайтл главной. Или же вообще выводить исключительно в тайтле название статьи(топика) + возможность указывать тайтлы отдельно.

Как сейчас по дефолту — название сайта = тайтлу и это название лепится везде на всех страницах.
Читать дальше →

Краткий мануал по работе с блоками или как правильно изменять шаблоны LS

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

Надеюсь данный топик поможет начинающим понять структуру LS, как с ним работать, как редактировать шаблоны и как добавлять нужные блоки на сайт.


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

Боремся за место на диске

На выходных досмотрелся что движок не удаляет загруженные на сервер оригиналы картинок в фотосетах, аватарках пользователя и аватарках блогов. Учитывая что по умолчанию для фотосета выставлено 6Мб на картинку и 30 картинок для загрузки это будет 6 х 30 = 180Мб на один фотосет это конечно ничто для хостинга в 3Тб, но для 2Гб хостинга это всего 11 фотосетов, ужос!!!
Попробовал поставить плагин пылесос, думал он поможет, но увы там этого не реализовано.
Пришлось лезть в исходники. Вобщем вот что получилось (для LS 0.5.1) (Для лентяев скачать готовое):

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

Рекомендация к использованию: Наследование шаблонов

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

Коротко о файлах в примере (ссылка на архив внизу):

  • topic.prototype.tpl — прототип топика, содержащий всю повторяющуюся разметку. Использованы вложенные конструкции типа
    {block name=...}
  • topic_link.tpl, topic_photoset.tpl, topic_question.tpl, topic_topic.tpl — файлы, наследующие и заменяющие/дописывающие некоторые блоки прототипа топика (topic.prototype.tpl)
  • topic.social.tpl — включение с кодом кнопочек публикации в разные соц-сети.


Коротко о содержании файлов:

Посмотрев файлы примера, не сложно заметить, что файлы topic_*.tpl содержат:
  1. в начале каждого файла наличиствует код
    {extends file=topic.prototype.tpl}
  2. минимум специфической разметки, обрамленной в конструкции
    {block name=... флаг}
    — это замены и дополнения блоков. Флаг может либо отсутствовать (что означает полную замену содержимого блока), либо принимать принимать значения:
    • append — дописывает в конец содержимое блока к наследуемому блоку.
    • prepend — дописывает в начало содержимое блока к наследуемому блоку.
    • hide — скрывает блок (насколько я понял, если добавить в блок прототипа, то по умолчанию блок будет скрыт).
    • nocache — запрещает кеширование содержания блока (а это вообще актуально для LS?).


Документация


ZIP-архив с примером