Russian TYPO3 community

Russian TYPO3 community (http://forum.typo3.ru/index.php)
-   Общие вопросы (http://forum.typo3.ru/forumdisplay.php?f=12)
-   -   запись данных прямо в tt_content (http://forum.typo3.ru/showthread.php?t=9696)

Anlov 15.09.2011 14:37

запись данных прямо в tt_content
 
пытаюсь сделать импорт писем из почтового ящика. есть куча папок, в каждой из которых некоторое количество сообщений.
все нашел, все прочитал, по переменным распихал. Ручками сделал в ВЕ страницы для каждой папки из почтового ящика. теперь пытаюсь записать каждое сообщение прямо в tt_content с соответствуюшим pid. Запись в tt_content появляется. А на странице в соответствующем пункте меню FE - без изменений. Что я не сделал или делаю не так?

dmartynenko 16.09.2011 14:58

У каждой записи tt_content есть еще тип (текст, текст + изображение и т.п.), поля видимости (скрыта, удалена - по умолчанию 0), поля видимости по дате-времени (от-доб по умолчанию 0), номер столбца в которой выводить.

Если вы создадите вручную через BE запись и она появится в FE (то есть в FE у вас все настроено и работает корректно), и потом по "образцу" будете создавать записи роботом указывая аналогичные значения в полях, только меня содержание и дату добавления (crdate, tstamp), то все должно получиться.

Anlov 16.09.2011 15:27

да так и делаю - и ничего.
даже, если я в БД тупо копирую какую-то уже имеющуюся запись и изменяю там uid и sorting, то этот элемент ни BE, ни в FE не появляется. Попробуйте сами, может я где-то что-то упускаю?
Мысль, что содержимое любого элемента страницы сохраняется и содержится только в tt_content получается правильная?

dmartynenko 16.09.2011 16:15

А если вы у существующей записи поменяете uid и sorting она исчезнет из BE ?

Есть еще системная таблица sys_refindex, в которой сохраняются взаимосвязи записей. Но не думаю что она так сильно влияет на вывод в BE или FE. По крайней мере запиcи из других таблиц (созданные экстами) выводятся без учета этой таблицы.

elezeo 18.09.2011 22:02

А Вы попробуйте сделать Импорт средствами (функциями) самого TYPO3
$res = $GLOBALS['TYPO3_DB']->sql_query($query);
Только разбейте запросы на одиночные.
Эффект будет тот же?

dmartynenko 19.09.2011 12:27

$GLOBALS['TYPO3_DB']->sql_query это то же самое что вызвать mysql_query().

elezeo 19.09.2011 16:30

Ну в целом да.
Тогда делайте дебаг вывода контента и смотрите в чем разница между выборками.
Проверьте также вот эти параметрв
colPos=0 AND sys_language_uid=0
Вообще предполагаю дело не в контенте а в привязке их к странице.
Экспортируете гнмелько строк из вашей таблицы, сравните их визуально с теми, что Вы вставляете.
И если сами не можете понять - выложите на обозрение структуру Вашей таблицы tt_content и несколько строк из нее, в том числе ваши, чтобы эксперты уже могли с чем то работать, а не просто со словами.

Anlov 20.09.2011 16:56

Цитата:

Сообщение от dmartynenko (Сообщение 31984)
А если вы у существующей записи поменяете uid и sorting она исчезнет из BE ?

Есть еще системная таблица sys_refindex, в которой сохраняются взаимосвязи записей. Но не думаю что она так сильно влияет на вывод в BE или FE. По крайней мере запиcи из других таблиц (созданные экстами) выводятся без учета этой таблицы.

Точно. Меняю UID с 240 на 241 - исчезает. В таблице sys_refindex указана зависимость между страницей и контентом в таком виде:
имя таблицы - pages; recuid - 217 (судя по всему, id страницы); ref_table - tt_content (ссылающаяся таблица?); ref_uid - 240 (ссылающийся элемент?)
Так вот, когда добавляю запись прямо в tt_content и даю номер uid 240 - блок стразу появляеися и ВЕ, и в FE. Теперь пытаюсь добавить копию записи с uid 240 в sys_refindex, но только uid даю 241 (запись с таким uid уже есть в tt_content) - блок нигде не появляется. Там (sys_refindex) есть еще такое поле hach, что интересно там лежит?

dmartynenko 20.09.2011 17:13

Закралось подозрение, что у вас включена какая-нибудь версионность, либо многоязычие.

Так как sys_refindex маловероятно что используется при выводе в FE.

elezeo 20.09.2011 17:53

В классе "t3lib\class.t3lib_tcemain.php" есть такая функция
Код:

        /**
        * Update Reference Index (sys_refindex) for a record
        * Should be called any almost any update to a record which could affect references inside the record.
        *
        * @param        string                Table name
        * @param        integer                Record UID
        * @return        void
        */
        function updateRefIndex($table, $id) {
                $refIndexObj = t3lib_div::makeInstance('t3lib_refindex');
                /* @var $refIndexObj t3lib_refindex */
                $result = $refIndexObj->updateRefIndexTable($table, $id);
        }

Попробуйте вызвать ее для своей записи.
Я не уверен, но кажется она как раз и создаст вам нужные записи в таблице sys_refindex. Вы можете покапаться в этом классе. Возможно найдете что-то еще.

А вот для FE действительно маловероятно использование иных таблиц, если только контент не связан с какими либо еще таблицами.


Часовой пояс GMT +4, время: 01:02.

Работает на vBulletin® версия 3.8.1.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot