Простая переадресация со статусом 302 Andrei M. 25.11.2014

Простая переадресация страницы со статусом 302 (статус Found) обеспечивает метод перенаправления пользователя на другую веб страницу. Это особенно полезно в случае, если сайт мигрируется.

В настройках меню можно установить страницу по-умолчанию, которая будет открываться при вызове имени домена в браузере.

 

Если имя start_page_name, то запрос вида www.zapms.de будет перенаправлен на страницу www.zapms.de/start_page_name.

Любая страница может быть настроена для переадресации в менеджере меню.

В данном случае запросы вида www.zapms.de или www.zapms.de/start_page_name будут перенаправлены на другой сайт http://my_new_domain.

- Вверх -

Отображение навигации в ZAPms Andrei M. 12.09.2014

Структура веб сайта является основой для построения навигации по нему. Для примера используем дерево следующего вида:

About
Contact
Group A
-     Type AA
-     -     Product ABC
-     -     Product ABD
-     Type AB
Group B
-     Type BA
-     Type BB

Главное меню

Главное меню сайта будет содержать ссылки первого уровня дерева:

 

Код шаблона главного меню:

{php}
showMenuFlat('menu-sample');
{/php}

<ul style="list-style-type:none;">
{section name=custom loop=$menu_list}
  {if $menu_list[custom].active>0 and $menu_list[custom].level==0}
  <li style="float:left;">
    <a href="{$menu_list[custom].name}" style="padding-left:20px;">{if $menu_list[custom].active==3} -> {/if}
    {$menu_list[custom].title}</a></li>
  {/if}
{/section}
</ul>
<div style="clear:both;"></div>

Меню "хлебные крошки"

Меню "хлебные крошки" необходимо, если структура содержит более двух уровней:

Group A   Type AA   Product ABC

Код шаблона меню "хлебные крошки":

{php}
showMenuFlat('menu-sample');
{/php}

{section name=custom loop=$path_list step=-1}
  {if $smarty.section.custom.index==0}
    {$path_list[custom].title}
  {else}
    <a href="{$path_list[custom].name}">{$path_list[custom].title}</a> &nbsp;
  {/if}
{/section}

Вспомогательное меню

В случае необходимости отображения вспомогательного меню, относительно только одного конкретного уровня, например для Group A:

Код шаблона вспомогательного меню:

{php}
showMenuFlat('sample_group_a');
{/php}

<h1>Fixed Menu Types of Group A</h1>
<ul style="list-style-type:none;">
{section name=custom loop=$menu_list}
  {if $menu_list[custom].active>0 and $menu_list[custom].level==0}
    <li>
    <a href="{$menu_list[custom].name}"{if $menu_list[custom].active==3} style="font-width:bold;"{/if}>{$menu_list[custom].title}</a>
    </li>
  {/if}
{/section}
</ul>

Вспомогательное меню в виде дерева относительно выбранного пункта меню:

Код шаблона вспомогательного меню в виде дерева:

{php}
showMenuTree('menu-sample');
{/php}

<ul style="list-style-type:none;">
{assign var="clevel" value=1}
{section name=custom loop=$menu_list}
{if $menu_list[custom].active>1 and $menu_list[custom].level>0}
  {if $clevel>$menu_list[custom].level}
    {assign var="closes" value=$clevel-$menu_list[custom].level}
    {assign var="clevel" value=$menu_list[custom].level}
    {section name=iopens loop=$closes}
      </ul></li>
    {/section}
  {/if}
  <li>
  {if $clevel<$menu_list[custom].level}
    {assign var="clevel" value=$menu_list[custom].level}
     <ul style="list-style-type:none;"><li>
  {/if}
  <a href="{$menu_list[custom].name}"{if $menu_list[custom].active==3} style="font-width:bold;"{/if}>
  {$menu_list[custom].title}</a>
  </li>
{/if}
{/section}
</ul>

В общем случае, при вызове функции отображения дерева, массив меню выглядит следующим образом:

Name Title Id Parent Level Status
sample_about About 1094 1083 0 2
sample_contact Contact 1093 1083 0 2
sample_group_a Group A 1084 1083 0 2
sample_type_aa Type AA 1086 1084 1 2
sample_product_abc Product ABC 1090 1086 2 3
sample_product_abd Product ABD 1091 1086 2 2
sample_type_ab Type AB 1088 1084 1 2
sample_group_b Group B 1085 1083 0 2
sample_type_ba Type BA 1087 1085 1 1
sample_type_bb Type BB 1089 1085 1 1

где status:
0 - неактивный элемент меню
1 - активный элемент
2 - отображается в данный момент
3 - нажатый в данный момент элемент меню

- Вверх -

Роль структуры, интерфейса и шаблонов Andrei M. 05.09.2014

Структура и устройство продукта или сервиса отражаются в структуре веб сайта. Формализовать структуру сайта можно в виде дерева или списка.

