My-InstantCMS.Ru

My-InstantCMS.Ru

Несколько дней не буду в сети
+1143
Репутация
16587
Рейтинг
#1 Разработка своего дополнения 9 июня 2023 в 05:40

 No Name, посмотрел дополнение, для первого раза очень хорошо, продолжайте в том же духе)

Есть некоторые моменты в коде, где я бы сделал по другому, например:

В файле system\fields\rximgo.php не нужны методы hookAfterAdd и hookAfterRemove они и так выполняются в таком же виде, что есть сейчас.

В методе parse вы получаете объект core потом из request получаете ctype_name и slug, что бы получить текущий запись.

  1. $inCore = cmsCore::getInstance();
  2. $content_model = $inCore->getModel('content');
  3. $current_item = $content_model->getContentItemBySLUG($inCore->request->get('ctype_name'), $inCore->request->get('slug'));
  4. $url_item = $inCore->uri;
  5.  
  6. $my_zapros_tip_contetna = 'con_'.$inCore->request->get('ctype_name');
  7. $my_get_str = ($content_model->getItemById($my_zapros_tip_contetna,
  8. $current_item['id']))['rx_user_iamgo'];

Не нужны такие сложности, так как текущий запись уже есть в этом методе, просто обращайтесь так

  1. $this->item['ctype_name']; // имя типа контента
  2. $this->item['id']; // ID записи
  3. $this->item['title']; // Заголовок записи
  4. $this->item['rx_user_iamgo']; или $value; // Значение вашего поля

В файле system\controllers\rxcontroller\actions\addamgomer.php

Данные о текущем пользователей получаете так cmsUser::get('is_logged') или cmsUser::get('id')

Лучше получать так

  1. $this->cms_user->is_logged; // авторизован или нет
  2. $this->cms_user->is_admin; // админ или нет
  3. $this->cms_user->id; // ID текущего пользователя
  4. $this->cms_user->nickname; // ник пользователя

Так же вы создаете объект модели контента cmsCore::getModel('content') и обращаетесь в getItemById

Данный метод общий и можно обращаться с любой модели, поэтому лучше создайте свой файл model.php или объект

  1. $model = new cmsModel();


 Еще заметил, что везде используете insertOrUpdate, хотя update ни разу не было, поэтому лучше использовать insert

В файле templates\modern\controllers\rxcontroller\fild_rx_imgo.tpl.php есть такой неправильный код

  1. <div style="width: 50px;height: 50px;float: left;margin: 5px;">
  2. <a href="/users/<?php echo $users_model->getUser($user_go)['id']; ?>"
  3. title="<?php echo $users_model->getUser($user_go)['nickname']; ?>">
  4. <?php if(!empty($users_model->getUser($user_go)['avatar'])){
  5. $user_avatar = $users_model->getUser($user_go)['avatar'];
  6. echo html_avatar_image($user_avatar, 'small', $user->nickname);
  7. } else {
  8. echo html_avatar_image_empty($users_model->getUser($user_go)['nickname'], 'embed-responsive-item');
  9. } ?>
  10. </a>
  11. </div>

Этот код выполняется в массиве списка пользователей и для каждого пользователя вы выполняете 5 запроса что бы получить id, nickname, avatar

Через какое то время начнутся нагрузки на базу, вам надо хотя бы в начале цикла получить один раз инфо о юзере, потом выводить

  1. <?php $user = $users_model->getUser($user_go); ?>
  2. <div style="width: 50px;height: 50px;float: left;margin: 5px;">
  3. <a href="<?php echo href_to('users', $user['id']); ?>"
  4. title="<?php echo $user['nickname']; ?>">
  5. <?php if(!empty($user['avatar'])){
  6. $user_avatar = $user['avatar'];
  7. echo html_avatar_image($user_avatar, 'small', $user->nickname);
  8. } else {
  9. echo html_avatar_image_empty($user['nickname'], 'embed-responsive-item');
  10. } ?>
  11. </a>
  12. </div>

Но всё же не советую в tpl файлах использовать запросы на базу, это лучше сделать в файле system\fields\rximgo.php

В этом же файле выводить иконки полностью с <svg></svg> не надо, для этого есть удобный метод

  1. <?php html_svg_icon('solid', 'minus-circle'); ?>

В остальном всё нормально, обращайтесь если возникнут вопросы

#2 Разработка своего дополнения 8 июня 2023 в 16:39

Отправьте, посмотрю, может подскажу что нибудь 

#3 [ЕСТЬ РЕШЕНИЕ] Админка сломалась! 8 июня 2023 в 05:52

Удалить папку templates\admincoreui\ и загрузить из архив релиза.

Так же в новостях каждого релиза иногда советуют удалить какие то файлы, их тоже надо выполнить 

#4 Как прописать маску к странице после поиска типа board?page=........ 30 мая 2023 в 17:54

вопрос решен, board*

Happy

Такая маска распространяется во всех страницах board

Правильнее так board?page=%

#5 [ЗАКРЫТО] Слияние тем 30 мая 2023 в 11:43

 Happy, нет, стили которые выбирает в настройках типа контента, например default_list_my.tpl.php

#6 [ЗАКРЫТО] Слияние тем 30 мая 2023 в 10:15

