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

Vas80

  • Захожу иногда
  • 238
  • 0 / 1
Делаю через поле Sql выборку статей
Получаю в админке название статьи

А чтобы прикреплять статью вот так


В коде вывожу название статьи через всем известный код
<?php
// Вывод дополнительных полей
$additionalFields = array(); //Создаем пустой массив, имя переменной выставляем по своему усмотрению
foreach($this->item->jcfields as $field) {/*Пробегаемся циклом по всем полям текущего материала*/
$additionalFields[$field->name] = $field->value; /*И добавляем их значения в наш ранее созданный массив*/
}

$fieldsLink = array(); //Создаем пустой массив, имя переменной выставляем по своему усмотрению
foreach($this->item->jcfields as $field) {/*Пробегаемся циклом по всем полям текущего материала*/
$fieldsLink[$field->name] = $field->rawvalue; /*И добавляем их значения в наш ранее созданный массив*/
}
?>

Все работает. Но как получить ссылку на выбранную статью. Если в массиве присутствует только поле alias.
Идея в том, чтобы не вводить url вручную, как здесь.
« Последнее редактирование: 21.10.2020, 12:51:24 от Vas80 »
*

NewUsers

  • Живу я здесь
  • 2307
  • 214 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Но как получить ссылку на выбранную статью.
Код: php
JRoute::_(ContentHelperRoute::getArticleRoute(slug, catid, language));
slug - это id:alias
НО, тип поля SQL поддерживает только два параметра в select (text, value).
Как вариант возвращать id и title и переименовать из в имена value и text что корректно встали данные в выпадающий список. В вашем коде добавить один запрос в базу что бы получить alias и title материала который выбрали.... (Если у вас сайт мультиязычный, то и язык выводить тоже надо будет)
Занимаюсь создание расширений для Joomla 3.10.x и 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
Работа с DOM деревом на PHP
*

Vas80

  • Захожу иногда
  • 238
  • 0 / 1
А как сделать такой запрос, чтобы одновременно вытаскивать из базы alias и title
и потом связывать выбранные данные с значениями поля sql value и text?
*

NewUsers

  • Живу я здесь
  • 2307
  • 214 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
А как сделать такой запрос, чтобы одновременно вытаскивать из базы alias и title
Код: sql
SELECT alias, title FROM #__content WHERE id = 1;

и потом связывать выбранные данные с значениями поля sql value и text?
Вам нужно указать в поле Запрос сам запрос который будет выводить данные в выпадающий список
Код: sql
SELECT id as value, title as text FROM #__content
Занимаюсь создание расширений для Joomla 3.10.x и 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
Работа с DOM деревом на PHP
*

Vas80

  • Захожу иногда
  • 238
  • 0 / 1
Ну и в чем логика. В статье мне нужно получить url страницы, которая привязана к автору


А я получаю по id просто первую статью
<?php
      $db = JFactory::getDbo();
        $query = $db->getQuery(true);
        $query->select('alias, title');
        $query->from($db->quoteName('#__content'));
      $query->where($db->quoteName('id'). " = " . (int)1);
        $db->setQuery($query);
       
       $result = $db->loadObjectList();
      print_r($result);
?>
« Последнее редактирование: 21.10.2020, 12:50:53 от Vas80 »
*

NewUsers

  • Живу я здесь
  • 2307
  • 214 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
В статье мне нужно получить url страницы, которая привязана к автору
Прочитайте то что вы сами написали Как получить ссылку на статью это ни как не вяжется с тем что вы хотите получить ссылку на страницу автора, вы и так ее получаете...

У вас поле Ссылка на страницу автора тоже добавлено как доп. поле, и вы хотите получить значение этого поля в другом поле.
Что за гавно вы лепите!
Занимаюсь создание расширений для Joomla 3.10.x и 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
Работа с DOM деревом на PHP
*

Vas80

  • Захожу иногда
  • 238
  • 0 / 1
Еще раз....
Смотрите
Joomla раздел Пользователи. Поля.

1. Добавляю в поле sql запрос SELECT id as value, title as text FROM #__content


2. Выбираю пользователя и уже в профиле выбираю статью (страница пользователя, которая создана в материалах)


3. Необходимо получить ссылку прикрепленного материала.

Логика:
На страницах блога прикреплять Автора статьи и выводить ссылкой через дополнительное поле sql в профиле на страницу Автора, которая создана
в материалах