Элементы структуры имеют графическое оформление. Его ролью является упрощение процесса восприятия информации и предоставление графического интерфейса для взаимодействия с посетителями веб сайта.

Structure_Prototype.png

Когда готово графическое представление веб сайта в виде картинки, важно создать макет или прототип в виде .html файла. Макет покажет насколько хорошо графический интерфейс выполняет свои цели.

Чтобы избежать избыточности и упростить дальнейшее сопровождение веб сайта, готовый макет делят на части, которые выполняют роль шаблонов. Шаблонами могут быть заголовок, контейнер для содержимого или контейнер для отображения меню.

Prototype_Menu.png

Как шаблоны, так и содержимое привязано к элементам структуры сайта, которое представлено в виде меню на сайте. Содержимое веб сайта хранится в виде html файлов на сервере либо в базе данных.

Файлы шаблонов zapms находятся в папке /files/templates/

site_default.tpl основной каркас, содержит ссылки на контейнеры меню и содержимого
menu_top.tpl, menu_news.tpl содержат вызовы функций отображения меню
menu_download.tpl содержит статический текст со ссылками на файлы загрузки
menu_galery_about.tpl вызов галереи скриншотов для отображения в области меню
menu_news.tpl содержит вызов новостей из базы данных в область меню
content_default.tpl отображает статическое содержание
content_news.tpl содержит вызов новостей из базы данных в область основного содержимого

Статическое содержание и картинки находятся в папке /files/content/

sample_content.txt файл статического содержания

- Вверх -

Установить на Raspberry PI Andrei M. 28.08.2014

Требования

Zapms установка

Скопировать Zapms и распаковать локально. Далее скопировать папку в pi. Предположим, ваш Raspberry имеет IP адрес 192.168.0.1

scp -r /home/USER_NAME/zapms_for_raspberry_pi pi@192.168.0.1:/home/pi/Desktop/

Логинимся в pi.

ssh pi@192.168.0.1

Копируем Zapms в папку www. Предположим, хозяином папки www является группа www-data (настройки сервера lighttpd).

sudo -g www-data cp -ru /home/pi/Desktop/zapms_for_raspberry_pi/* /var/www/

Добавляем права

sudo chmod 777 /var/www/auth/ /var/www/include/ /var/www/files/ -R
sudo chmod 777 /var/www/zap/include/ /var/www/zap/cache/ /var/www/zap/templates/ /var/www/zap/templates_c/ -R

Создаем базу данных zapmsdb

mysql -p -u root
mysql> create database zapmsdb character set utf8 collate utf8_general_ci;
mysql> grant all privileges on zapmsdb.* to 'pi'@'localhost';
mysql> flush privileges;
mysql> quit;

Задаем правила для сервера. Пример файла можно найти в дистрибутиве setup/lighttpd.conf

sudo nano /etc/lighttpd/lighttpd.conf

добавляем следующие параметры:

server.modules = (
...
"mod_rewrite",
...
)
...
index-file.names = ( "index.php", "index.html", "index.lighttpd.html" )
...
fastcgi.server = (".php"=>(("bin-path"=>"/usr/bin/php-cgi","socket"=>"/tmp/php.socket"))) 

# direct access is denied for bibliothek and images
$HTTP["url"] =~ "^/(auth|include|files/content/images/originals|zap/include)/" {

url.access-deny = ( "" )
server.error-handler-404 = "403"
}

# direct access is denied for modules
$HTTP["url"] =~ "^/(modules|zap/modules)" {
url.access-deny = ( "index.php" )
server.error-handler-404 = "403"
}

# rewrite urls
url.rewrite-if-not-file = (
"^/robots.txt" => "/robots.php",
"^/sitemap.xml" => "/sitemap.php",
"^/crossdomain.xml" => "/crossdomain.php",
"^/files/(.*)$" => "$0", # no restrictions for static content
"^/([^.?]*)$" => "index.php?m=$1", # default controller
"^/([^.?]*)?(.*)$" => "index.php?m=$1&$2", # other requests
"^/$" => "/index.php" # default page
)

Проверяем синтаксис и перезапускаем сервер

lighttpd -t -f /etc/lighttpd/lighttpd.conf
sudo service lighttpd restart

Запускаем настройку в браузере

http://192.168.0.1/setup/index.php

Залогинимсяв административную часть CMS

http://192.168.0.1/zap/index.php

 

Дополнительные настройки crontab

Создать crontab для ежедневной перезагрузки

sudo -u pi crontab -e

# restart once a day
51 23 * * * sudo reboot -h

Запустить crontab

sudo nano /etc/rc.local
--> add line before exit 0
/etc/init.d/cron start

Мониторинг crontab

sudo tail -f /var/log/syslog | grep CRON

- Вверх -

Новости


Downloads

zapms v1.6 (4,3 MB)


Live Demo

http://zapms.de/test/zap
Login: demo
Password: demo