+18.11
Рейтинг
50.70
Сила

1099511627776

Оптимизация шаблонов

Пролог


Наброски по данной статье лежали ещё с конца зимы и все никак не было времени на её написание, поэтому решил опубликовать её почти «как есть» т.е. с сухими выжимками фактов, без расписанных деталей. Это поможет остальным членам сообщества совершенствовать свои шаблоны.

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

Продолжать разработку плагина «Рекламный менеджер»?

Здравствуй, {$oUserCurrent->getLogin()}!

Недавно начал делать плагин «Рекламный менеджер» для LiveStreet, но думаю что он будет бесполезен. Хотелось бы услышать мнение пользователей самой CMS, если он нужен — какие функции требуется добавить.

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

Архитектура LS:: Мапперы

Представляю первую статью цикла статей об архитектуре livestreet, я думаю будут и продолжения. Исходные коды примера, приведенные здесь доступны на github.

1. Что такое маппер
Ну-с начнем, и начнем с того, что определим, что такое маппер? Маппер, или конкретнее Data Mapper является одним из стандартных паттернов проектирования программных средств, определенный в LS как PHP-объект наследуемый от базового, для всех мапперов класса Mapper. Основным назначением маппера является отделение логики хранения данных от бизнес-логики самого приложения. Маппер содержит методы, реализующие операции CRUD (Create-Read-Update-Delete) над одной или несколькими таблицами по «просьбе» объекта. Маппер является интерфейсом между объектами и базой данных, средством, повышающим уровень абстракции в архитектуре приложения.

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

Как отделить код в плагин для тегов и дополнительных полей

Здравствуйте!
Пишу плагин. Для него необходимо чтобы у топиков были дополнительные поля (как в WP и DLE). Сама проблема создания дополнительных полей обсуждалась например здесь.
Для плагина требуется чтобы это всё делал плагин, без правок ядра, общих шаблонов и прочего.

Так же требуется обработка тега в записи. То есть появляется новый тег типа <samle_tag> и нужно его обработать. Сама обработка подобного есть и обсуждалась. Как это тоже убрать в плагин?

Подскажите куда копать? Может быть какой-нибудь хук? делегирование? или что?

Топик закрыт, решения найдены. Будет время — опишу

Небольшой эксперимент по СЕО-оптимизации шаблона LS

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

Итак, в наличии имеется сайт новостной тематики на LS, небольшой поток посетителей в основном с поисковых систем. По «важности» страницы для себя делю так: главная, страницы блогов, страницы топиков, прочие страницы.

Наблюдая за переходами из поисковиков (запросы по которым пользователи переходят на сайт и страницы куда они попадают по этим запросам) заметил следующее: преобладающее количество запросов ведет на страницы тегов, вместо необходимых мне страниц топиков и блогов. Было решено поэкспериментировать.

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

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

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

Тайтлы


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

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

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

Валидация данных в LiveStreet 0.6

В транковую версию LS на github.com добавлен новый функционал — валидация данных и полей сущностей. Этот функционал призван заменить функцию func_check(). За основу был взят функционал валидации Yii.

На данный момент доступны следующие типы валидации:
  • Boolean — проверка значения на булевый тип
  • Date — проверка значения на формат даты и времени
  • Email — проверка корректности емайл
  • Inline — валидация произвольным методом сущности или другого объекта
  • Number — проверка на числа
  • Required — проверка на пустое или конкретное значение
  • String — проверка строк на длину
  • Type — проверка на тип значения
  • Url — проверка на корректность URL


Как использовать

В сущности необходимо составить список правил валидации.
class PluginTest_ModuleMain_EntityTest extends Entity {

	protected $aValidateRules=array(
		array('login, name','string','max'=>7,'min'=>'3'),
		array('title','my','on'=>'register'),
	);

	public function ValidateMy($sValue,$aParams) {
		if ($sValue!='Мега заголовок') {
                    return 'Ошибочный заголовок';
                }
		return true;
	}
}


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

Как создать свой вид топика, используя систему плагинов

3 года назад было написано Руководство: Как создать свой вид топика на LiveStreet. В то время ещё не было системы плагинов, и всё делалось «топорно», что в последствии затрудняло обновление движка, т.к. приходилось свои куски кода вставлять опять. С появлением системы плагинов LiveStreet стал более гибким и легко обновляемым. Передо мной встала задача создать новый вид топика, и я решил сделать это плагином. Но в процессе выяснилось, что то ли я чего-то не знаю, толи этого нет.

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

Новые возможности по переопределению/наследованию классов LiveStreet

В LS появилась новая возможность для разработчиков плагинов — наследование классов. Идея была высказана еще avadim'ом здесь.
Эта возможность позволит удобно переопределять различные методы одного класса (модуля, экшена, сущности, маппера) разными плагинами без конфликтов.
Главное отличие от делегирование — не происходит блокировки переопределения класса для других плагинов. Также есть возможность переопределения одного метода разными плагинами, но здесь разработчикам нужно быть очень осторожными и делать так, чтоб свести вероятность конфликта к минимуму.

Как использовать.
Например, нужно переопределить метод получения пути до аватара у сущности пользователя в плагине Test. В плагине необходимо объявить те классы, которые будут наследоваться. Объявление происходит в свойстве $aInherits:
<?php
class PluginTest extends Plugin {
    
    protected $aInherits=array(
       'entity'  =>array('ModuleUser_EntityUser'=>'_ModuleSide_EntityUser')
    );

    public function Activate() {        
        return true;
    }
    
    public function Init() {        
    }
}
?>

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