Ошибка не нахождения таблицы при наследовании модуля плагина работающего на орм и с указанием кастомных имен таблиц через конфиг

Баги орм все ещё держатся за ручки и легально водят хороводы вместе с хаками! В этой истории все замечательно, особенно то, что в связи с тем, что по-умолчанию таблицы орм для плагинов в лс 2.0 будут именоваться по-умолчанию не так как в 1.0.3 (ура), а с именем префикса плагина, то этот баг для сложных проектов был бы очень веселой штукой.

Ошибка не нахождения таблицы при наследовании модуля плагина работающего на орм и с указанием кастомных имен таблиц через конфиг →

Не используйте константы в сущностях

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

Не используйте константы в сущностях →

Наследование плагином объектов другого плагина

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

Наследование плагином объектов другого плагина →

Пример наследования кода в JS

FAQ
Задача: нужно очистить текст в textarea при загрузке изображения в топик (после нажатия на кнопку «Загрузить» в модальном окне загрузки изображения в топик).

Пример наследования кода в JS →

Системные модули, которые наследовать нельзя

Трюки с LiveStreet
Чтобы не быть многословным — в ЛС (как минимум текущей версии 1.0.1 и всех более ранних) нельзя наследовать / делегировать два системных модуля ядра: модуль плагина (Plugin) и модуль Хука (Hook). Все попытки наследовать данные модули ровным счетом ни к чему не приведут — они просто будут проигнорированы. В коде движка жестко зашито исключения на эти два модуля.

Системные модули, которые наследовать нельзя →

Написание родительского класса при наследовании

Трюки с LiveStreet
Когда в главном классе плагина вы указываете определенного модуля вы пишете:

  protected $aInherits = array (
    'module' => array ('ModuleName')
  );

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

class PluginTest_ModuleName extends PluginTest_Inherit_ModuleName {/*...*/}


Написание родительского класса при наследовании →

Наследование в плагине

Трюки с LiveStreet
Как известно, для наследования у плагинов в главном классе (Plugin) есть переменная aInherits, которая содержит ассоциативные массивы module, mapper, action, entity, template, block, которые, в свою очередь, указывают на ассоциативный массив, который объясняет движку что и как наследовать. Но мало кому известно что не важно как назвать тип модуля который мы наследуем, главное чтобы он был из этого списка. А движок потом сам разберется с ним, если все другие параметры указаны верно. Т.е. если вы обычно пишете для наследования екшена, который отвечает за аякс загрузку данных такой код:

  protected $aInherits = array (
    'action' => array (
      'ActionAjax'  // укороченная запись, если кто не в курсе
    )
  );


Что же там такое-то, а?