wir

wir

+5
Репутация
4
Рейтинг
#1 [ЕСТЬ РЕШЕНИЕ] В поле дважды выводит скрипт в шаблоне из метода parse 21 апреля 2023 в 08:01

Может кто сталкивался с подобной ситуацией

wir

Да

IamB

БОЛЬШОЙ РАХМАТ !

#1 [ЕСТЬ РЕШЕНИЕ] В поле дважды выводит скрипт в шаблоне из метода parse 20 апреля 2023 в 22:08

Добрый день.
Столкнулся с такой ситуацией. При выводе, стандартным способом, скрипта в конце страницы в шаблоне поля (ICMS 2.15.2) у меня этот код выводится дважды.

  1. public function parse($value){
  2.  
  3. cmsTemplate::getInstance()->addBottom("<script>
  4.  
  5. тут код
  6.  
  7. </script>");
  8. }

Дело в том, что в скрипте есть аякс запросы и соответственно они повторяются. А это не хорошо.

Может кто сталкивался с подобной ситуацией и знает как ее избежать?

#3 Вывод виртуального поля в Группах контента, профилях пользователей и формах конструктора форм 1 марта 2023 в 18:17

По пункту 3 все благополучно разрешилось, в Конструкторе форм поле работает. А по пп 2 и 3 вопрос остался.

#1 Вывод виртуального поля в Группах контента, профилях пользователей и формах конструктора форм 18 февраля 2023 в 11:40

Добрый день.
Прошу помощи в одном вопросе.
Я создал виртуальное поле (public $is_virtual = true;), выводящее списки контента разными способами.
В ТК все работает отлично, в шаблоне работает через метод parse, в форме через getInput, используя следующие свойства

  1. <?php
  2. public $title = 'Список контента';
  3. public $is_virtual = true;
  4. public $var_type = 'string';

А вот в группах, профилях пользователей и конструкторе форм вышла заминка
1. В группах при создании поля пытается создать поле в БД и вылетает с ошибкой
503 Ошибка в запросе БД:
ALTER TABLE cms_groups ADD `list_ctype`

2. В Профилях пользователей, после создания поля во фронтенде пытается запросить это поле и естественно получает ошибку
Notice
: Undefined index: list_ctype in /system/controllers/users/actions/profile.php on line 25

3. В конструкторе форм поле создается, но не выводится и ошибками себя не проявляет.

Создатели ICMS говорят что с 2.15.0 с виртуальными полями вроде утрясли, на форуме крайне мало информации по ним, в документации тоже.

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

#5 Запрос через модель 27 октября 2022 в 09:28

$item = $this->filterDateYounger('date_pub', '2018-10-03')->filterDateOlder('date_pub', '2018-10-05')->getItem('con_posts');

Ris

УТОЧНЕНИЕ.

filterDateYounger и filterDateOlder работают с датой через INTERVAL и формат '2018-10-05' здесь не уместен.

Если нужен промежуток между датами, то лучше так

  1. $items = $model->filterBetween($date_field, $first_date, $last_date)->getItem($table_name);
  2.  
  3. или
  4.  
  5. $items = $model->filterBetween($date_field, '2018-10-03', '2018-10-05')->getItem('con_posts');
  6.  
  7.  
#6 [ЕСТЬ РЕШЕНИЕ] Запрос экшена по Аякс 24 октября 2022 в 16:37

СПАСИБО, Fuze, за оперативный совет!
ДОКУМЕНТАЦИЯ СУПЕР!  👍

#1 [ЕСТЬ РЕШЕНИЕ] Запрос экшена по Аякс 24 октября 2022 в 14:29

Добрый день.
Необходимо выполнить Аякс запрос из виджета в контроллере «content».
Пролистал форум нашел четкие указания Fuze "… создать миниконтроллер с одним экшеном, который вам будет отдавать что нужно."

Разместил запрос в виджете

  1. $.post('/system/controllers/content/actions/widget_events_ajax.php', {month: 9, year: 2022}, function(data){
  2. console.log(data);
  3. });

проверил его на вызове страницы, получил html-код.

Сделал пробное ухо в экшене /system/controllers/content/actions/widget_events_ajax.php

  1. <?php
  2. class actionContentWidgetEventsAjax extends cmsAction {
  3.  
  4. public function run(){
  5.  
  6. if (!$this->request->isAjax()){ return cmsCore::error404(); }
  7.  
  8. // Если к нам идёт Ajax запрос, то ловим его
  9. $new_month = $_POST['month'];
  10. $new_year = $_POST['year'];
  11.  
  12. return 'Это ajax запрос! Месяц:' . $new_month . 'Год:' . $new_year;
  13.  
  14. }
  15. }
  16.  
  17.  

Но получаю 403 в консоли

ВОПРОС: Что здесь не так? Как получить ответ? 

#8 В компоненте избранное выдает ошибку 404 при подгрузке аяксом 30 июля 2022 в 19:26

p.s. капсом писать название темы моветон

Согласен.

За совет спасибо!

#9 В компоненте избранное выдает ошибку 404 при подгрузке аяксом 30 июля 2022 в 17:58

Понятно. Так и должно быть. Чтобы работало нужно код править. Вы пытаетесь из аякся запустить аякс

Все верно.
Прежде чем править код хотел уточнить постановку задачи.

#10 В компоненте избранное выдает ошибку 404 при подгрузке аяксом 30 июля 2022 в 17:26

Если мы закомментируем этот код, то на странице по ссылке видим

wir

А что вы еще вы должны видеть? Данные эта страница получает по аяксу. Вы видите то, что выводит аякс в случае ошибки. А если не по аяксу, значит пересылает на 404. У вас страница возвращает ошибку. Нужно искать её на странице. Аякс тут вообще не при чём.

Поставил себе компонент. Ошибки не наблюдаю. Откуда вы сохраняетесь в закладки?

Lora

Lora, все верно вы говорите.
Ситуация вот в чем. У меня на странице два списка, один из них подгружается по Аяксу и в том который не по Аяксу кнопка «Сохранено/В закладки» работает штатно, а в том который был подгружен по Аяксу поведение как выше описано.

#11 В компоненте избранное выдает ошибку 404 при подгрузке аяксом 30 июля 2022 в 17:07

Этот код и говорит, что если не аякс, то 404, а ваша ошибка видимо связана с чем то другим.

Lora

Если мы закомментируем этот код, то на странице по ссылке видим
           {«error»:true,«message»:«csrf_token error»}

иначе, при незакомментированном коде переход на страницу 404

Этот вопрос, о возможности избежать такого поведения и обеспечить работоспособность на Аяксовском коде, скорее к  InstantMedia, как к разработчикам Компонента «Избранное» или тем кто возможно сталкивался с этим вопросом.

#1 В компоненте избранное выдает ошибку 404 при подгрузке аяксом 30 июля 2022 в 12:27

В компоненте ИЗБРАННОЕ от InstantMedia в коде подгруженном по Аяксу при сохранении или записи в Закладки выдает 404 из-за кода

  1. if (!$this->request->isAjax()){
  2. return cmsCore::error404();
  3. }

в файлах:
    system/controllers/favorites/actions/save.php
    system/controllers/favorites/actions/delete.php

ВОПРОС: Можно ли избежать такого поведения и добиться того чтобы Закладки работали и в коде под Аяксом?

#13 [ЕСТЬ РЕШЕНИЕ] Где формируется pagebar списка ТК ? 5 июля 2022 в 10:31

а также где находится функция

wir

system\libs\template.helper.php

Прошу подсказать в каком месте кода (файл) формируются:

wir

system\controllers\content\actions\category_view.php, например

Lora

Lora, спасибо за html, а

  1. $page, $perpage, $total, $page_url, $filter_query

формируются в renderItemsList файла system/controllers/content/frontend.php

#1 [ЕСТЬ РЕШЕНИЕ] Где формируется pagebar списка ТК ? 29 июня 2022 в 11:06

Задача: 
Сформировать начальную загружаемую страницу Списка ТК с места последней просмотренной user-ом Записи с последующей аякс подгрузкой прочитанных и непрочитанных записей в соответствии с установленной опцией $perpage.
Прошу подсказать в каком месте кода (файл) формируются:

  1. $page, $perpage, $total, $page_url, $filter_query


а также где находится функция

  1. html_pagebar($page, $perpage, $total, $page_url, $filter_query);

Если кто-то сталкивался с подобной задачей буду благодарен за советы.

#15 [ЕСТЬ РЕШЕНИЕ] Хук content_TK_before_list плюс Шаблон default_list.tpl.php 5 апреля 2022 в 16:17

 wir, покажите весь код. Пока ключевые моменты

В переборе должно быть так

  1. foreach($items as $key => $item){
  2. .....
  3. $items[$key]['new_bind'] = ...

и в конце хука надо возвращать не data, a

  1. return [$ctype, $items];
Zau4man

Собственно пока это весь код (модель).
Все начиналось с 

  1. Notice: Undefined index: new_bind in

Спасибо Zau4man и IamB вывели из ступора.
Посмотрел в учебнике
«Для того, чтобы напрямую изменять элементы массива внутри цикла, переменной $value должен предшествовать знак &. В этом случае значение будет присвоено по ссылке.».
Вот рабочее решение:

  1. foreach($items as &$item){
  2. $item['new_bind_msg'] = 8888888;
  3. }
  4. unset($item); // разорвать ссылку на последний элемент
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.