Спасибо за статью, думаю многим начинающим будет полезной.
Дополню от себя:
1. index, replace, offset, regex я стараюсь вообще не использовать без ситуации, когда без этого вообще никак и даже после этого 2 раза подумаю прежде чем использовать. Иначе потом куча головной боли прежде всего для самого разработчика по поддержке так как чем больше подобных конструкций тем больше вероятность конфликта.
2. изменять шаблоны я бы тоже не стал, особенно в каталоге (ладно админка она то хоть одна, а в каталоге может быть вообще любой шаблон (причем разные его версии) и вообще любым кодом). И что на десятки шаблонов писать разные инструкции? Проще дать пользователю инструкцию: добавить вот эту строчку кода в этот файл шаблона. Многие не согласятся, но это сугубо мое мнение.
3. писать в названии файлов * тоже крайне плохая идея, у меня было немало конфликтов с модулями из-за того, что кто-то в своем модуле добавил какой-то левый код в мой модуль потому что в инструкции было * для всех модулей. Приходилось вручную искать строку, которую ищет этот модуль и добавлять лишние пробелы чтобы не находило и ничего не добавляло в мой файл.
4. не нужно в модификатор писать кучу кода. Если есть какой-то большой кусок кода, который нужно выполнить то намного лучше вынести его в отдельный файл, например модель и через модификатор добавить 2 строчки кода: в первой подключить эту модель и во второй получить результат выполнения метода. Чем добавлять в контроллер 50 строк кода.
5. по возможности избегать использование модификаторов, а там где без этого никак - уменьшать их по максимуму.