Потому, что не объявлена в том виджете переменная $item. Получите её в виджете заново и оперируйте ею, как хотите.
Нужен виджет вывода php кода
Так посмотрите, как она попадает в default_item.tpl.php.А как её объявить?
Примерно таким же образом её придется добывать в виджете.
Вы точно не хотите решить эту проблему более простым способом, чем виджет php?
/blogs/dopolnenija-ot-instantcms2-ru/dbl-tn.html
/blogs/dopolnenija-ot-instantcms2-ru/pole-html-tekst-s-obrabotkoi-polei.html
Интересный вариант, но с помощью данного виджета, у меня получилось вывести только столбец title из таблицы. Когда вставляю {id}, id не отображается./blogs/dopolnenija-ot-instantcms2-ru/dbl-tn.html
Думаю, виждет, оптимальный вариант.Вы точно не хотите решить эту проблему более простым способом, чем виджет php ?
Dj многих компонентах есть виджеты. И виджет php не получает данных ни из одного компонента.Думаю, виждет, оптимальный вариант.
Хотя можно попробовать получать единицу контента как-то так прямо в этом виджете.
$this->model_content->getContenItem(тип_контента, номер единицы контента):
С помощью виджета, пытаюсь делать манипуляции со страницей контента, к примеру вывести ID текущей страницы,
<?php html($item['id']); ?>
но не получается.
У меня так получилось:
$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'];
Я как понимаю здесь получение конкретной записи, а мне нужно что-то формировалось динамически.Хотя можно попробовать получать единицу контента как-то так прямо в этом виджете.
$this->model_content->getContenItem(тип_контента, номер единицы контента):
как вариант уже подумал добавить поле id в таблицу cms_con_articles_fields, там через приватность всё скрыть, но главное чтобы виджет заработал. Ан нет. Ещё задача что-бы данный виджет видел только автор записи) А такого функционала здесь нет, а php он не поддерживает.../blogs/dopolnenija-ot-instantcms2-ru/dbl-tn.html
Тогда приходим к этому решению /forum/thread33504-1.html, а здесь снова $item, который не объявлен…
Супер! Работает, спасибо!$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'];
Теперь бы ещё как сделать, чтобы запись мог видеть только автор?
Теперь бы ещё как сделать, чтобы запись мог видеть только автор?
$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']; }
Не сработало, ничего не выводит автору. Наверное $this->cms_user->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['id'] == $this->cms_user->id){
echo 'current_item = '. $current_item['id'];
}
Тогда так:Наверное $this->cms_user->id не работает.
$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']; }
Спасибо! Работает!$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'];
}
Но...)… Если просматривает не автор записи, место под виджет остаётся… Есть вариант использовать шаблон контейнера "wrapper_plain", но тогда при отображении информации, дизайн теряется…
Всё уже давно придумано и гораздо проще github.com/instantsoft/icms2/blob/master/system/controllers/content/actions/item_view.php#L377;
$inCore = cmsCore::getInstance(); $content_model = $inCore->getModel('content'); $current_item = $content_model->getContentItemBySLUG($inCore->request->get('ctype_name'), $inCore->request->get('slug'))
$current_item = cmsModel::getCachedResult('current_ctype_item');
Пробую установить виджет в версию 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.
У вас этот префикс не cms, а другой. И установка не проходит, не находя таблицу
Используйте для вывода сапы виджет instantcms.ru/addons/php.html
Судя по коду, установиться должно нормально. И работать тоже.