Создаём новое меню (за основу было взято основное меню и другие страницы меню)
1. В конец файла /api/Pages.php перед последней } вставляем
Код:
/*
* Создать меню
*/
public function add_menu($menu)
{
$query = $this->db->placehold("INSERT INTO __menu SET ?%", $menu);
if(!$this->db->query($query))
return false;
$id = $this->db->insert_id();
$this->db->query("UPDATE __menu SET position=id WHERE id=?", $id);
return $id;
}
/*
* Обновить меню
*/
public function update_menu($id, $group)
{
$query = $this->db->placehold("UPDATE __menu SET ?% WHERE id=? LIMIT 1", $menu, intval($id));
$this->db->query($query);
return $id;
}
/*
* Удалить меню
*/
public function delete_menu($id)
{
if(!empty($id))
{
$query = $this->db->placehold("UPDATE __pages SET menu_id=NULL WHERE menu_id=? LIMIT 1", intval($id));
$this->db->query($query);
$query = $this->db->placehold("DELETE FROM __menu WHERE id=? LIMIT 1", intval($id));
if($this->db->query($query))
return true;
}
return false;
}
2. В папку /simpla/ добавляем (создаём) файл MenusAdmin.php следующего содержания
Код:
<?PHP
require_once('api/Simpla.php');
class MenusAdmin extends Simpla
{
function fetch()
{
if($this->request->method('post'))
{
// Действия с выбранными
$ids = $this->request->post('check');
if(is_array($ids))
switch($this->request->post('action'))
{
case 'delete':
{
foreach($ids as $id)
$this->pages->delete_menu($id);
break;
}
}
}
$menus = $this->pages->get_menus();
$this->design->assign('menus', $menus);
return $this->body = $this->design->fetch('menus.tpl');
}
}
[CODE]
3. В папку /simpla/ добавляем (создаём) файл MenuAdmin.php следующего содержания
[CODE]
<?PHP
require_once('api/Simpla.php');
class MenuAdmin extends Simpla
{
public function fetch()
{
if(isset($_POST))
{
$menu->id = $this->request->post('id', 'integer');
$menu->name = $this->request->post('name');
$menu->position = $this->request->post('position');
if(empty($menu->id))
{
$menu->id = $this->pages->add_menu($menu);
$this->design->assign('message_success', 'Добавлено');
}
else
{
$menu->id = $this->pages->update_menu($menu->id, $menu);
$this->design->assign('message_success', 'Обновлено');
}
$menu = $this->pages->get_menu(intval($menu->id));
}
else
{
$id = $this->request->get('id', 'integer');
if(!empty($id))
$menu = $this->pages->get_menu(intval($id));
}
if(!empty($menu))
{
$this->design->assign('menu', $menu);
}
return $this->design->fetch('menu.tpl');
}
}
4. В файле /simpla/design/html/pages.tpl перед {/capture} вставляем строку
Код:
<li><a href="{url module=MenusAdmin}">Меню</a></li>
5. В папке /simpla/design/html/ добавляем (создаём) файл menus.tpl следующего содержания
Код:
{* Вкладки *}
{capture name=tabs}
{foreach from=$menus item=m}
<li {if $m->id == $menu->id}class="active"{/if}><a href="{url module=PagesAdmin menu_id=$m->id}">{$m->name}</a></li>
{/foreach}
<li><a href="{url module=MenusAdmin}">Меню</a></li>
{/capture}
{* Title *}
{$meta_title='Список меню' scope=parent}
{* Заголовок *}
<div id="header">
<h1>Список меню</h1>
<a class="add" href="index.php?module=MenuAdmin">Добавить меню</a>
</div>
<!-- Основная часть -->
<div id="main_list">
<form id="list_form" method="post">
<input type="hidden" name="session_id" value="{$smarty.session.id}">
<div id="list" class="groups">
{foreach $menus as $menu}
<div class="row">
<div class="checkbox cell">
<input type="checkbox" name="check[]" value="{$menu->id}"/>
</div>
<div class="group_name cell">
<a href="index.php?module=MenuAdmin&id={$menu->id}">{$menu->name}</a>
</div>
<div class="group_discount cell">
{$menu->position}
</div>
<div class="icons cell">
<a class="delete" title="Удалить" href="#"></a>
</div>
<div class="clear"></div>
</div>
{/foreach}
</div>
<div id="action">
<label id="check_all" class="dash_link">Выбрать все</label>
<span id=select>
<select name="action">
<option value="delete">Удалить</option>
</select>
</span>
<input id="apply_action" class="button_green" type="submit" value="Применить">
</div>
</form>
</div>
{literal}
<script>
$(function() {
// Раскраска строк
function colorize()
{
$("#list div.row:even").addClass('even');
$("#list div.row:odd").removeClass('even');
}
// Раскрасить строки сразу
colorize();
// Выделить все
$("#check_all").click(function() {
$('#list input[type="checkbox"][name*="check"]').attr('checked', 1-$('#list input[type="checkbox"][name*="check"]').attr('checked'));
});
// Удалить
$("a.delete").click(function() {
$('#list input[type="checkbox"][name*="check"]').attr('checked', false);
$(this).closest(".row").find('input[type="checkbox"][name*="check"]').attr('checked', true);
$(this).closest("form").find('select[name="action"] option[value=delete]').attr('selected', true);
$(this).closest("form").submit();
});
// Подтверждение удаления
$("form").submit(function() {
if($('#list input[type="checkbox"][name*="check"]:checked').length>0)
if($('select[name="action"]').val()=='delete' && !confirm('Подтвердите удаление'))
return false;
});
});
</script>
{/literal}
6. В папке /simpla/design/html/ добавляем (создаём) файл menu.tpl следующего содержания
Код:
{capture name=tabs}
{foreach from=$menus item=m}
<li {if $m->id == $menu->id}class="active"{/if}><a href="{url module=PagesAdmin menu_id=$m->id}">{$m->name}</a></li>
{/foreach}
<li><a href="{url module=MenusAdmin}">Меню</a></li>
{/capture}
{if $menu->id}
{$meta_title = $menu->name scope=parent}
{else}
{$meta_title = 'Новое меню' scope=parent}
{/if}
{if $message_success}
<!-- Системное сообщение -->
<div class="message message_success">
<span>{$message_success}</span>
{if $smarty.get.return}
<a class="button" href="{$smarty.get.return}">Вернуться</a>
{/if}
</div>
<!-- Системное сообщение (The End)-->
{/if}
{if $message_error}
<!-- Системное сообщение -->
<div class="message message_error">
<span>{$message_error}</span>
<a class="button" href="">Вернуться</a>
</div>
<!-- Системное сообщение (The End)-->
{/if}
<!-- Основная форма -->
<form method=post id=product enctype="multipart/form-data">
<input type=hidden name="session_id" value="{$smarty.session.id}">
<div id="name">
<input class="name" name=name type="text" value="{$menu->name|escape}"/>
<input name=id type="hidden" value="{$menu->id|escape}"/>
</div>
<!-- Левая колонка -->
<div id="column_left">
<!-- Позиция меню -->
<div class="block">
<ul>
<li><label class=property>Позиция</label><input name="position" class="simpla_inp" type="text" value="{$menu->position|escape}" /></li>
</ul>
</div>
<!-- Позиция меню (The End)-->
</div>
<!-- Левая колонка (The End)-->
<input class="button_green button_save" type="submit" name="" value="Сохранить" />
</form>
<!-- Основная форма (The End) -->
7. Выводить можно его с помощью
Код:
{foreach $pages as $p}
{* Выводим только страницы из первого меню *}
{if $p->menu_id == 3}
<li {if $page && $page->id == $p->id}class="selected"{/if}>
<a data-page="{$p->id}" href="{$p->url}">{$p->name|escape}</a>
</li>
{/if}
{/foreach}
Где 3 - это ID вашего меню
Вот вроде и все, теперь в админке на Страницах появилась вкладка "Меню"
Новый (усовершенствованный) редактор для страниц TinyMCE 4.5
Установка очень простая!
1. Кидаем папку tinymce по пути /simpla/design/js
2. Заменяем файл tinymce_init.tpl по пути /simpla/design/html
Наш новый редактор готов!