Gregar Опубликовано 27 марта, 2013 Жалоба Поделиться Опубликовано 27 марта, 2013 Хотелось бы по интересоваться можно ли сделать так чтобы в админ панели в разделе "Страницы" была возможность создавать уникальные "меню". На данный момент там находятся: "основное меню" и "другие страницы".Иной раз возникает нужна выводить несколько меню в том числе и под меню.. и для этого приходится прописывать ссылки, а это не совсем удобно..http://s59.radikal.ru/i166/1303/71/9e9a854eaebe.jpgКо всему этому хотелось бы еще чтобы обновился БЛОГ и в нем можно было бы создавать категории. Цитата Ссылка на сообщение Поделиться на другие сайты
Gregar Опубликовано 12 мая, 2013 Автор Жалоба Поделиться Опубликовано 12 мая, 2013 Добавление меню из админки для 2.2х 1. выполнить запрос MySQL ALTER TABLE `s_menu` MODIFY COLUMN `id` INT AUTO_INCREMENT; 2. в Файле /api/Simpla.php после строки 'notify' => 'Notify', добавить строку 'menus' => 'Menus', 3. в Файле /api/Managers.php в строке 18 перед 'license'); добавить 'menus', 4. в Файле /api/Pages.php после строк class Pages extends Simpla { добавить private $menus = array(); private $menu; далее в конце файла добавить, перед закрывающей скобкой «}» /* * * Обновить список меню * */ private function init_menu() { $this->menus = array(); // Выбираем из базы меню $query = "SELECT id, name, position FROM __menu ORDER BY position"; $this->db->query($query); $results = $this->db->results(); foreach($results as $c) { $this->menus[$c->id] = $c; } $this->menu = reset($this->menus); } /* * * Создание меню * */ 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); $this->init_menu(); return $id; } /* * * Обновить меню * */ public function update_menu($id, $menu) { $query = $this->db->placehold('UPDATE __menu SET ?% WHERE id in (?@)', $menu, (array)$id); if(!$this->db->query($query)) return false; $this->init_menu(); return $id; } /* * * Удалить меню * */ public function delete_menu($id) { if(!empty($id)) { $query = $this->db->placehold("DELETE FROM __menu WHERE id=? LIMIT 1", intval($id)); if($this->db->query($query)) return true; $this->init_menu(); } return false; } 5. в Файле /simpla/ajax/update_object.php перед строкой case 'label': добавить строки case 'menu': if($simpla->managers->access('menus')) $result = $simpla->pages->update_menu($id, $values); break; 6. в Файле /simpla/IndexAdmin.php после строки 'ManagerAdmin' => 'managers', добавить строку 'MenuAdmin' => 'menus', 7. в папку /simpla/ добавить файл MenuAdmin.php следующего содержания <?PHP require_once('api/Simpla.php'); ######################################## class MenuAdmin extends Simpla { public function fetch() { // Обработка действий if($this->request->method('post')) { foreach($this->request->post('menu') as $n=>$va) foreach($va as $i=>$v) $menus[$i]->$n = $v; $menus_ids = array(); foreach($menus as $menu) { if($menu->id) $this->pages->update_menu($menu->id, $menu); else $menu->id = $this->pages->add_menu($menu); $menus_ids[] = $menu->id; } // Удалить непереданные меню $query = $this->db->placehold('DELETE FROM __menu WHERE id NOT IN(?@)', $menus_ids); $this->db->query($query); // Отсортировать меню asort($menus_ids); $i = 0; foreach($menus_ids as $menu_id) { $this->pages->update_menu($menus_ids[$i], array('position'=>$menu_id)); $i++; } // Действия с выбранными $action = $this->request->post('action'); $id = $this->request->post('action_id'); if(!empty($action) && !empty($id)) switch($action) { case 'delete': { $this->pages->delete_menu($id); break; } } } // Отображение $menus = $this->pages->get_menus(); $menu = $this->pages->get_menu($menu_id); $this->design->assign('menu', $menu); $this->design->assign('menus', $menus); return $this->design->fetch('menu.tpl'); } } 8. в файле /simpla/design/html/index.tpl после строк {elseif in_array('managers', $manager->permissions)} <li><a href="index.php?module=ManagersAdmin"><img src="design/images/menu/settings.png"><b>Настройки</b></a></li> добавить строки {elseif in_array('menus', $manager->permissions)} <li><a href="index.php?module=MenuAdmin"><img src="design/images/menu/settings.png"><b>Настройки</b></a></li> 9. в папке /simpla/design/html/ файлах currency.tpl, deliveries.tpl, delivery.tpl, manager.tpl, managers.tpl, payment_method.tpl, payment_methods.tpl, settings.tpl перед строкой {/capture} добавить строку {if in_array('menus', $manager->permissions)}<li><a href="index.php?module=MenuAdmin">Меню</a></li>{/if} 10. в папке /simpla/design/html/ добавить файл menu.tpl следующего содержания {capture name=tabs} {if in_array('settings', $manager->permissions)}<li><a href="index.php?module=SettingsAdmin">Настройки</a></li>{/if} {if in_array('currency', $manager->permissions)}<li><a href="index.php?module=CurrencyAdmin">Валюты</a></li>{/if} {if in_array('delivery', $manager->permissions)}<li><a href="index.php?module=DeliveriesAdmin">Доставка</a></li>{/if} {if in_array('payment', $manager->permissions)}<li><a href="index.php?module=PaymentMethodsAdmin">Оплата</a></li>{/if} {if in_array('managers', $manager->permissions)}<li><a href="index.php?module=ManagersAdmin">Менеджеры</a></li>{/if} <li class="active"><a href="index.php?module=MenusAdmin">Меню</a></li> {/capture} {$meta_title = 'Меню страниц' scope=parent} {* On document load *} {literal} <script src="design/js/jquery/jquery.js"></script> <script src="design/js/jquery/jquery-ui.min.js"></script> <script> $(function() { // Сортировка списка $("#currencies_block").sortable({ items: 'ul.sortable' , axis: 'y', cancel: '#header', handle: '.move_zone' }); // Добавление меню var curr = $('#new_currency').clone(true); $('#new_currency').remove().removeAttr('id'); $('a#add_currency').click(function() { $(curr).clone(true).appendTo('#currencies').fadeIn('slow').find("input[name*=menu][name*=name]").focus(); return false; }); // Удаление меню $("a.delete").click(function() { $('input[type="hidden"][name="action"]').val('delete'); $('input[type="hidden"][name="action_id"]').val($(this).closest("ul").find('input[type="hidden"][name*="menu[id]"]').val()); $(this).closest("form").submit(); }); $("form").submit(function() { if($('input[type="hidden"][name="action"]').val()=='delete' && !confirm('Подтвердите удаление')) return false; }); }); </script> {/literal} <!-- Заголовок --> <div id="header"> <h1>Меню страниц</h1> <a class="add" id="add_currency" href="#">Добавить</a> <!-- Заголовок (The End) --> </div> <form method=post> <input type="hidden" name="session_id" value="{$smarty.session.id}"> <!-- Меню --> <div id="currencies_block"> <ul id="header"> <li class="move"></li> <li class="menuID">ID</li> <li class="name">Название меню</li> </ul> <div id="currencies"> {foreach from=$menus item=m} <ul class="sortable"> <li class="move"><div class="move_zone"></div></li> <li class="menuID"><input name="menu[id][{$m->id}]" type="hidden" value="{$m->id|escape}" /><span>{$m->id|escape}</span></li> <li class="name"><input name="menu[name][{$m->id}]" type="" value="{$m->name|escape}" /></li> <li class="icons"> {if !$m@first} <a class="delete" href="#" title="Удалить"></a> {/if} </li> </ul> {/foreach} <ul id="new_currency" style='display:none;'> <li class="move"><div class="move_zone"></div></li> <li class="menuID"><input name="menu[id][]" type="hidden" value="" /></li> <li class="name"><input name="menu[name][]" type="" value="" /></li> <li class="icons"></li> </ul> </div> </div> <!-- Меню (The End)--> <div id="action"> <input type=hidden name=action value=''> <input type=hidden name=action_id value=''> <input id='apply_action' class="button_green" type=submit value="Применить"> </div> </form> 11. в файле /simpla/design/css/style.css перед строкой span.alert { добавить стили /* Меню */ #currencies_block ul.sortable li.menuID { border:1px solid #BFBBB5; background:#ffffff; height: 20px; padding-top:5px } #currencies_block li.menuID { width: 50px; } #currencies_block li.menuID span { width: 30px; height: 20px; font-size: 14px; color: #636363; margin-top: 0px; padding: 2px 0 0 10px; margin-left: 2px; } Цитата Ссылка на сообщение Поделиться на другие сайты
Gregar Опубликовано 12 мая, 2013 Автор Жалоба Поделиться Опубликовано 12 мая, 2013 Кто не нашел у себя "в Файле /api/Managers.php в строке 18 перед ‘license’);" «‘license’);»Ищите строчку: "public $permissions_list = array('products',............" Цитата Ссылка на сообщение Поделиться на другие сайты
Gregar Опубликовано 12 мая, 2013 Автор Жалоба Поделиться Опубликовано 12 мая, 2013 Если у кого то возникнут проблемы установкой, могу помочь.. обращайтесь.. Цитата Ссылка на сообщение Поделиться на другие сайты
Kpoxa Опубликовано 12 мая, 2013 Жалоба Поделиться Опубликовано 12 мая, 2013 Разрекламировали, блин. Цитата Ссылка на сообщение Поделиться на другие сайты
Kosjak76 Опубликовано 12 мая, 2013 Жалоба Поделиться Опубликовано 12 мая, 2013 Я считаю это лишним.Думаю, если добавить еще 3 (ТРИ) меню, этого вполне хватит в 99% случаев Цитата Ссылка на сообщение Поделиться на другие сайты
Gregar Опубликовано 13 мая, 2013 Автор Жалоба Поделиться Опубликовано 13 мая, 2013 Разрекламировали, блин. Ну а куда деваться то))) Вспоминаю как сам искал пробовал помногу раз и все было напрасно.. Есть у тебя еще что то интересное ??? Цитата Ссылка на сообщение Поделиться на другие сайты
Kpoxa Опубликовано 13 мая, 2013 Жалоба Поделиться Опубликовано 13 мая, 2013 Смотря что считать интересным, вот мой старый сайт http://www.vitam.16mb.com/ может там что присмотришь Цитата Ссылка на сообщение Поделиться на другие сайты
sergei5770 Опубликовано 26 апреля, 2014 Жалоба Поделиться Опубликовано 26 апреля, 2014 Отличная штука, как раз то, что нужно, спасибо. Цитата Ссылка на сообщение Поделиться на другие сайты
joejoker Опубликовано 9 июня, 2014 Жалоба Поделиться Опубликовано 9 июня, 2014 Если у кого то возникнут проблемы установкой, могу помочь.. обращайтесь.. Скажите, зачем так делать? $menus[$i]->$n = $v; Разве это необходимо? Цитата Ссылка на сообщение Поделиться на другие сайты
infinity178 Опубликовано 10 июня, 2014 Жалоба Поделиться Опубликовано 10 июня, 2014 Скажите, зачем так делать? [если я правильно понял - производит запись данных в БД ] $menus[$i]->$n = $v; Разве это необходимо?[безусловно!] Цитата Ссылка на сообщение Поделиться на другие сайты
Veni Опубликовано 4 мая, 2016 Жалоба Поделиться Опубликовано 4 мая, 2016 Млин, а у меня не получилось. Захожу в админку, кликаю на Страницы и выходит ошибко:"Ошибка сервера.Ошибка при загрузке http://simpla.shtori-shop.ru/simpla/index.php?module=PagesAdmin. Возможно, на сайте ведутся работы или он настроен неправильно."Подскажите, где я ошибся?Спасибо! Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 5 мая, 2016 Жалоба Поделиться Опубликовано 5 мая, 2016 Подскажите, где я ошибся?В редактировании файла... Цитата Ссылка на сообщение Поделиться на другие сайты
Veni Опубликовано 5 мая, 2016 Жалоба Поделиться Опубликовано 5 мая, 2016 В редактировании файла...какого именно? Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 5 мая, 2016 Жалоба Поделиться Опубликовано 5 мая, 2016 Седьмого Цитата Ссылка на сообщение Поделиться на другие сайты
Veni Опубликовано 5 мая, 2016 Жалоба Поделиться Опубликовано 5 мая, 2016 скопировал содержимое еще раз и затер старое, даже название файла скопировал отсюда, все равно все тоже самое ((( Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 6 мая, 2016 Жалоба Поделиться Опубликовано 6 мая, 2016 скопировал содержимое еще раз и затер старое, даже название файла скопировал отсюда, все равно все тоже самое ((( смотрите лог ошибок. никто так не скажет потому что вы могли допустить ошибку в любом из этих файлов. попробуйте вывести ошибки на экран или найти лог на сервере Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 6 мая, 2016 Жалоба Поделиться Опубликовано 6 мая, 2016 Все это хорошо, когда для страниц требуется много разных разделов и когда ими часто манипулируют.А если надо только лишь создать новый раздел, то можно сделать неизмеримо проще - достаточно лишь выполнить простенький SQL-запрос... Цитата Ссылка на сообщение Поделиться на другие сайты
Veni Опубликовано 6 мая, 2016 Жалоба Поделиться Опубликовано 6 мая, 2016 логи посмотрел, выдавало ошибку по 4 заданию, перезалил, меню "Страницы" заработали. Теперь в настройках, когда кликаешь на новый пункт "Меню" опять похожая ошибка в логах выглядит вот так:simpla.shtori-shop.ru [Fri May 06 14:45:45 2016] [error] [client 46.159.146.91] PHP Fatal error: Uncaught --> Smarty: Unable to load template file 'menu.tpl' <-- \n thrown in /home/s/shtorishru/simpla/public_html/Smarty/libs/sysplugins/smarty_internal_templatebase.php on line 127, referer: http://simpla.shtori-shop.ru/simpla/index.php?module=SettingsAdmin К сожалению, разобраться с ней не хватает знаний. Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 6 мая, 2016 Жалоба Поделиться Опубликовано 6 мая, 2016 логи посмотрел, выдавало ошибку по 4 заданию, перезалил, меню "Страницы" заработали. Теперь в настройках, когда кликаешь на новый пункт "Меню" опять похожая ошибка в логах выглядит вот так:simpla.shtori-shop.ru [Fri May 06 14:45:45 2016] [error] [client 46.159.146.91] PHP Fatal error: Uncaught --> Smarty: Unable to load template file 'menu.tpl' <-- \n thrown in /home/s/shtorishru/simpla/public_html/Smarty/libs/sysplugins/smarty_internal_templatebase.php on line 127, referer: http://simpla.shtori-shop.ru/simpla/index.php?module=SettingsAdmin К сожалению, разобраться с ней не хватает знаний. вам пишет что не может загрузить шаблон меню, вы выполнили пункт 10. в папке /simpla/design/html/ добавить файл menu.tpl следующего содержания Цитата Ссылка на сообщение Поделиться на другие сайты
Veni Опубликовано 6 мая, 2016 Жалоба Поделиться Опубликовано 6 мая, 2016 вам пишет что не может загрузить шаблон меню, вы выполнили пунктблин, да! Я с большой буквы создал файл, заработало, только почему-то кириллица на этой вкладке не пашет: https://yadi.sk/i/a8g40RDsrXZuA Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 6 мая, 2016 Жалоба Поделиться Опубликовано 6 мая, 2016 блин, да! Я с большой буквы создал файл, заработало, только почему-то кириллица на этой вкладке не пашет: https://yadi.sk/i/a8g40RDsrXZuAвидимо не в той кодировке сохранили файлик Цитата Ссылка на сообщение Поделиться на другие сайты
Veni Опубликовано 6 мая, 2016 Жалоба Поделиться Опубликовано 6 мая, 2016 Так, ну вроде заработало, осталось понять: как автор этой доработкой хотел "выводить несколько меню в том числе и под меню.." Интересует подкаталоги в основном меню. Чтобы например в пункте "О нас" вывести подкаталоги "Отзвы", "Контакты", "Статьи" и тому подобное Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 6 мая, 2016 Жалоба Поделиться Опубликовано 6 мая, 2016 (изменено) Так, ну вроде заработало, осталось понять: как автор этой доработкой хотел "выводить несколько меню в том числе и под меню.." Интересует подкаталоги в основном меню. Чтобы например в пункте "О нас" вывести подкаталоги "Отзвы", "Контакты", "Статьи" и тому подобное что вам сказать... никак). одна страница может принадлежать только одному меню). это конечно не совсем логично, но как-то так. и это не вина автора темы, так устроен механизм меню симплы. Изменено 6 мая, 2016 пользователем mishanya Цитата Ссылка на сообщение Поделиться на другие сайты
Veni Опубликовано 6 мая, 2016 Жалоба Поделиться Опубликовано 6 мая, 2016 что вам сказать... никак). одна страница может принадлежать только одному меню)так ))))это не смешно! Я же процитировал автора, он пишет что ДАЖЕ под меню, что мне и нужно было. Тогда зачем эта доработка вообще кому-то обосралась? Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.