возможно ли реализовать переключение на сайте между шаблонами?

Happy

Сделал у себя на демо сайтах, но имеет свои недостатки, например если для типа контента задан какой стиль, то такой стиль должен существовать во всех шаблонах или только в default

#7 Как поставить фоновое png изображение на фоне в хедере сайта? 23 мая 2023 в 07:41

Вам надо найти селектор этого блока и указать код в css, например вот с демо сайта

Изображение

  1. .icms-header__middle {
  2. background: #596275 url(https://demo.pp.ru/templates/modern/controllers/cropperz/images/0.jpeg);
  3. }

Первый идет цвет, потом картинка, если ваша картинка прозрачная, будет поверх цвета

#8 Паттерн перевести в нижний регистр 22 мая 2023 в 16:10

и уже спарсеные не меняются заголовки

kazakdona

Да, работает только для новых записей 

#9 Паттерн перевести в нижний регистр 22 мая 2023 в 15:56

 kazakdona, Если вариант с хуком актуально, создайте папку /system/controllers/ucfirst/

Создайте файл frontend.php внутри этой папки 

  1. <?php class ucfirst extends cmsFrontend {}

Создайте папку hooks и файл content_after_add_approve.php внутри этой папки 

  1. <?php
  2. class onUcfirstContentAfterAddApprove extends cmsAction {
  3.  
  4. public function run($data){
  5. $data['item']['title'] = ucfirst(strtolower($data['item']['title']));
  6. return $data;
  7. }
  8.  
  9. }

Далее в Админке — Компоненты — Управление событием — появиться новый хук, нажмите Обновить.

После чего при добавление контента, если написать (ПРИВЕТ или пРИВЕТ или ПрИвЕт), сохраняется Привет

#10 Паттерн перевести в нижний регистр 22 мая 2023 в 12:55

Как в паттернах перевести в нижний регистр не знаю, но один из вариантов написать хук, который при добавлении обрабатывает заголовок и переведет в нижний регистр.

#11 Таблица с данными из БД 20 мая 2023 в 09:16

Если я правильно понял, вам надо выполнить шаги:

1. Создать папку (контроллер) в /system/controllers/{название_папки} например /system/controllers/test

2. Внутри создать файл frontend.php, который содержит 

  1. <?php
  2. class test extends cmsFrontend {
  3.  
  4. public function actionIndex(){
  5.  
  6. $model = new cmsModel();
  7. $items = $model->get('ИМЯ_ТАБЛИЦЫ_В_БД'); //в массив $items получите все записи из таблицы
  8.  
  9. return $this->cms_template->render([
  10. 'items' => $items
  11. ]); // передаем массив $items в /templates/ваш_шаблон/controllers/test/index.tpl.php
  12.  
  13. }
  14.  
  15. }

3. создать файл /templates/ваш_шаблон/controllers/test/index.tpl.php

4. Внутри этого файла можно добавить любой html код и там доступы php переменные, например можете вывести данные с $items

  1. <?php if ($items){ ?>
  2. <?php foreach ($items as $item){ ?>
  3. <div class="card">
  4. <h5 class="card-header"><?php echo $item['title']; ?></h5>
  5. <div class="card-body">
  6. <?php echo $item['text']; ?>
  7. </div>
  8. </div>
  9. <?php } ?>
  10. <?php } ?>

Раздел будет доступен по адресу: ваш-сайт.ru/test — test это название папки (контроллера)

#12 [ЕСТЬ РЕШЕНИЕ] Иконка в странице как изменить размер 16 мая 2023 в 17:02

В какой нибудь css добавьте

  1. body .icms-svg-icon{
  2. width: 000px;
  3. height: 000px;
  4. }

В место 000px укажите свой размер

#13 Неправильный URL в азербайджанском языке 15 мая 2023 в 14:40

Тогда не знаю, надо копать прямо в хостинге

#14 Неправильный URL в азербайджанском языке 15 мая 2023 в 11:07

 F_a_R_i_D,  сработает только для новых записей и если язык выбран AZ 

#15 Неправильный URL в азербайджанском языке 13 мая 2023 в 16:34

В файле \system\languages\ВАШ_ЯЗЫК\functions.php

Есть массив

  1. $ru_en = [
  2. 'а' => 'a', 'б' => 'b', 'в' => 'v', 'г' => 'g', 'д' => 'd',
  3. 'е' => 'e', 'ё' => 'yo', 'ж' => 'zh', 'з' => 'z',
  4. 'и' => 'i', 'й' => 'i', 'к' => 'k', 'л' => 'l', 'м' => 'm',
  5. 'н' => 'n', 'о' => 'o', 'п' => 'p', 'р' => 'r', 'с' => 's',
  6. 'т' => 't', 'у' => 'u', 'ф' => 'f', 'х' => 'h', 'ц' => 'c',
  7. 'ч' => 'ch', 'ш' => 'sh', 'щ' => 'sch', 'ъ' => '', 'ы' => 'y',
  8. 'ь' => '', 'э' => 'e', 'ю' => 'yu', 'я' => 'ja'
  9. ];
  10.  

Вам надо дополнить и добавить несуществующие буквы и их транслит на английский

🍪Мы используем файлы cookie для работы сайта. Читать подробнее.