Как найти нужный блок кода в Magento?
Вопрос
Я столкнулся с глупой ситуацией.Клиент попросил меня изменить его страницу «расширенного поиска», добавив несколько опций.URL-адрес этой страницы похож на http://www.domainname.com/index.php/catalogsearch/advanced/
Это магазин Magento, и у меня нет опыта работы с этим фреймворком.Я пытался изучить его, но обнаружил, что кривая обучения слишком крутая, чтобы получить достаточно знаний и завершить проект вовремя.
Поэтому я сначала создал небольшой инструмент PHP, который ищет во всех исходных файлах поисковый запрос и сообщает о количестве совпадений.Я использовал этот инструмент для поиска уникальных строк, которые появляются на странице расширенного поиска.Но текста нигде нет!
Моя следующая попытка заключалась в поиске строки в базе данных.Поэтому я экспортировал все данные БД, скопировал полученные запросы в свой редактор кода, снова поискал и ничего не нашел!
Это очень неловко и сводит меня с ума.Я не могу найти блок кода, который выводит параметры расширенного поиска!
'Любая помощь приветствуется.
Спасибо, Маджид
Решение
URL-адреса в Magento сообщают вам, где находятся файлы шаблонов для определенного модуля.
Например, когда вы ищете catalogsearch/advanced/
, все файлы шаблонов находятся в приложении/design/frontend/default/your-theme/
.
Загляните в эту папку, и это должно быть очевидно.У вас будет папка с названием catalogsearch
и внутри нее папка под названием advanced
;внутри которого есть два файла:
form.phtml
result.phtml
Другие советы
До сих пор я использовал следующую тактику на локальном компьютере для разработчиков — очевидно, не пытайтесь использовать ее в реальном магазине!:
- Включите подсказки пути к шаблону + имена блоков в разделе «Система» -> «Конфигурация» -> «Разработчик».Это приведет вас к файлу phtml, который выполняет окончательную визуализацию, а также к типу объекта блока, который он использует.Если вы не ограничили IP-адрес, их увидит каждый посетитель!
- Затем в файлах phtml для дальнейшего копания вы можете легко использовать Zend_Debug::dump($var), чтобы проверить рассматриваемую переменную/объект и найти тип объекта и т. д.
- Выполните поиск в своем редакторе или просмотрите каталоги /app/code, чтобы найти файлы, определяющие тип объекта, который вы только что нашли - хотя, поскольку он основан на Zend, правильный путь к файлу в большинстве случаев можно определить из класса объекта.
Также
- Удобный трюк — намеренно вставить ошибку в файл php/phtml. Magento предоставляет вам красиво отформатированный экран ошибок со стеком вызовов, который интересно читать.
- Операторы echo() в основных файлах обычно работают довольно хорошо, в настройке Magento они обычно не вызывают отправку заголовков html в неподходящее время.
- Используйте IDE, например Netbeans/Eclipse/Zend studio и т. д., и поместите весь код Magento в свой проект. Полученная информация phpdoc, «открытое объявление» и помощь по коду сэкономят вам часы поиска.
- Потратьте время на то, чтобы заставить Xdebug работать на вашем тестовом сервере с помощью IDE, которая позволит вам его использовать.Самый простой вариант настройки с нуля (на Mac), который я нашел, — это локальная установка Mamp с использованием Netbeans в качестве IDE. Сайт Netbeans проведет вас через все это. Как только все будет работать хорошо, вы сможете забыть о большинстве другие трюки!
Это только то, что я пробовал до сих пор — пожалуйста, больше предложений!Я до сих пор не нашел способа отладки проблем с конфигурацией из-за проблем с XML во множестве XML-файлов, которые использует Magento, проблемы здесь, как правило, терпят неудачу незаметно, и в результате их действительно трудно отследить + документация xml ужасна.