Kpoxa Опубликовано 12 января, 2012 Жалоба Поделиться Опубликовано 12 января, 2012 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'); } }3. в папку /simpla/ добавляем файл MenuAdmin.php следующего содержания <?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'); } } Цитата Ссылка на сообщение Поделиться на другие сайты
Kpoxa Опубликовано 12 января, 2012 Автор Жалоба Поделиться Опубликовано 12 января, 2012 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} Цитата Ссылка на сообщение Поделиться на другие сайты
Kpoxa Опубликовано 12 января, 2012 Автор Жалоба Поделиться Опубликовано 12 января, 2012 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) -->Вот вроде и все, теперь в админке на Страницах появилась вкладка "Меню"З.Ы. Для редактирования и создания файлов пользуйтесь notepad++ или AkelPad Цитата Ссылка на сообщение Поделиться на другие сайты
santil Опубликовано 31 января, 2012 Жалоба Поделиться Опубликовано 31 января, 2012 Может всеж в архиве запостить....а то походу половина кода не появилась?Спасибо! Цитата Ссылка на сообщение Поделиться на другие сайты
Kpoxa Опубликовано 31 января, 2012 Автор Жалоба Поделиться Опубликовано 31 января, 2012 Код исчез после обновления форума, чуть позже поправлю.Странно, код на месте, но не отображается Цитата Ссылка на сообщение Поделиться на другие сайты
santil Опубликовано 7 февраля, 2012 Жалоба Поделиться Опубликовано 7 февраля, 2012 Ну как...когда же будет счастье?! Цитата Ссылка на сообщение Поделиться на другие сайты
Kpoxa Опубликовано 7 февраля, 2012 Автор Жалоба Поделиться Опубликовано 7 февраля, 2012 Код на месте, но увы почему-то не отображается. Вот ссылкаhttp://kpoxa99.files.wordpress.com/2012/02/addmenu.doc Цитата Ссылка на сообщение Поделиться на другие сайты
wspirit Опубликовано 10 апреля, 2012 Жалоба Поделиться Опубликовано 10 апреля, 2012 изначально не добавлялось меню (поставил автоинкрементацию ИД и заработало). Теперь не могу разобраться с редактированием, пишет Warning: Placeholder substitution error. Diagnostics: "UPDATE s_menu SET UNKNOWN_PLACEHOLDER_0 WHERE id=NULL LIMIT 1" in Z:\home\localhost\www\simpla\api\Database.php on line 143Warning: Query was empty [] in Z:\home\localhost\www\simpla\api\Database.php on line 116 Цитата Ссылка на сообщение Поделиться на другие сайты
wspirit Опубликовано 10 апреля, 2012 Жалоба Поделиться Опубликовано 10 апреля, 2012 ах да - simpla 2.1.0 Цитата Ссылка на сообщение Поделиться на другие сайты
wspirit Опубликовано 22 апреля, 2012 Жалоба Поделиться Опубликовано 22 апреля, 2012 нашёл причину и этому: в файле api/pages в строке: $query = $this->db->placehold("UPDATE __menu SET ?% WHERE id=? LIMIT 1", $menu, intval($id));заменить $menu на $group Цитата Ссылка на сообщение Поделиться на другие сайты
nitrol Опубликовано 4 апреля, 2013 Жалоба Поделиться Опубликовано 4 апреля, 2013 А куда делся 2й коммент? где должно быть 2й и 3й пункты?? Цитата Ссылка на сообщение Поделиться на другие сайты
nitrol Опубликовано 4 апреля, 2013 Жалоба Поделиться Опубликовано 4 апреля, 2013 вопрос решился гуглом. вот полный текст http://simpladesign.ru/proizvolnoe-menyu-dlya-simpla/ Цитата Ссылка на сообщение Поделиться на другие сайты
nitrol Опубликовано 4 апреля, 2013 Жалоба Поделиться Опубликовано 4 апреля, 2013 на симпле 2,1,5 не работает. $menu на $group заменял Цитата Ссылка на сообщение Поделиться на другие сайты
Kulibbin Опубликовано 4 апреля, 2013 Жалоба Поделиться Опубликовано 4 апреля, 2013 Молодец Кроха!Довольно часто приходиться добавлять новое меню.Сам уже давно собираюсь сделать подобное но все руки не доходят. Все более из-за того, что вспоминаю про эту необходимость, когда в базу лезу меню добавить.Предлагая автору движка, Денису Пикусову добавить этот код в следующие версии движка.Кто ЗА?? Цитата Ссылка на сообщение Поделиться на другие сайты
mart Опубликовано 5 апреля, 2013 Жалоба Поделиться Опубликовано 5 апреля, 2013 Тут двоякое мнение. Вроде как и надо, но с другой стороны - это надо только 1 раз. Скорее всего стоит включить в функционал. Цитата Ссылка на сообщение Поделиться на другие сайты
Kpoxa Опубликовано 5 апреля, 2013 Автор Жалоба Поделиться Опубликовано 5 апреля, 2013 Немного переработал для версии 2.21Оформлю и куда-нибудь выложу. Цитата Ссылка на сообщение Поделиться на другие сайты
aimatrix Опубликовано 5 апреля, 2013 Жалоба Поделиться Опубликовано 5 апреля, 2013 martТут двоякое мнениеРабота с меню должна быть в движке - мнение однозначное. Позвольте менеджеру управлять ссылочным наполнением шапки, подвала и т.д. где шаблон предусматривает менюшки.Без этого натяжка секционных шаблонов сводится к замазыванию или заполнению ссылками в лоб остальных меню, кроме верхнего.А должны бы получаться именно управляемые шаблоны примерно такого плана. Пример 1.Меню сверху - его наполнением управляет админ.4 меню в подвале: Информация, Контакты, О скидках, О нас - тоже управляются из админпанели.Еще шаблоны с несколькими управляемыми меню.Пример 2Пример 3Так что нужно добавлять в движок поддержку работы с меню. Цитата Ссылка на сообщение Поделиться на другие сайты
mart Опубликовано 5 апреля, 2013 Жалоба Поделиться Опубликовано 5 апреля, 2013 Угу, только для вывода меню надо хотя бы виджет сделать, а не дергать каждый раз шаблоны для вставки. В этом двоякость, а не в необходимости структуризации. Цитата Ссылка на сообщение Поделиться на другие сайты
nitrol Опубликовано 8 апреля, 2013 Жалоба Поделиться Опубликовано 8 апреля, 2013 а почему в 2,5,1 не работает? пишет просто ошибку загрузки страницы Цитата Ссылка на сообщение Поделиться на другие сайты
Kulibbin Опубликовано 9 апреля, 2013 Жалоба Поделиться Опубликовано 9 апреля, 2013 Какой виджет?! Всего три строки нужно, для вывода меню.{foreach $pages as $p}{if $p->menu_id == 1}<p><a href="{$p->url}">{$p->name|escape}</a></p>{/if}{/foreach}Если сейчас в движок вставлять дополнительные возможности типа "добавление меню виджетами" он станет похожим на друпал или джумлу, где проще самому написать новое расширение чем разобраться с имеющимися возможностями.А возможность в симпле добавлять меню из админки это приятная мелочь которая ни насколько не нагрузит вычислениями интернет магазин, но зато сэкономит многим не мало времени. Цитата Ссылка на сообщение Поделиться на другие сайты
Kpoxa Опубликовано 11 апреля, 2013 Автор Жалоба Поделиться Опубликовано 11 апреля, 2013 Как и обещал Добавление меню из админки для 2.2х Цитата Ссылка на сообщение Поделиться на другие сайты
delprofile Опубликовано 11 апреля, 2013 Жалоба Поделиться Опубликовано 11 апреля, 2013 Ради фана перешёл и весёлая тема насильно регить народ! Цитата Ссылка на сообщение Поделиться на другие сайты
Kpoxa Опубликовано 11 апреля, 2013 Автор Жалоба Поделиться Опубликовано 11 апреля, 2013 сорри, не досмотрел, убрал регистрацию Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.