Новости Joomla

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

SalityGEN

  • Захожу иногда
  • 209
  • 7 / 1
  • Делаю мир лучше
Господа, нигде не могу найти мануал по привязке статей ассоциациями языков.

Написал парсер статей, статейки берутся с одного ресурса, далее в автоматическом режиме происходит перевод с русского на английский
далее статьи скриптом сохраняются в Joomla (com_content) статьям назначается язык, все как положено, а вот как сделать ассоциации между ними не знаю, приходится в ручную связывать статьи между собой а контента много!

При сохранении статьи в отладчике нашел поля
jform[associations][ru-RU] = 1
jform[associations][en-GB] = 2
где 1 это id английской версии а 2 id русской

Я как бы понимаю что можно собрать пулемет на cURL но этож не норм совсем.. есть ли нормальный метод? джумловский!
*

sivers

  • Живу я здесь
  • 2465
  • 336 / 0
Есть таблица #__associations, посмотрите, что Joomla туда пишет при ручной ассоциации.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

SalityGEN

  • Захожу иногда
  • 209
  • 7 / 1
  • Делаю мир лучше
Есть таблица #__associations, посмотрите, что Joomla туда пишет при ручной ассоциации.
там какой то хеш, похож на md5 возможно "соленый"
хеш одинаковый для связанных ID статей
*

sivers

  • Живу я здесь
  • 2465
  • 336 / 0
Проверьте - оно ли это. Например, прибейте ассоциацию из этой таблице и посмотрите отвалится ли языковая ассоциация на сатйе (сперва бекап, конечно).
Если оно, то надо смотреть сюда:
Код
/components/com_content/helpers/association.php
здесь метод получения ассоциаций, которые используется в материалах. Можно его же использовать в парсере-переводчике.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

SalityGEN

  • Захожу иногда
  • 209
  • 7 / 1
  • Делаю мир лучше
Проверьте - оно ли это. Например, прибейте ассоциацию из этой таблице и посмотрите отвалится ли языковая ассоциация на сатйе (сперва бекап, конечно).
прибил\вернул, на ассоциацию никак не повлияло...

копаю файлик /components/com_content/helpers/association.php
*

SalityGEN

  • Захожу иногда
  • 209
  • 7 / 1
  • Делаю мир лучше
прибил\вернул, на ассоциацию никак не повлияло...

а нет, ошибся, нужно было удалить строки из бд связанных id полностью
и еще возврат строк не возвращает связку!
*

sivers

  • Живу я здесь
  • 2465
  • 336 / 0
Специально сделал свой сайт многоязычным, чтоб проверить. Сделал 2 связанных материала (рус/енг). В таблице ассоциаций появились 2 записи. Поля id совпадают с id материалов. Поле context указывает на тип объектов и равно com_content.item, а поле key - это вычисленный для данной ассоциации ключ (md5, как вы верно заметили - там это прям в поле БД указано). Для обеих строк этот ключ совпадает. Если изменить его в одной из строк - связь разваливается. Если сделать одинаковым (не обязательно даже таким, какой изначально сгенерился - можно любой видимо) связь восстанавливается.

Не понятно тогда, почему у вас не восстановились связи при восстановлении строк таблицы. Надо еще тестить.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

SalityGEN

  • Захожу иногда
  • 209
  • 7 / 1
  • Делаю мир лучше
Не понятно тогда, почему у вас не восстановились связи при восстановлении строк таблицы. Надо еще тестить.
Может сессия или кеш, но сомнительно, я вот так и не понял почему md5.
самое адекватное что приходит в голову - просто случайная строка приведенная к md5. ну типо красиво и уникально!
мб. получится тупо запросами в бд связывать ну хоть так уж..
завтра попробую sql запросом создать связь и сбросить кеш и пр. бывает кеш мозг выносит))
« Последнее редактирование: 02.03.2019, 00:09:34 от SalityGEN »
*

sivers

  • Живу я здесь
  • 2465
  • 336 / 0
самое адекватное что приходит в голову - просто случайная строка приведенная к md5. ну типо красиво и уникально!
Тоже так думаю. Скорее всего будет работать с любым кодом, который сгенерите. В исходниках Joomla он генерится вот так:
Код
$queryKey = md5(serialize(array_merge(array($extension, $tablename, $context, $id), $advClause)));
Взято отсюда:
/libraries/src/Language/Associations.php (строка 47)
($advClause по умолчанию = array(), т.е. пустой массив)
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

SalityGEN

  • Захожу иногда
  • 209
  • 7 / 1
  • Делаю мир лучше
Тоже так думаю. Скорее всего будет работать с любым кодом, который сгенерите. В исходниках Joomla он генерится вот так:
Код
$queryKey = md5(serialize(array_merge(array($extension, $tablename, $context, $id), $advClause)));
Взято отсюда:
/libraries/src/Language/Associations.php (строка 47)
($advClause по умолчанию = array(), т.е. пустой массив)
Спасибо за помощь в раскопках, дописал ассоциации работает! плюсую в карму
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Простенький калькулятор одной функции на JS (не Joomla)

Автор Dorfman

Ответов: 10
Просмотров: 533
Последний ответ 23.11.2020, 13:39:14
от sivers
Как получить объект с полной информацией о материале через API Joomla? [РЕШЕНО]

Автор dm-krv

Ответов: 4
Просмотров: 916
Последний ответ 03.08.2019, 16:30:51
от dm-krv
Устройство конструкций php кода в Joomla и документация

Автор RTEagle

Ответов: 4
Просмотров: 948
Последний ответ 08.05.2018, 13:09:32
от RTEagle
Перенести сайт с Magento на Joomla как можно быстрее?

Автор MasterFloma

Ответов: 6
Просмотров: 900
Последний ответ 28.04.2018, 06:30:30
от Taatshi
Реально на Joomla?

Автор natalileto

Ответов: 8
Просмотров: 893
Последний ответ 01.02.2018, 13:41:08
от cadko