То есть не создавать страницу Автора в компоненте "Контакты", как это делается по умолчанию в Joomla.
На сайте создан раздел "Специалисты". Каждый специалист - это стандартный материал Joomla.
Создается Пользователь. В профиле пользователя прикрепляется материал (страница с таким же названием пользователя/автора)
И теперь надо как-то вытаскивать ссылку на выбранный материал в профиле.
« Последнее редактирование: 21.10.2020, 12:50:39 от Vas80 »
*

sivers

  • Живу я здесь
  • 2453
  • 333 / 0
А что мешает указать ИД автора в материале (поле `created_by`) и потом подтягивать материал по этому полю?
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

Vas80

  • Захожу иногда
  • 238
  • 0 / 1
дружище подскажи как это сделать на практике
*

sivers

  • Живу я здесь
  • 2453
  • 333 / 0
Ну как. Стандартно. При добавлении/редактировании материала указать автором одноименного юзера. Если через админку, то на закладке "Параметры публикации". Если через фронт, то надо смотреть как там сделано.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

Vas80

  • Захожу иногда
  • 238
  • 0 / 1
так и делаю. а как кодом ссылку получить из дополнительного поля sql? вот в чем вопрос?
надо чтобы читатель статьи попадал на страницу Автора через кликабельную ссылку
« Последнее редактирование: 21.10.2020, 12:50:18 от Vas80 »
*

sivers

  • Живу я здесь
  • 2453
  • 333 / 0
а как кодом ссылку получить
надо знать 2 вещи:
1. На какой странице (компонент/вид) вы хотите получить ссылку? На странице материала или на странице контакта?
2. На какую страницу нужна ссылка? На страницу материала, в котором описание автора? Или на страницу контакта?
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

Vas80

  • Захожу иногда
  • 238
  • 0 / 1
1. На какой странице (компонент/вид) вы хотите получить ссылку? На странице материала или на странице контакта?
Ответ: на странице материала (стандартный компонент материала)
com_content
article
default.php


2. На какую страницу нужна ссылка? На страницу материала, в котором описание автора? Или на страницу контакта?
Ответ: на страницу материала, в котором описание автора (страница которая прикреплена в профиле через поле sql)
« Последнее редактирование: 20.10.2020, 13:55:10 от Vas80 »
*

sivers

  • Живу я здесь
  • 2453
  • 333 / 0
Код
$cont = JFactory::getDbo()->setQuery("SELECT `id`, `alias`, `catid`, `language` FROM `#__content` WHERE `catid` = '{$catId}' AND `created_by` = '{$this->item->created_by}'")->loadObject();
$contLink = JRoute::_(ContentHelperRoute::getArticleRoute($cont->slug, $cont->catid, $cont->language));
где $catId - это ид категории, в которой хранятся описания авторов; $this->item - текущий материал
Здесь предполагается, что код будет вставлен в макет материала и что ИД автора просматриваемого и подтягиваемого материала совпадает. А так же - что все материалы с описанием авторов лежат в отдельной категории.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

Vas80

  • Захожу иногда
  • 238
  • 0 / 1
не. не выводиться ссылка статьи автора

$cont = JFactory::getDbo()->setQuery("SELECT `id`, `alias`, `catid`, `language` FROM `#__content` WHERE `catid` = '16' AND `created_by` = '{$this->item->created_by}'")->loadObject();
$contLink = JRoute::_(ContentHelperRoute::getArticleRoute($cont->slug, $cont->catid, $cont->language));
print_r($contLink);

====
`catid` = '16' подставил цифру категории
=====
вывело просто категорию там где специалисты
/index.php/speczialisty.html

сам специалист находится по url
/index.php/speczialisty/askerova-vusala.html
« Последнее редактирование: 21.10.2020, 12:50:05 от Vas80 »
*

Vas80

  • Захожу иногда
  • 238
  • 0 / 1
Код
$cont = JFactory::getDbo()->setQuery("SELECT `id`, `alias`, `catid`, `language` FROM `#__content` WHERE `catid` = '{$catId}' AND `created_by` = '{$this->item->created_by}'")->loadObject();
$contLink = JRoute::_(ContentHelperRoute::getArticleRoute($cont->slug, $cont->catid, $cont->language));
где $catId - это ид категории, в которой хранятся описания авторов; $this->item - текущий материал
Здесь предполагается, что код будет вставлен в макет материала и что ИД автора просматриваемого и подтягиваемого материала совпадает. А так же - что все материалы с описанием авторов лежат в отдельной категории.
Сообщение выше написал.
*

