# cuHyc (09.01.2020 / 19:38)
ну пока вот этот вопрос встал...
ну это как бы зависимость - если я захочу в модулях по разному выводить заголовки... в данном моменте у меня в новостях в блоке с заголовком - кнопки добавит\очистит
Я не знаю точную задумку, но есть вариант с секциями.
То есть логика следующая (покажу на примере нашего Layout и админки)...
1) У нас для движка есть
основной шаблон-лейаут по умолчанию.
2) Нам нужна боковая менюха. Если мы ее жестко пропишем в лейауте, то там, где нам будет нужна другая менюха (к примеру в админке), придется пилить такой же лейаут, но с другой менюхой и дублировать код, что считается плохо.
Посему, у нас боковуха
вынесена в отдельный шаблон и инклюдится тут.
З.Ы.
Обрати внимание, что инклюд идет не просто методом ->fetch() а в начале используется метод ->section()
Это значит, что мы где-то в подчиненных шаблонах потом сможем переопределить ЧТО будет инклюдиться. По умолчанию инклюдится то, что задано. Но если мы пошлем задание, с ключем sidebar-menu, то будет проинклюжена другая менюха.
Для примера обрати внимание: в шаблоне админки я вызываю главный лейаут. Но мне нужна ДРУГАЯ менюха, потому
я вызываю метод $this->sectionReplace('sidebar-menu', и передаю ему вторым аргументом то, что должно быть вызвано вместо основной менюхи сайта.
AlkatraZ, я это уже заметил, потому что мне пришлось первым делом в своем шаблоне админку наладить...
Сейчас такая проблема - получается page_title на все модули прописан, в одном месте, и когда я прописал переменную с кнопками в заголовок, а так же обращение переменной к шаблону buttons из news/index - в других местах кроме news/index - выскакивает ошибка, так вот по этому я сначала поинтересовался как прописать условие, что переменная $icons_adm выводится только когда движок обращается к news/index... что бы мне в других местах не ругался на неё...
И ещё подскажите где находятся эти "иерархические" (сам не знаю как правильно называется) крошки - ну типо - главная>новости>и т.д
Добавлено: 10.01.2020 / 09:31
# cuHyc (10.01.2020 / 09:11)
Сейчас такая проблема - получается page_title на все модули прописан, в одном месте, и когда я прописал переменную с кнопками в заголовок, а так же обращение переменной к шаблону buttons из news/index
Просто добавь условия
<?php if(isset($icons_adm)): ?>
<?= $icons_adm ?>
<?php endif; ?>
Добавлено: 10.01.2020 / 09:32
Шаблон хлебных крошек находится тут:
themes/default/templates/system/app/breadcrumbs.phtml
<?php foreach ($list() as $news): ?>
товарисчи, а если в цикле нужно только 1 запись вывести??
Ну тогда думаю тебе не нужен цикл.
# Simba (10.01.2020 / 12:36)
Ну тогда думаю тебе не нужен цикл.
тогда? не ну серьезно, как указать типо decs limit?
Без модификации модуля никак. Это список новостей, он не подразумевает отображение одной новости.
# Simba (10.01.2020 / 13:18)
Без модификации модуля никак. Это список новостей, он не подразумевает отображение одной новости.
причем здесь новости, вообще в старой версии если я делал виджет, брал кусок кода и прописывал в запросе desc limit... здесь то так не сделать, а если и сделать - это наверно будет "по старому"... разве я не могу вывести на главную к примеру последнюю новость, последние 3 темы форума, 2 статьи последние и фотографии без модификации модулей? или всё таки проще взять кусок кода из старой версии написать виджет, и проинклудить?
то есть если я напишу виджет
<div class="box_main_content">
<div class="box_main_content_link_module">
<a class="bmclm" href="news/"><span class="box_icon"><span aria-hidden="true" class="social_rss"></span></span> <? echo _t('News archive', 'system'); ?></a>
<span class="mm_count"><? echo $mp->newscount; ?></span>
</div>
<?
if ($mp->newscount > 0) {
?>
<div class="box_main_content_text">
<?
$total = $db->query("SELECT COUNT(*) FROM `news`")->fetchColumn();
$req = $db->query("SELECT * FROM `news` ORDER BY `time` DESC LIMIT 1");
$i = 0;
while ($res = $req->fetch()) {
$text = $tools->checkout($res['text'], 1, 1);
$text = $tools->smilies($text, 1);
?>
<div class="news_bc_title">
<h4><? echo $res['name']; ?></h4>
<?
if ($systemUser->rights >= 6) {
?>
<span class="nbcbb"><a href="news/index.php?do=edit&id=<? echo $res['id']; ?>" title="<? echo _t('Edit'); ?>"><span class="box_icon"><span aria-hidden="true" class="icon_pencil"></span></span></a> <a href="news/index.php?do=del&id=<? echo $res['id']; ?>" title="<? echo _t('Delete'); ?>"><span class="box_icon"><span aria-hidden="true" class="icon_blocked"></span></a></span>
<?
}
?>
<div class="table bml_author">
<div class="table-row">
<div class="table-cell user_board_stat_avatar">
<?
if (file_exists((ROOT_PATH . 'files/users/avatar/' . $res['id_author'] . '.png'))) {
echo '<img src="' . $homeurl . '/files/users/avatar/' . $res['id_author'] . '.png" width="20" height="20" alt="" /> ';
} else {
echo '<img src="' . $homeurl . '/images/stock_avatar_user.png" width="20" height="20" alt="" /> ';
}
?>
</div>
<div class="table-cell user_board_st_inf">
<a href="<? echo $config['homeurl']; ?>/profile/?user=<? echo $res['id_author']; ?>"><? echo $res['avt']; ?></a> <span class="user_board_post_time"><? echo $tools->displayDate($res['time']); ?></span>
</div>
</div>
</div>
</div>
<div class="news_bc_text">
<? echo $text; ?>
</div>
<?
if ($res['kom'] != 0 && $res['kom'] != "") {
$komm = $db->query("SELECT COUNT(*) FROM `forum` WHERE `type` = 'm' AND `refid` = '" . $res['kom'] . "'")->fetchColumn();
if ($komm >= 0) {
?>
<div class="news_bc_bb">
<a class="nbcbb" href="../forum/?id=<? echo $res['kom']; ?>"><? echo _t('Discuss in Forum') . ' » <span class="nbcbb_count">' . $komm . '</span>'; ?></a>
</div>
<?
}
}
++$i;
}
?>
</div>
<?
}
?>
</div>
и проинклужу его в шаблоне, он работать не будет?
сейчас у меня это работает на 7.1 - у меня mainmenu перенесён на шаблон через file_exists - и в нем подлючен этот виджет...
но здесь как бы расчет на то что можно настроить кол-во выводимых записей
# cuHyc (10.01.2020 / 13:32)
причем здесь новости, вообще в старой версии если я делал виджет, брал кусок кода и прописывал в запросе desc limit... здесь то так не сделать, а если и сделать - это наверно будет "по старому"... раз
Ну это не совсем правильно, но работать будет.
С таким подходом ты просто начинаешь опять смешивать логику с представлением.
В идеале конечно если тебе надо сделать какую-то особую главную, создаешь новый модуль по аналогии с homepage и в роутере переопределяешь путь к главной, чтобы у тебя не homepage открывался, а твой модуль.
Таким образом ты сможешь в модуле писать всё что угодно и дальше сможешь спокойно обновлять двиг без особых проблем. Достаточно только будет потом настройки роутера обновить после обновления и всё.