Система блоков - расставляем точки...

47
Была потребность разобраться с системой блоков. Очень много чего перечитал с сайта. Например, Система блоков. Ниже будет краткое изложение полученных знаний. Попытаюсь рассказать про систему блоков простым языком, чтобы и новички поняли.

Самое главное, что я выяснил:
1. Блоки можно создавать самостоятельно.
2. Блоки можно размещать в произвольном месте страницы (нужно заранее указать эти места)
3. Блоки могут отображаться в зависимости от Action'ов и Event'ов
4. Блоки могут отображаться в зависимости от адреса страницы. Адрес страницы можно задать с помощью регулярных выражений.
Итак, основные моменты.

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

Перенос всех Action на субдомен

3
Может быть кто то уже реализовывал перенос основных Action и Action плагинов на суб домен, как это можно сделать что бы автоматически получалось как то так, допустим www.site.ru/topic/add/ был перенесен на topic.site.ru/add/ или www.site.ru/profile/admin/ ---> profile.site.ru/admin/ попробовал найти в темах через поиск но что то пока нечего не нашёл…
Может быть у кого нибудь есть мысли как это можно реализовать..?

Наследование одного екшена разными плагинами

6
Здесь я высказался о проблеме. Сегодня я расскажу как её решить, а точнее какие изменения внести в ядро 042 из последней транковой версии.
Проблема эта однажды коснется почти каждого т.к. она весьма серьезная и с ней столкнутся — раз плюнуть, поэтому пост заносим в избранное.

Коротко напомню суть проблемы — если два разных плагина наследуют один общий екшен (например ActionSettings), и оба плагина выводят что-то в шаблон, то один из плагинов (который был активирован первым) завершится ошибкой не нахождения шаблона.

Fatal error: Uncaught exception 'Exception' with message 'Can not find the template: actions/ActionSettings/abc.tpl' in лалала



Читать дальше
  • +1
  • 03 августа 2011, 04:16
  • PSNet

Кто нибудь может пояснить разницу? -РЕШЕНО

 
Значит если делаем свой плагин то в папке <название_плагина>/classes/actions/ в ней файл вида,
Action<....>.class.php так вот заметил что в некоторых поразному объявляют класс:

1. class PluginAceadminpanel_ActionAdmin extends PluginAceadminpanel_Inherits_ActionAdmin {…

2. class PluginAceadminpanel_ActionLanguage extends Action {…

3. class PluginStream_ActionStream extends ActionPlugin {…

4. class PluginAceadminpanel_AdminSiteReset extends AceAdmin {…

Это примеры из реальных плагинов: меня вот интересует когда использовать эти различные способы т.е. «extends PluginAceadminpanel_Inherits_ActionAdmin» ,«extends Action»,«extends ActionPlugin »,«extends AceAdmin ».Плагин один может быть, а в нем экшены расширяются по разному. кто нибудь поясните пожалуйста по каждому примеру? спасибо.
  • +1
  • 16 июня 2011, 10:04
  • dapon

как создать 3 уровень статичной страницы?

2
Хочу создать страницу info/help/topic/

в ActionInfo пишу:
$this->AddEventPreg('help','s','EventHelps'); /**где-то здесь ошибка**/

но выполняется
$this->AddEvent('Help','EventHelp'); 


Что не так?

как вывести информацию о пользователи в топике?

1
Привет всем! Подскажите как вывести информация о пользователи в топики (вверху).
Если мы в ActionMy получали рейтинг так:
{if $oUserProfile->getRating()>0}+{/if}{$oUserProfile->getRating()} 
то в ActionBlog такой трюк не пройдёт…

может что нужно добавить в ActionBlog.class ???

Вообще хочется сделать, что бы у топики из личного блога в место обычного меню отображалось меню как в ActionMy.

Как добавить экшн к существующему URL?

1
Что-то я никак не могу понять как добавить экшн к уже существующему URL? Например добавить функционал — site/blog/rating вот прикрутить к rating свой экшн из плагина? Только просьба как-то по-конкретней, а не комменты типа «кури Router.class.php» :)
  • 0
  • 28 декабря 2010, 17:23
  • kerby

Объясните пожалуйста, как вывести произвольный текст в произвольное место шаблона?

2
т.е. есть, к примеру, плагин или модуль и я хочу вывести результат работы какого-нить из его методов в шаблон
header_top.tpl
если есть возможность вызова методов не из плагина/модуля, то просветите тоже, если таковые имеются :)

p.s. вопрос навеян модулем «лента друзей», который тут в качестве примера предлагался, но не понятно, как мне зайдя в блоги сразу увидеть сколько у друзей прибавилось новых топиков не кликая по ним (не переходя в роут router.page.friends и не вызывая экшн)

заранее благодарен!:)

Не догоняю что делать с event

2
Заранее прошу прощения за нубский вопрос, но я не силён в ООП.
Подскажите, пожалуйста, такой момент. Сделал дополнительное поле group в профиле. Теперь мне надо фильтровать людей по этому полю по аналогии с /people/country/countryname. Предполагаю, что будет это выглядеть как /people/group/groupname
Модифицирую по имеющемуся образу и подобию classes/actions/ActionPeople.class.php добавляя:
protected function RegisterEvent() {		
                ...
		$this->AddEvent('group','EventGroup');
	}


В тупую копирую protected function EventCountry() {...} заменяя название на protected function EventGroup() {...}.
Упорно лезет 404. Где еще я что не дописал? Или я вообще не с этого края зашел?
Заранее спасибо.

Название экшена и эвента

 
В шаблоне смарти реализую подключение css и js в зависимости от экшена/эвента.
Кто-нибудь знает каким способом лучше получать текущий action/event?

Спасибо!
  • +1
  • 27 октября 2008, 11:46
  • benone