Программа формирования сайта путем сборки из иерархических каталогов с файлами индексов

Основное предназначение программы - создавать индексные файлы сайта, собирая их из шаблонов, формируя главное, левое и правое меню, путём преобразования иерархической структуры каталогов с именами, начинающихся с порядковыми номерами. Программа автоматически создаёт также страницу "карта сайта" и может создавать страницы без помещения в навигацию, например страница ошибки 404. Сам сайт формируется в предыдущем каталоге ".."

Максимальная вложеность меню - 4, на пятом уровне могут быть конечные странички с контентом. Главная страница '/' уровнем меню не считается, но можно указать какой пункт меню выбрать как текущий для выделения у главной страницы. Левое меню (далее - аккордеон) содержит выпадающие пункты главного меню, каждый пункт левого меню может содержать выпадающие пункты для индексов первого и второго уровня вложенности и как основные пункты для индексов 3-го уровня. Четывертый уровень формируется как заголовки-ссылки в основном контексте.

Программа создаёт временные файлы индекса, сравнивает результат с имеющимися файлам индекса и переименовывает временный файл индекса только при различии, тем самым не меняя дату файла, если результирующий индекс идентичен предыдущему вызову. Для формирования файла контента можно также использовать создаваемый скрипт с именем d_программа в конкрентном каталоге.

Имена каталогов в текущем рабочем каталоге (далее - каталоги содержимого), должны начинаться с номеров и символа _ для задания порядка следования. Например 00_index Подкаталоги без префикса "номер_" будут проигнорированы. В каталоге сайта ".." будут создаваться каталоги без номеров.

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

Самый первый рабочий каталог, например 00_index, имеет специальное значение. Все подкаталоги данного файла не попадают в основное меню, аккордеон для них будет сформирован свой, в карте сайта эти страницы будут выше главного меню. Результирующие файлы будут помещены в корень сайта .. с именами подкаталогов без номеров с расширением у файла контента в подкаталогах. Для формирования специальных страничек с типами "карта сайта" и "ошибка 404" смотрите описание значений переменной TYPE в файлах var.

Файлы индексов формируются из 18 частей. См. описание задания шаблонов. Шаблоны будут взяты или из текущего каталога или из каталога программы, если в текущем каталоге шаблон не помещен. Перед сборкой файла индекса при наличии в каталоге скрипта с именем, указанным в переменной SCRIPT в файле var он будет вызван из каталога программы с аргументами: имя файла контента и имя выходного файла контента с путями от каталога программы. Для копирования дополнительных файлов с подкаталогами необходимо также использовать вызов скрипта, так как нижеприведённые встроенные скрипты предназначены для копирования только файлов.

Для копирования дополнительных файлов из каталога контента в текущий каталог индекса, в программу встроено две специальных переменных: COPY='mask' и COPY2='file_from file_to', где mask - маска либо список файлов, которые будут помещены в выходной каталог, а любое количество пар файлов для COPY2 копируются с изменением имени из текущего каталога в выходной каталог. Данные встроенные скрипты анализируют изменение даты файлов, и копируют с сохранением даты изменения в выходной каталог только у которых большая дата модификации. Типичное применение COPY2: необходимо поместить из каталога 00_index в корневой каталог файл my.css, но этот файл попадает под маску style_add="*.css", следовательно необходимо его положить под другим именем, например, как 00_index/my_css и воспользоваться встроенным скриптом COPY2, поместив строку COPY2='my_css my.css' в файл 00_index/var. Данный пример приведен в дистрибутиве программы. Маски и первое имя в парах может содержать подкаталоги без префиска-номера, например COPY='maps/*.jpg', при этом маска должна раскрываться в список обычных файлов, копирование которых будет произведено в выходной каталог без подкаталогов.

Подкаталог может быть пропущен, например для наполнения контентов по годам для уменьшения количества каталогов в одном подкаталоге, см. ниже описание значений переменной TYPE в файлах var. На сайте будут как обычно созданы все подкаталоги, каталог с TIPE=skip не будет помещён в навигационные меню, и будет содержать копию индексного файла с предыдущего уровня. Стоит помнить, что в имени подкаталога префикс "номер_" будет пропущен, поэтому имена годов необходимо создавать как-то так: 2015_2015.

Для обновления индекса только из одного подкаталога, где вы произвели изменения контента или скрипта для формирования контента, можно вызвать скрипт из этого подкаталога с именем d_программа. Данный скрипт создаётся в подкаталогах при вызове программы без ключей.

Опции использования программы

make_menu.sh [-D [-m]]

или

make_menu.sh -c [-1] [-m]|[-C]

или

make_menu.sh -C [-D]

Обязательные рабочие переменные в корневом var

Переменные, значения которых по умолчанию приведены в файле var дистрибутива программы в виде коментариев

Переменные в корневом var распространяется на все последующие уровни

Файлы шаблонов для формирования страницы

Сборка осуществляется либо из файлов в каталоге контента либо из каталога вызова программы. Переменные имён шаблонов могут содержать glob маску:

Остальные переменные в корневом var глобальны для каталогов содержимого.

Переменные в файлах var в каталогах содержимого:

Установка других переменных в файлах var каталогах содержимого запрещены.

Предопределенные class и id: