0 Пользователей и 1 Гость просматривают эту тему.
  • 21 Ответов
  • 1190 Просмотров
*

tora312

  • Захожу иногда
  • 110
  • 2 / 2
Здравствуйте.

У меня Joomla 3.

Мне понадобилось получить порядковый номер статьи так, как он указан в менеджере. Получить в файле blog_item.php.

Не знаю, как это сделать... Печёнкой чую, просто...

Например:

echo $this->item->id; - идентификатор статьи. А как узнать order? echo $this->item->order; - ниработает!(((

Максимум приблизился:

$this->state->def('list.ordering'); - указывает порядок сортировки... но мне нужен сам ордер статьи... чтобы выловить ту, у которой он -1...

Спасибо заранее.
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
потому что нет поля `order` в таблице #__content, есть поле `ordering`!
*

tora312

  • Захожу иногда
  • 110
  • 2 / 2
потому что нет поля `order` в таблице #__content, есть поле `ordering`!

echo $this->item->ordering; тоже не работает. Не подскажите, как правильно написать?
*

tora312

  • Захожу иногда
  • 110
  • 2 / 2
Или как-то иначе идентифицировать статью с порядком -1.
*

NewUsers

  • Живу я здесь
  • 2307
  • 214 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
echo $this->item->ordering; тоже не работает. Не подскажите, как правильно написать?

Для начала сделай вот так
Код: php
<?php print_r($this->item); ?>
и посмотри какие данные выводятся....
Занимаюсь создание расширений для Joomla 3.10.x и 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
Работа с DOM деревом на PHP
*

tora312

  • Захожу иногда
  • 110
  • 2 / 2
Для начала сделай вот так
Код: php
<?php print_r($this->item); ?>
и посмотри какие данные выводятся....


Данные на пол страницы вывел. Среди них не увидел ордера со значением -1 для соответствующей страницы, у которой он -1... ахтунг, получается не получить так ордер? Где-то он же есть... нужен один только вот ордер и будет счастье!

Близкое... но, видеть, не то... кусок того "много", где есть "order" хоть в каком-то виде:

 [show_subcat_desc_cat] => 1 [show_cat_num_articles_cat] => 1 [num_leading_articles] => 1 [num_intro_articles] => 9 [num_columns] => 1 [num_links] => 0 [multi_column_] => 1 [show_subcategory_content] => -1 [show_pagination_limit] => 1 [filter_field] => hide [show_headings] => 1 [list_show_date] => 0 [date_format] => [list_show_hits] => 1 [list_show_author] => 1 [orderby_pri] => none [orderby_sec] => order [order_date] => published [show_pagination] => 2 [show_pagination_results] => 0 [show_featured] => show [show_feed_link] => 1 [feed_summary] => 0
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
В $this->item у вас судя по всему категория а не статья. Не ту переменную и не там где надо используете.
интернет-блог: http://websiteprog.ru
*

tora312

  • Захожу иногда
  • 110
  • 2 / 2
В $this->item у вас судя по всему категория а не статья. Не ту переменную и не там где надо используете.

Неа. Статья там. echo $this->item->id; даёт идентификатор статьи, а не категории. Там вместе данные и по блогу категорий... Но в блоге категории blog_item.php, хотя может и другая переменная нужна. ...но к результату это меня не приближает.
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
echo $this->item->ordering; тоже не работает. Не подскажите, как правильно написать?
значит в запросе не получается это поле! Без хака ядра ничего не получится!
*

tora312

  • Захожу иногда
  • 110
  • 2 / 2
значит в запросе не получается это поле! Без хака ядра ничего не получится!
Да у меня и так хак ядра, правлю ж blog_item.php... собственно, там и нужен для условия. Мне нужна статья в блоге с ордером -1. Если есть, нужно по-особому вывести в блоге. Как вывести - знаю. Как выловить не знаю.(((

И blog.php уже перенаправил и изменил как надо. Вот на этой мелочи "ордер", ёлки, встал и всё тут.
« Последнее редактирование: 15.06.2016, 16:20:02 от tora312 »
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Да у меня и так хак ядра, правлю ж blog_item.php... собственно, там и нужен для условия. Мне нужна статья в блоге с ордером -1. Если есть, нужно по особому вывести. Как вывести - знаю. Как выловить не знаю.(((
blog_item.php как бы можно в шаблоне переопределить:
ПЕРЕОПРЕДЕЛЕНИЕ ШАБЛОНОВ ВЫВОДА КОМПОНЕНТОВ И МОДУЛЕЙ

что не будет хаком ядра! А так придется модель хакать, и при обнове Joomla снова хакать!
*

tora312

  • Захожу иногда
  • 110
  • 2 / 2
blog_item.php как бы можно в шаблоне переопределить:
ПЕРЕОПРЕДЕЛЕНИЕ ШАБЛОНОВ ВЫВОДА КОМПОНЕНТОВ И МОДУЛЕЙ

что не будет хаком ядра! А так придется модель хакать, и при обнове Joomla снова хакать!

А... плохо. Я думал это одно значение получить можно. Вся задумка на том строилась. Вот же... пойду, напьюсь с горя. Хз что делать.
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Ну можно просто отдельный запрос написать к базе. Зачем хакать то. Это конечно нехорошо, запрос в шаблоне, но что еще делать то? Там в модели на фронте действительно это поле не выбирается. Можно воспользоваться еще моделью из административной части
интернет-блог: http://websiteprog.ru
*

tora312

  • Захожу иногда
  • 110
  • 2 / 2
Ну можно просто отдельный запрос написать к базе. Зачем хакать то. Это конечно нехорошо, запрос в шаблоне, но что еще делать то? Там в модели на фронте действительно это поле не выбирается. Можно воспользоваться еще моделью из административной части

А как?) Желательно без запроса к БД.)
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Ну самое простое

Код: php
$ordering = JFactory::getDBO()->setQuery('SELECT ordering FROM #__content WHERE id = ' . $this->item->id)->loadResult();

Цитировать
Желательно без запроса к БД.)

Там в любом случае будет запрос. Можно просто вызвать модель из административной части. Но в данном случае этоо только хуже в плане производительности. И так лишний запрос. А там еще куча лишних данных и методов фреймворка.
« Последнее редактирование: 15.06.2016, 16:53:45 от zomby6888 »
интернет-блог: http://websiteprog.ru
*

tora312

  • Захожу иногда
  • 110
  • 2 / 2
Ну самое простое

Код: php
$ordering = JFactory::getDBO()->setQuery('SELECT ordering FROM #__content WHERE id = ' . $this->item->id);

как то так

Понятно.) Спс.
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Хотя это тоже плохо для каждого айтема отдельный запрос. Лучше сделать один запрос и получить сортировку для всех айтемов сразу. Зависит от того сколько у вас там статей в блоге.
интернет-блог: http://websiteprog.ru
*

tora312

  • Захожу иногда
  • 110
  • 2 / 2
Хотя это тоже плохо для каждого айтема отдельный запрос. Лучше сделать один запрос и получить сортировку для всех айтемов сразу.

Ох... а как сие реализовать? Статей сколько будет - не знаю сам.)
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Вы смотрите по производительности. Если у вас там 2-3 статьи в блоге то можно и отдельным запросом
интернет-блог: http://websiteprog.ru
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
В случае если статей много делаете запрос:
$items = JFactory::getDBO()->setQuery('SELECT ordering,id FROM #__content')->loadObjectList();

Дальше наверное придется пройти циклом по $items чтобы сформировать массив ключами которого будут идешники статей. Ну и выводить сортировку из этого массива.
интернет-блог: http://websiteprog.ru
*

tora312

  • Захожу иногда
  • 110
  • 2 / 2
В случае если статей много делаете запрос:
$items = JFactory::getDBO()->setQuery('SELECT ordering,id FROM #__content')->loadObjectList();

Дальше наверное придется пройти циклом по $items чтобы сформировать массив ключами которого будут идешники статей. Ну и выводить сортировку из этого массива.

Интересный вариант, но кажется, сложный и навороченный, что ли. Где-то же сидят эти ордеры, ведь в блоге они упорядоченно выходят, а не как попало... как-то блог понимает, что с ордером -1 надо сверху ставить всегда...

А какие ещё массивы уже есть и можно получить в blog_item.php кроме $items и state ?
« Последнее редактирование: 16.06.2016, 08:44:27 от tora312 »
*

tora312

  • Захожу иногда
  • 110
  • 2 / 2
Короче, сделал. С помощью такой-то матери, ну как обычно это.

Кому интересно или нужно, вот на мой взгляд НАИБОЛЕЕ ОПТИМАЛЬНЫЙ вариант решения задачи. Задача: найти ID материала с порядком -1 (ordering=-1) в конкретном блоге категорий.

Перенаправляю в шаблон файлы blog.php и blog_item.php.

Добавляю в blog.php сразу после

Код
defined('_JEXEC') or die;

JHtml::addIncludePath(JPATH_COMPONENT . '/helpers');

JHtml::_('behavior.caption');

минимизированный запрос к БД... оптимальнее запроса придумать не могу:

Код
$id_order = array();
$id_order = JFactory::getDBO()->setQuery('SELECT `id` FROM #__content WHERE `catid`=\''.$this->category->id.
'\' AND `ordering`=\'-1\' LIMIT 1')->loadObjectList();

Далее в том же файле blog_item.php нахожу массив, перебирающий $this->intro_items as $key => &$item и перед обращением к blog.php правлю так (одна строчка добавляется $item->id_order = $id_order[0]->id;):

Код
					itemprop="blogPost" itemscope itemtype="https://schema.org/BlogPosting">
<?php
$item->id_order = $id_order[0]->id;
$this->item = & $item;
echo $this->loadTemplate('item');
?>

А потом уже в blog.php вызываю $this->item->id_order

Всо. Дальше делаю с нужной статьёй через условия что хочу. Если кто-то из гуру найдёт более оптимальное решение... хотя вряд ли даже искать будет. Всё равно я крут.) 2 дня думал, чтобы за 20 минут сделать.)))) Отдельное спасибо zomby6888. Всем удачи!
« Последнее редактирование: 16.06.2016, 12:37:34 от tora312 »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Модуль Похожие метки – только более ранние статьи!

Автор Gerostrat

Ответов: 6
Просмотров: 435
Последний ответ 24.08.2023, 21:56:09
от sivers
Некорректно отображается номер и почта

Автор web_signal

Ответов: 4
Просмотров: 309
Последний ответ 16.08.2023, 11:48:06
от web_signal
Получить текущий номер страницы плагина "Разрыв страницы" (pagebreak)

Автор sertlan

Ответов: 1
Просмотров: 439
Последний ответ 12.06.2023, 18:14:09
от sertlan
Через какой функционал правильнее размещать статьи на сайте

Автор Геон

Ответов: 3
Просмотров: 497
Последний ответ 14.11.2021, 02:59:55
от Геон
Настройка отображения статьи

Автор Nikias

Ответов: 5
Просмотров: 443
Последний ответ 27.06.2021, 06:33:45
от draff