Marketus Опубликовано 24 апреля, 2017 Жалоба Поделиться Опубликовано 24 апреля, 2017 Добрый день! Возникла задача: сделать длинные кастомные страницы аля "разделы". Проблема в том что структура этих страниц по типу "лендосов" длинный ковер из разных блоков. Так вот редактировать во одном окне редактора всю страницу очень не удобно. Хотелось бы как то разделить их по блочно.Например добавил блок "о компании" потом "партнеры" и так далее, а вывод идет на одной странице. Подскажите как логичней это выстроить? Цитата Ссылка на сообщение Поделиться на другие сайты
Marketus Опубликовано 24 апреля, 2017 Автор Жалоба Поделиться Опубликовано 24 апреля, 2017 Подозреваю, что нужно расширить стандартные страницы и сделать их с подстраницами... Кто поможет? Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 24 апреля, 2017 Жалоба Поделиться Опубликовано 24 апреля, 2017 (изменено) можно так в цыкле выводить на главной содержимое всех видимых страниц {foreach $pages as $p} {if $p->visible} {$p->body} {/if} {/foreach} Изменено 24 апреля, 2017 пользователем mishanya Цитата Ссылка на сообщение Поделиться на другие сайты
Marketus Опубликовано 24 апреля, 2017 Автор Жалоба Поделиться Опубликовано 24 апреля, 2017 можно так в цыкле выводить на главной содержимое всех видимых страниц {foreach $pages as $p} {if $p->visible} {$p->body} {/if} {/foreach} Мне не только на главной Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 24 апреля, 2017 Жалоба Поделиться Опубликовано 24 апреля, 2017 делаете несколько разделов - меню по инструкции http://forum.simplacms.ru/topic/4310-%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5-%D0%B4%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE-%D0%BC%D0%B5%D0%BD%D1%8E/ дальше можете в каждом меню добавлять несколько страниц-разделов и выводить {foreach $pages as $p} {if $p->visible && $p->menu_id==1} {$p->body} {/if} {/foreach} где menu_id==1 айди каждого из ваших разделов (меню) как бесплатный вариант Цитата Ссылка на сообщение Поделиться на другие сайты
Marketus Опубликовано 24 апреля, 2017 Автор Жалоба Поделиться Опубликовано 24 апреля, 2017 Сделал! Расширил симплу - сделал под страницы (parent_id) Страницыhttps://yadi.sk/i/4jusZLAV3HJVrS Страницаhttps://yadi.sk/i/wTErH-6z3HJVu8 1 В сайтмап не выводит подстраницы2 Автоматически сортирует в списке страниц под родителя + визуально показывает3 При прямом переходе на внутреннюю выдает "страница не найдена" Я подозреваю что нахардкодил где то, потому выложу инструкцию чуть позже.Хочу еще в списке страниц сделать фильтр по родительским страницам. Цитата Ссылка на сообщение Поделиться на другие сайты
Решение Marketus Опубликовано 25 апреля, 2017 Автор Решение Жалоба Поделиться Опубликовано 25 апреля, 2017 1) Добавляем поле в таблицу бд "_pages" поле parent_id ALTER TABLE `имя таблицы` ADD `parent_id` INT( 11 ) NOT NULL AFTER `id`2) Добавляем в api/Pages.php (строка 30) $query = "SELECT id, parent_id, url, header, name, meta_title, meta_description, meta_keywords, body, menu_id, position, visible 3) Что бы в меню выводило только главные страницы, в шаблоне главной страницы находим {if $p->menu_id == 1} и заменям на {if $p->menu_id == 1 && $p->parent_id == 0}4) Добавляем вывод контента подстраниц на главной ваш шаблон/main.tpl и на страницах остальных ваш шаблон/page.tpl {foreach $pages as $p} {if $p->parent_id == $page->id} {$p->body} {/if} {/foreach} 5) Добавляем в админку возможность выбора родительской страницы simpla/design/html/page.tpl <li><label class=property>Родительская страница</label> <select name="parent_id"> <option value="0">Не выбрана</option> {foreach $pages as $p} {if $page->id != $p->id && $p->parent_id == 0} <option value='{$p->id}' {if $p->id == $page->parent_id}selected{/if}>{$p->header|escape}</option> {/if} {/foreach} </select> </li> 6) Делаем красивый вывод страниц и подстраниц в списке страниц simpla/design/html/pages.tpl . После <div id="list"> {foreach $pages as $page} добавляем для вывода только первого уровня страниц {if $page->parent_id == 0} в конце добавляем вывод подстраниц перед {/foreach} </div> вставляем {foreach $pages as $subpage} {if $subpage->parent_id == $page->id} <div class="{if !$subpage->visible}invisible{/if} row"> <input type="hidden" name="positions[{$subpage->id}]" value="{$subpage->position}"> <div class="move cell"><div class="move_zone"></div></div> <div class="checkbox cell"> <input type="checkbox" name="check[]" value="{$subpage->id}" /> </div> <div class="name cell"> ↳<a href="{url module=PageAdmin id=$subpage->id return=$smarty.server.REQUEST_URI}">{$subpage->header|escape}</a> </div> <div class="icons cell"> <a class="preview" title="Предпросмотр в новом окне" href="../{$subpage->url}" target="_blank"></a> <a class="enable" title="Активна" href="#"></a> <a class="delete" title="Удалить" href="#"></a> </div> <div class="clear"></div> </div> {/if} {/foreach} {/if} 7) Добавляем сохранения данных выбранного родителя в simpla/PageAdmin.php //после $page->id = $this->request->post('id', 'integer'); //вставляем строку $page->parent_id = $this->request->post('parent_id', 'integer'); //а так же после $this->design->assign('menus', $menus); // Добавляем подстраницы$menu_id = $this->request->get('menu_id', 'integer'); $pages = $this->pages->get_pages(array('menu_id'=>$menu_id));$this->design->assign('pages', $pages);8) так же нужно запретить показ подстраниц по прямым ссылкам view/PageView.php //заменяем это // Отображать скрытые страницы только админу if(empty($page) || (!$page->visible && empty($_SESSION['admin']))) // на это // Отображать скрытые страницы только админу if(empty($page) || $page->parent_id != 0 || (!$page->visible && empty($_SESSION['admin']))) 9) последнее... убираем подстраницы из sitemap.php // Страницы foreach($simpla->pages->get_pages() as $p) { //заменяем это if($p->visible && $p->menu_id == 1) //на это if($p->visible && $p->menu_id == 1 && $p->parent_id == 0) { $url = $simpla->config->root_url.'/'.esc($p->url); print "\t<url>"."\n"; Я не программист, сделал как видел код, потому прошу по косякам давать рекомендации в стиле "что поменять, и почему".Это решение для моих нужд, и если кому будет полезно, рад был помочь. Цитата Ссылка на сообщение Поделиться на другие сайты
n1c Опубликовано 14 сентября, 2017 Жалоба Поделиться Опубликовано 14 сентября, 2017 подскажите пожалуйста, как сделать не вывод контента, а вывод подменю? Цитата Ссылка на сообщение Поделиться на другие сайты
n1c Опубликовано 17 сентября, 2017 Жалоба Поделиться Опубликовано 17 сентября, 2017 Для вывода подменю делаю: {if $p->menu_id == 1} <li {if $page && $page->parent_id == $p->parent_id}class="selected"{/if}> <a data-page="{$p->parent_id}" href="{$p->url}">{$p->name|escape}</a> </li> {/if} Но показывает меню и подменю, что я делаю не так? Цитата Ссылка на сообщение Поделиться на другие сайты
loxter Опубликовано 17 сентября, 2017 Жалоба Поделиться Опубликовано 17 сентября, 2017 Для вывода подменю делаю: {if $p->menu_id == 1} <li {if $page && $page->parent_id == $p->parent_id}class="selected"{/if}> <a data-page="{$p->parent_id}" href="{$p->url}">{$p->name|escape}</a> </li> {/if} Но показывает меню и подменю, что я делаю не так? Задаете некорректный вопрос.Потому что в Simpla НЕТ никаких подменю. Если У Вас есть, значит, делали доработку свою. И если хотите задавать по ней вопрос, то, наверное, надо бы в деталях описывать, что и как... Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 17 сентября, 2017 Жалоба Поделиться Опубликовано 17 сентября, 2017 (изменено) Задаете некорректный вопрос.Потому что в Simpla НЕТ никаких подменю. Если У Вас есть, значит, делали доработку свою. И если хотите задавать по ней вопрос, то, наверное, надо бы в деталях описывать, что и как... не судьба посмотреть вверх? там описано про это подменю. еще и зелененльким выделено для особенных. Изменено 17 сентября, 2017 пользователем mishanya Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 17 сентября, 2017 Жалоба Поделиться Опубликовано 17 сентября, 2017 Для вывода подменю делаю: {if $p->menu_id == 1} <li {if $page && $page->parent_id == $p->parent_id}class="selected"{/if}> <a data-page="{$p->parent_id}" href="{$p->url}">{$p->name|escape}</a> </li> {/if} Но показывает меню и подменю, что я делаю не так? у вас нигде нет условия чтобы это работало.пробуйте так {foreach $pages as $p} {if $p->parent_id==$page->id} <li> <a data-page="{$p->parent_id}" href="{$p->url}">{$p->name|escape}</a> </li> {/if} {/foreach}выводит подстраницы на родительской странице Цитата Ссылка на сообщение Поделиться на другие сайты
n1c Опубликовано 17 сентября, 2017 Жалоба Поделиться Опубликовано 17 сентября, 2017 у вас нигде нет условия чтобы это работало.пробуйте так {foreach $pages as $p} {if $p->parent_id==$page->id} <li> <a data-page="{$p->parent_id}" href="{$p->url}">{$p->name|escape}</a> </li> {/if} {/foreach}выводит подстраницы на родительской странице Не отображает(( хочу сделать выпадающее горизонтальное меню, вот сам весь код вместе с вашим: {* Меню *} <ul id="nav"> {foreach $pages as $p} {* Выводим только страницы из 1 меню *} {if $p->menu_id == 1 && $p->parent_id == 0} <li {if $page && $page->id == $p->id}class="selected"{/if}> <a data-page="{$p->id}" href="{$p->url}">{$p->name|escape}</a> <ul> {foreach $pages as $p} {if $p->parent_id==$page->id} <li> <a data-page="{$p->parent_id}" href="{$p->url}">{$p->name|escape}</a> </li> {/if} {/foreach} </ul> </li> {/if} {/foreach} </ul> {* Меню (The End) *} Цитата Ссылка на сообщение Поделиться на другие сайты
loxter Опубликовано 17 сентября, 2017 Жалоба Поделиться Опубликовано 17 сентября, 2017 Так совсем неправильно.Вы во вложенном цикле используете такую же переменную $p, как во внешнем цикле. Пробуйте другую, например, $p2... Цитата Ссылка на сообщение Поделиться на другие сайты
n1c Опубликовано 19 сентября, 2017 Жалоба Поделиться Опубликовано 19 сентября, 2017 Так совсем неправильно.Вы во вложенном цикле используете такую же переменную $p, как во внешнем цикле. Пробуйте другую, например, $p2...вообще не помогло Цитата Ссылка на сообщение Поделиться на другие сайты
loxter Опубликовано 19 сентября, 2017 Жалоба Поделиться Опубликовано 19 сентября, 2017 вообще не помогло Видимо, ошибок разных много.Надо же не просто копировать, а понимать, что к чему.Если готовы оплачивать, обращайтесь в личку... Цитата Ссылка на сообщение Поделиться на другие сайты
n1c Опубликовано 24 сентября, 2017 Жалоба Поделиться Опубликовано 24 сентября, 2017 у вас нигде нет условия чтобы это работало.пробуйте так {foreach $pages as $p} {if $p->parent_id==$page->id} <li> <a data-page="{$p->parent_id}" href="{$p->url}">{$p->name|escape}</a> </li> {/if} {/foreach}выводит подстраницы на родительской странице Меняю на: {foreach $pages as $p} {if $p->parent_id} <li> <a data-page="{$p->parent_id}" href="{$p->url}">{$p->name|escape}</a> </li> {/if} {/foreach} отображение идет, но подменю выводится во всех меню родитель и не родитель, что нужно добавить чтобы подменю выводилось только для родителя которому оно задано? Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.