instantcms 2 виджет php

Нужен виджет вывода php кода

#31 17 июля 2020 в 21:16
  1.  
  2. Потому, что не объявлена в том виджете переменная $item.
  3. Получите её в виджете заново и оперируйте ею, как хотите.
  4.  
А как её объявить?
#32 17 июля 2020 в 21:32

А как её объявить?

Vladimir
Так посмотрите, как она попадает в default_item.tpl.php.
Примерно таким же образом её придется добывать в виджете.
Вы точно не хотите решить эту проблему более простым способом, чем виджет php?
#33 17 июля 2020 в 21:40
Если надо выводить поля в своей вёрстке то вот вам варианты
/blogs/dopolnenija-ot-instantcms2-ru/dbl-tn.html
/blogs/dopolnenija-ot-instantcms2-ru/pole-html-tekst-s-obrabotkoi-polei.html
#34 17 июля 2020 в 21:59

/blogs/dopolnenija-ot-instantcms2-ru/dbl-tn.html

GoodMade
Интересный вариант, но с помощью данного виджета, у меня получилось вывести только столбец title из таблицы. Когда вставляю {id}, id не отображается.

Вы точно не хотите решить эту проблему более простым способом, чем виджет php ?

Ris
Думаю, виждет, оптимальный вариант.
#35 17 июля 2020 в 22:15

Думаю, виждет, оптимальный вариант.

Vladimir
Dj многих компонентах есть виджеты. И виджет php не получает данных ни из одного компонента.
Хотя можно попробовать получать единицу контента как-то так прямо в этом виджете.
$this->model_content->getContenItem(тип_контента, номер единицы контента):
#36 17 июля 2020 в 22:33

С помощью виджета, пытаюсь делать манипуляции со страницей контента, к примеру вывести ID текущей страницы,
<?php html($item['id']); ?>

но не получается.

Vladimir

У меня так получилось:

  1.  
  2. $inCore = cmsCore::getInstance();
  3. $content_model = $inCore->getModel('content');
  4. $current_item = $content_model->getContentItemBySLUG($inCore->request->get('ctype_name'), $inCore->request->get('slug'));
  5. echo 'current_item = ' . $current_item['id'];
  6.  
#37 17 июля 2020 в 22:33

Хотя можно попробовать получать единицу контента как-то так прямо в этом виджете.
$this->model_content->getContenItem(тип_контента, номер единицы контента):

Ris
Я как понимаю здесь получение конкретной записи, а мне нужно что-то формировалось динамически.

/blogs/dopolnenija-ot-instantcms2-ru/dbl-tn.html

GoodMade
как вариант уже подумал добавить поле id в таблицу cms_con_articles_fields, там через приватность всё скрыть, но главное чтобы виджет заработал. Ан нет. Ещё задача что-бы данный виджет видел только автор записи) А такого функционала здесь нет, а php он не поддерживает...
Тогда приходим к этому решению /forum/thread33504-1.html, а здесь снова $item, который не объявлен…
#38 17 июля 2020 в 22:39

$inCore = cmsCore::getInstance();
$content_model = $inCore->getModel('content');
$current_item = $content_model->getContentItemBySLUG($inCore->request->get('ctype_name'), $inCore->request->get('slug'));
echo 'current_item = '. $current_item['id'];

vladimird
Супер! Работает, спасибо!
Теперь бы ещё как сделать, чтобы запись мог видеть только автор?
#39 17 июля 2020 в 22:54

Теперь бы ещё как сделать, чтобы запись мог видеть только автор?

Vladimir
  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. if ($current_item['id'] == $this->cms_user->id){
  5. echo 'current_item = ' . $current_item['id'];
  6. }
#40 17 июля 2020 в 23:04

$inCore = cmsCore::getInstance();
$content_model = $inCore->getModel('content');
$current_item = $content_model->getContentItemBySLUG($inCore->request->get('ctype_name'), $inCore->request->get('slug'));
if ($current_item['id'] == $this->cms_user->id){
echo 'current_item = '. $current_item['id'];
}

Ris
Не сработало, ничего не выводит автору. Наверное $this->cms_user->id не работает.
#41 17 июля 2020 в 23:07

Наверное $this->cms_user->id не работает.

Vladimir
Тогда так:
  1. $user_id = cmsUser::getInstance()->id;
  2. $inCore = cmsCore::getInstance();
  3. $content_model = $inCore->getModel('content');
  4. $current_item = $content_model->getContentItemBySLUG($inCore->request->get('ctype_name'), $inCore->request->get('slug'));
  5. if ($current_item['user_id'] == $user_id){
  6. echo 'current_item = ' . $current_item['id'];
  7. }
#42 18 июля 2020 в 05:39

$user_id = cmsUser::getInstance()->id;
$inCore = cmsCore::getInstance();
$content_model = $inCore->getModel('content');
$current_item = $content_model->getContentItemBySLUG($inCore->request->get('ctype_name'), $inCore->request->get('slug'));
if ($current_item['user_id'] == $user_id){
echo 'current_item = '. $current_item['id'];
}

Ris
Спасибо! Работает!
Но...)… Если просматривает не автор записи, место под виджет остаётся… Есть вариант использовать шаблон контейнера "wrapper_plain", но тогда при отображении информации, дизайн теряется…
#43 18 июля 2020 в 09:15

  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'))
;

Ris
Всё уже давно придумано и гораздо проще github.com/instantsoft/icms2/blob/master/system/controllers/content/actions/item_view.php#L377
  1. $current_item = cmsModel::getCachedResult('current_ctype_item');
#44 21 января 2021 в 05:56
Здравствуйте!
Пробую установить виджет в версию 2.10.0, но выдается ошибка:
Ошибка в запросе БД:
Table 'u0402614_nordveg.cms_widgets' doesn't exist

INSERT INTO `cms_widgets` (`controller`, `name`, `title`, `author`, `url`, `version`) VALUES
(NULL, 'php', 'PHP code', 'IngDesign', 'http://ingdesign.ru', '1.0');
Последние вызовы:

cmsDatabase->importDump() @ /system/controllers/admin/actions/install_finish.php: 345
actionAdminInstallFinish->importPackageDump() @ /system/controllers/admin/actions/install_finish.php: 26
actionAdminInstallFinish->run()
call_user_func_array() @ /system/core/controller.php: 514
cmsController->runExternalAction() @ /system/core/controller.php: 425
cmsController->runAction()
call_user_func_array() @ /system/core/action.php: 29
cmsAction->__call() @ /system/controllers/admin/actions/install.php: 12
actionAdminInstall->runAction() @ /system/controllers/admin/actions/install.php: 12
actionAdminInstall->run()
call_user_func_array() @ /system/core/controller.php: 514

Нужно подключить Sape. Не получается. Может кто поможет?
Подключал вставкой html блока с кодом sape для главной и других страниц. Но при добавлении сайта на sape выдается, что код не установлен. По F12 на главной странице, по поиску "sape" не находится. Находится на других страницах. Так же пробовал добавить код sape в шаблон main.tpl.php. Но тоже не помогло. И по f12 search не находится слово sape.
#45 21 января 2021 в 10:57
max_nordvegan, предположу, что в пакете установки префикс таблиц прописан прямо cms_ а не cms_
У вас этот префикс не cms, а другой. И установка не проходит, не находя таблицу

Используйте для вывода сапы виджет instantcms.ru/addons/php.html
Судя по коду, установиться должно нормально. И работать тоже.
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.