Как определить переменную page_url массиве ленты RSS?

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО InstantCMS 2.X
#1 31 января 2019 в 23:32
Здравствуйте, имею свой компонент согласно документации создал файл rss_feed_list.php
Лента RSS выводит title, description, date_pub нормально.
Но не могу победить ошибку вывода ссылки на элемент:
  1. <link><br /><b>Notice</b>: Undefined index: page_url in <b>.../templates/default/controllers/rss/feed.tpl.php</b> on line <b>42</b><br /></link>
  2. <guid><br /><b>Notice</b>: Undefined index: page_url in <b>.../templates/default/controllers/rss/feed.tpl.php</b> on line <b>43</b></guid>
Немного не понимаю как и где определить переменную page_url
Заранее благодарю.
#3 1 февраля 2019 в 12:13


Для примера github.com/instantsoft/icms2/blob/master/system/controllers/content/hooks/rss_feed_list.php#L35

Loadырь

В моем случае я сделал так:
  1. $feed['items'] = $this->model->getMycomponentItems($feed['ctype_name'], function ($item, $model, $ctype_name){
  2.  
  3. $item['page_url'] = href_to_abs($ctype_name, 'item', $id);
  4.  
  5. return $item;
  6.  
  7. });
Пробовал и так
  1. $item['page_url'] = href_to_abs($ctype_name, $item['id']);
Но увы, получаю предупреждение, может в других файлах что-то нужно указать?
#4 2 февраля 2019 в 00:32
Так и не удалось решить самостоятельно.
Без помощи не обойтись. Что-то упускаю.
#5 2 февраля 2019 в 08:13
Попробуйте для начала передать статику
  1. $item['page_url'] = '123456';
Потом можно попробовать переместить ваш хук выше системного, в "Админка — Компоненты — Управление событиями". Надеюсь ваш хук присутствует в этом списке.
#6 2 февраля 2019 в 09:23


Попробуйте для начала передать статику

  1. $item['page_url'] = '123456';
Потом можно попробовать переместить ваш хук выше системного, в "Админка — Компоненты — Управление событиями". Надеюсь ваш хук присутствует в этом списке.

Loadырь

Спасибо, за совет.
Событие указал в манифесте и обновил список событий.
на
  1. $item['page_url'] = '123456';
— предупреждение осталось
#7 2 февраля 2019 в 09:24
Вот все содержание файла.
  1. <?php
  2.  
  3. class onMycomponentRssFeedList extends cmsAction {
  4.  
  5. public function run($feed){
  6.  
  7.  
  8. $category = $author = array();
  9.  
  10.  
  11. $this->model->orderBy('date_pub', 'desc')->
  12. limit($feed['limit']);
  13.  
  14.  
  15.  
  16.  
  17. $feed['items'] = $this->model->getMcItems($feed['ctype_name'], function ($item, $model, $ctype_name){
  18.  
  19. $item['page_url'] = href_to_abs($ctype_name, $item['slug'].'.html');
  20. /*$item['comments_url'] = $item['page_url'].'#comments';*/
  21.  
  22.  
  23. return $item;
  24.  
  25. });
  26.  
  27. $feed = cmsEventsManager::hook('before_render_'.$feed['ctype_name'].'_feed_list', $feed);
  28.  
  29. return array($feed, $category, $author);
  30.  
  31. }
  32.  
  33. }
  34.  
#8 2 февраля 2019 в 09:34
Сделайте так
  1. $feed['items'] = $this->model->getMcItems($feed['ctype_name'], function ($item){
  2.  
  3. $item['page_url'] = '123456';
  4.  
  5.  
  6. return $item;
  7.  
  8. });
  9. dump($feed);
  10.  
и посмотрите в массиве будет присутствовать page_url или нет.
#9 2 февраля 2019 в 09:49


Сделайте так

  1. $feed['items'] = $this->model->getMcItems($feed['ctype_name'], function ($item){
  2.  
  3. $item['page_url'] = '123456';
  4.  
  5.  
  6. return $item;
  7.  
  8. });
  9. dump($feed);
  10.  
и посмотрите в массиве будет присутствовать page_url или нет.

Loadырь

Отсутствует.
#10 2 февраля 2019 в 10:02
А $feed['items'] вообще не пустой? Скрин дампа можете показать? можно в личке.
#11 2 февраля 2019 в 10:10


А $feed['items'] вообще не пустой? Скрин дампа можете показать? можно в личке.

Loadырь

скинул в личку, не пустой. выводит поля. Но page_url нет
#12 2 февраля 2019 в 11:18
А ну так ваш $this->model->getMcItems() не поддерживает вызов функции. Вам надо в файле модели, там где вы получаете список через getMcItems(), там надо делать
  1. return $this->get($ctype_name, function ($item){
  2. $item['page_url'] = '123456';
  3. return $item;
  4. });
#13 2 февраля 2019 в 21:34
Спасибо
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.