В шаблоны переменные попадают из контроллеров. Нет смысла пихать код одного шаблона в другой. Так как в header.php есть переменные не переданные в html.php. На уровне шаблонов это сделать можно только javascript-ами. Вам нужно скопировать логику формирования переменной и перенести в другой контроллер или экшен.
Почитайте про MCV.
Где-то у Вас формируется массив $categories явно не в этом коде. Тут нет обращения к базе, тут формируется html код.
Судя по коду это bootstrap-овский навбар, который из вашего массива $categories формирует меню. Вы хотите иметь в меню 1 пункт?
Большинство современных фреймворков имеют это из коробки. Если проект на стадии разработки - я бы его делал на базе фреймворка, например yii2 и не изобретал велосипед заново. Там есть и CSRF валидация и валидация форм и есть возможность использовать REST
Как вариант google hangout
Или просто скайп ссылка call
Но люди редко хотят общаться с видео. Так что на мой взгляд идея видео-чата - интересна только в идее, но не применима в коммерческих проектах. А чатов с голосовой связью - миллион готовых есть, тот же siteheart
А зачем несколько форм обратной связи на одной странице?
Но можете передать в функцию submitForm id формы, а вместо $("#idинпута").val() использовать #idинпута-idинпута
На данный момент поисковые роботы понимают javascript и могут понимать ajax, но не все. Надо эксперементировать. Для начала посмотрите как Ваш сайт индексируется. По каким запросам вылазит в поиске и т.д.
Помню что раньше робот не ходил по ссылке с GET запросами
Как? А по каким? По POST? Глупость полнейшая.
если вынесу все страницы за пределы корня сайта, чтобы к ним не было прямого доступа, это помешает роботу её индексировать?
Робот не ходит по файлам, он ходит по ссылкам и индексирует то что доступно пользователю из браузера. Хоть на соседний сервер их положите.
Если Вы показываете эти данные пользователю, то и храните в полях которые показываете пользователю, как value или data. Если все на ajax и страница не перегружается, зачем что-то еще придумывать? Или там миллион скрытых данных?
Надо делать запросы с разными заголовками, с разный ip и делать таймаут между ними. Это защита от парсинга. Яндекс маркет - самый тошнотворный вариант для это затеи.
Когда-то парсил его с помощью проги contentdownloader - это проще чем 'simple_html_dom.php'.
А еще у яндекс-маркета есть api. Подключив, которое можно получать данные.
Я бы парсил через ПО, что бы набить базу, а потом то чего нету добивал бы парсингом, через 'simple_html_dom.php', при этом сохраняя у себя результат. Тогда запросов к яндексу станет меньше и не будет банить.
40000 товаров удобнее редактировать в excel или 1c. Даже не думайте в сторону веб интерфейса. Однако реализовать функции массового изменения стоит. Например, домножить цену всех на x. Или какой-то конкретной категории. Или еще по какому-то признаку.
Веб интерфейс в виде таблицы будет совсем не прост для браузера, если речь идет более чем о 100 строках. Так что либо с пагинацией и фильтрами - либо excel.
Можно связать excel или 1с c базой данных, что то же удобно. Что бы уйти от выгрузки -загрузки, точнее упростить ее.
Все зависит от ждух факторов:
1. уровень вложености
2. частота и степень изменения
Пути решения могут быть разные в зависимости от необходимости. Если меню ожидается в 2-3 уровня, можно хранить в базе предка и уровень вложености. Если уровень неизвестен, тогда можно использовать метод nested sets (www.getinfo.ru/article610.html). Есть еще пара методов, но на мой взгляд больше из разряда красивых теорий, чем практического применения.