butcher_88 wrote:
А вообще, Sonya наколько я понимаю один из самых опытных разработчиков здесь,
Да уж, настолько "опытная", что не смогла объяснить по-человечески возникновение этого $id
butcher_88 wrote:
не подскажите как лучше добавлять функционал к существующему модулю т.е. править код, делать свою копию модуля (и называть по-другому) или вот так при помощи плагинов?
Больная тема. Есть несколько вариантов.
1. Сначала я смотрю можно ли функционал добавить при помощи пользовательских тегов и "подвесить" на события. То есть, немного похоже на систему hook в Drupal. Этот вариант подразумевает, что события в модуле уже "подцеплены". Если событий не хватает, то смотрю, жив ли разработчик модуля, когда был последний релиз. Если модуль свежий, то прошу в Feature Request "подцепить" нужное мне событие, обычно это фикситься довольно быстро в следующем релизе. А до релиза, я сама цепляю событие, правя модуль вживую. Но поскольку - это только пара строчек, то обычно не проблема.
2. Если модуль неживой, то можно попробовать его перенять на себя и развивать дальше в свою сторону, получая исправление багов

. Вот, например, мое последнее "приобретение" - Simple Tagging. Списалась с разработчиком, узнала, что он этот модуль развивать не будет, попросила добавить меня в админы, сделала изменения и новый релиз. Теперь он работает, как мне надо

Там есть баги, я их знаю, но для моих целей они мне не мешают, поэтому сижу и жду, когда другие разработчики решение для этих багов предложат и я их внедрю.
3. Если изменения серьезные, скажем на 50% дописывать функциональность или изменять существующую, то копирую модуль, переименовываю. При желании можно добавить его в forge как новый. Хотя я этот вариант не очень приветствую, дабы не плодить мусор и клоны существующих модулей, но некоторые так делают.
4. Если речь идет о создании нового типа контента использую MCFactory, если нужен каталогоподобный модуль с иерархией, то CTLModuleMaker. Оба модуля создают новые модули с индивидуальной структурой.