JohnCMS | Разработка следующей версии

Тема закрыта
44.14K
.
Бывший человек
# Simba (09.01.2020 / 19:35)
Потому что убери $this->e()
Это экранирование
заработало)))
.
AlkatraZ
╭∩╮ (`-`) ╭∩╮
# 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&amp;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&amp;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="" />&#160;';
            } else {
                echo '<img src="' . $homeurl . '/images/stock_avatar_user.png" width="20" height="20" alt="" />&#160;';
            }
?>
                         </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') . '&nbsp;&raquo;&nbsp;&nbsp;<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 открывался, а твой модуль.
Таким образом ты сможешь в модуле писать всё что угодно и дальше сможешь спокойно обновлять двиг без особых проблем. Достаточно только будет потом настройки роутера обновить после обновления и всё.
Всего: 1376
Кураторы: AlkatraZ