Vas80

  • Захожу иногда
  • 238
  • 0 / 1
Там скорее всего надо как-то достучаться в запросе к произвольному полю sql что в профиле пользователя
и оттуда вытаскивать ссылку
*

sivers

  • Живу я здесь
  • 2453
  • 333 / 0
Проверяйте что у вас получается на каждом шагу (строке):
Код
$cont = JFactory::getDbo()->setQuery($query = "SELECT `id`, `alias`, `catid`, `language` FROM `#__content` WHERE `catid` = '{$catId}' AND `created_by` = '{$this->item->created_by}'")->loadObject();
print_r($query);
print_r($cont);
Должна вывестись строка запроса и результат запроса - напишите их сюда.

Добавьте еще:
Код
print_r($this->item);
А ссылка на материал в профиле юзера, имхо, лишнее. И запроса 2 требует.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

Vas80

  • Захожу иногда
  • 238
  • 0 / 1
print_r($query);
Выводит SELECT `id`, `alias`, `catid`, `language` FROM `#__content` WHERE `catid` = '' AND `created_by` = '688'


print_r($cont);
Выводит ничего

print_r($this->item);
Выводит всю информацию о текущей статье. Там тоже нет ссылки на другую статью автора из другой категории.
*

sivers

  • Живу я здесь
  • 2453
  • 333 / 0
print_r($query);
Выводит SELECT `id`, `alias`, `catid`, `language` FROM `#__content` WHERE `catid` = '' AND `created_by` = '688'
1. Если в категории с ИД = 16 у вас лежат материалы с инфой об авторах, то перед запросом к БД добавьте строку $catId = 16;:
Код
$catId = 16;
$cont = JFactory::getDbo()->setQuery($query = "SELECT `id`, `alias`, `catid`, `language` FROM `#__content` WHERE `catid` = '{$catId}' AND `created_by` = '{$this->item->created_by}'")->loadObject();
print_r($query);
print_r($cont);
2. Если все равно ничего не выведет, то откройте в админке материал с инфой об авторе и на закладке "Параметры публикации" проверьте, чтоб автором был указан правильный автор (у которого ИД = 688).
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

Vas80

  • Захожу иногда
  • 238
  • 0 / 1
Да. Есть. Появился нужный alias автора

SELECT `id`, `alias`, `catid`, `language` FROM `#__content` WHERE `catid` = '16' AND `created_by` = '688'stdClass Object
(
    [id] => 117
    [alias] => askerova-vusala
    [catid] => 16
    [language] => *
)

А как теперь получить полноценную ссылку на автора
$contLink = JRoute::_(ContentHelperRoute::getArticleRoute($cont->slug, $cont->catid, $cont->language));
print_r($contLink);
Такой код выводит на категорию там где размещен автор
*

sivers

  • Живу я здесь
  • 2453
  • 333 / 0
пардон, проглядел, там ссылку немного не так получать надо. попробуйте это:
Код
$contLink = JRoute::_(ContentHelperRoute::getArticleRoute($cont->id.':'.$cont->alias, $cont->catid, $cont->language));
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

Vas80

  • Захожу иногда
  • 238
  • 0 / 1
Ай маладец. То что надо! Получил ссылку автора и действительно.
Гениально!
*

gartes

  • Завсегдатай
  • 1859
  • 142 / 6
  • Е = mс²
Простите меня что вклинился в вопрос ! - собственно решение - ВЫ нашли !
Автор: Vas80 : А можно узнать для чего вам эта ссылка ?
С Уважением !
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Убрать из модуля новостей ссылку на статью, на которой выводится модуль

Автор zeus07

Ответов: 3
Просмотров: 708
Последний ответ 08.11.2023, 21:17:26
от GrayAn
Получить ошибку

Автор KevinSimon

Ответов: 0
Просмотров: 232
Последний ответ 22.09.2023, 15:20:21
от KevinSimon
Получить текущий номер страницы плагина "Разрыв страницы" (pagebreak)

Автор sertlan

Ответов: 1
Просмотров: 439
Последний ответ 12.06.2023, 18:14:09
от sertlan
Cайт через браузер недоступен

Автор rezchik

Ответов: 0
Просмотров: 314
Последний ответ 01.04.2023, 10:49:08
от rezchik
Как назначить пункту меню ссылку на категории К2?

Автор kochevnik

Ответов: 1
Просмотров: 300
Последний ответ 12.03.2023, 16:26:44
от kochevnik