Дополнение к $wa->site->pages
Здравствуйте. Сейчас конструкция {$pages = $wa->site->pages(null, true)} ограничивает возможности вывода определенного поселения сайт на страницы других приложений , а также вывода нескольких меню разных поселений - только самое верхнее.
Предлагаю внедрить третью переменную {$pages = $wa->site->pages(null, true, null)} которая отвечала бы за вывод определенного поселения.
например {$pages = $wa->site->pages(null, true, 1)}- для первого поселения.
Прилагаю измененный код siteViewHelper.class.php
<?php class siteViewHelper extends waAppViewHelper { public function pages($parent_id = 0, $with_params = true, $i = null) { if (is_bool($parent_id)) { $with_params = $parent_id; $parent_id = 0; } try { $domain_model = new siteDomainModel(); $domain = $domain_model->getByName(waSystem::getInstance()->getRouting()->getDomain(null, true)); $page_model = new sitePageModel(); $sql = "SELECT id, parent_id, name, title, full_url, url, create_datetime, update_datetime FROM ".$page_model->getTableName().' WHERE domain_id = i:domain_id AND route = s:route AND status = 1 ORDER BY sort'; if (!ifset($i)){ $route = wa()->getRouting()->getRoute('url'); $url = $this->wa->getAppUrl(null, true); } else { $routes = wa()->getRouting()->getByApp('site', $domain['name']); if ($routes) { $route = $routes[$i]; $route = $route['url']; $url = wa()->getRootUrl(false, true).waRouting::clearUrl($route); } else { return array(); } } $pages = $page_model->query($sql, array( 'domain_id' => $domain['id'], 'route' => $route) )->fetchAll('id'); if ($with_params) { $page_params_model = new sitePageParamsModel(); $data = $page_params_model->getByField('page_id', array_keys($pages), true); foreach ($data as $row) { $pages[$row['page_id']][$row['name']] = $row['value']; } } foreach ($pages as &$page) { $page['url'] = $url.$page['full_url']; if (!isset($page['title']) || !$page['title']) { $page['title'] = $page['name']; } foreach ($page as $k => $v) { if ($k != 'content') { $page[$k] = htmlspecialchars($v); } } } unset($page); // make tree foreach ($pages as $page_id => $page) { if ($page['parent_id'] && isset($pages[$page['parent_id']])) { $pages[$page['parent_id']]['childs'][] = &$pages[$page_id]; } } if ($parent_id) { return isset($pages[$parent_id]['childs']) ? $pages[$parent_id]['childs'] : array(); } foreach ($pages as $page_id => $page) { if ($page['parent_id'] && $page_id != $parent_id) { unset($pages[$page_id]); } } return $pages; } catch (Exception $e) { return array(); } } public function page($id) { $page_model = new sitePageModel(); $page = $page_model->getById($id); $page['content'] = $this->wa->getView()->fetch('string:'.$page['content']); $page_params_model = new sitePageParamsModel(); $page += $page_params_model->getById($id); return $page; } }
9 комментариев
Ну и для наглядности и удобства конечного пользователя заменить строчку
в Routing.html добавив тем самым визуальное отображение номера поселения.
Лучше сюдой предлагать
https://github.com/webasyst/webasyst-framework
Хотя в ШС + фреймворк уже больше 60 открытых PR, которые не рассматриваются в большинстве своём.
Ну может плюсов такие же интузиасты как я поставят топику и тем самым привлекут внимание разработчиков.
Если каждый из нас ( сторонних программистов) внесет хотябы одно полезное улучшение. Фреймворк станет просто заоблачно крутым )))
Ну я имел ввиду, что на Гитхабе можно сразу в dev-ветку код свой предлагать, а не оставлять возможность Webasyst самим разбираться что тут в коде было добавлено.
Таких улучшений уже больше 60 даже не рассмотренных.
И у меня немного подгорает из-за того, что 14 из них мои. Хотелось бы хотя бы понимать что может быть реализовано, на что нужно время, что доработать, а что не будет принято вообще.
Наверно просто нужно нанять "специально обученные люди" для этих целей. И дело пойдёт в гору.
Нехотят) или не могут https://developers.webasyst.ru/forum/20632/kogda-p...
В общем на принятия pull-requestov расчитывать не стоит
Ой, а я пропустил тему.
А это из-за https://developers.webasyst.ru/forum/18322/podpisk... )
Ну по поводу не могут это конечно уже .... Могут. По вопросу хотят не хотят тут уж не могу не чего сказать. Я безусловно был бы рад внести свой посильный вклад. Но если разработчики не по считают нужным вносить из изменение то это в их власти. Зато если людям потребуется то вот оно готовое решение.