Просмотр полной версии : Вывод данных средствами typoscript-а из собственной таблици
Создал в базе простую таблицу теперь хочу вывести с не данные на страницу средствами typoscript-а.
Написал:
10 = CONTENT
10 {
table = mytable
select {
pidInList = 1
}
renderObj = TEXT
renderObj {
required = 1
field = title
wrap = |
}
}..., а на странице пусто.
Неужели доступны только таблицы с расширением ... "pages", "tt_", "tx_", "ttx_", "fe_", "user_" или "static_". ПО суты ничего сложного, но с моей таблицы данные не выводятся, почему, что делаю не так?
Dmitry Dulepov
09.03.2012, 16:19
Потому что имя таблицы должно начинаться с tx_.
Андрей Аксенов
10.03.2012, 12:33
документ doc_core_api (http://typo3.org/documentation/document-library/core-documentation/doc_core_api/4.3.2/view/2/1/#id2313990) раздел "Naming conventions". Где-то в форуме давал ссылку на русский перевод документа.
dmartynenko
10.03.2012, 14:16
Таблица объявлена в TCA ?
Потому что имя таблицы должно начинаться с tx_.
документ doc_core_api (http://typo3.org/documentation/document-library/core-documentation/doc_core_api/4.3.2/view/2/1/#id2313990) раздел "Naming conventions". Где-то в форуме давал ссылку на русский перевод документа.
Спасибо. С этим все понятно. Придется учитывать это.
А вот с этим не ясно ...
Таблица объявлена в TCA ?
..., а что это меняет если прописано в TCA или нет?
Андрей Аксенов
11.03.2012, 09:39
А вот с этим не ясно ...
..., а что это меняет если прописано в TCA или нет?
Документ здесь: http://typo3.org/documentation/document-library/core-documentation/doc_core_tca/4.6.0/view/1/2/
Если таблица не объявлена в TCA - Table Configuration Array, то она не видна для typo3... со всеми вытекающими.
semender
22.10.2012, 16:21
А где и как её объявить?
Андрей Аксенов
22.10.2012, 17:01
А где и как её объявить?
А почитать?
Как понял - это сделано специально в целях безопасности...
Что бы пользователи BE- и вообще пользователи не могли на прямую обращаться к особо важным таблицам typo3, а следовательно сломать систему - к примеру вставить typoscript на страницу и загрузить сценарий...
Данную проблему можно пережить... Мне всегда была интересна другая сторона медали:
вот пользуюсь typo3 - отправляет ли она какие-то данные (статистику, информацию или еще что нибудь на основной сервер typo3 или куда положено) - небольшой шпиончик-код - который ведет скрутую разведку о пользователях системы...:o
Так и аналитику можно было бы собирать на ура... Или в этом нет необходимости?
Ведь Microsoft - где-то этим пользуется...
Не зря же у нас хотят делать собственной операционную систему в СНГ
А как на счет typo3?
dmartynenko
22.10.2012, 20:36
Вы поклонник "теории заговора"? :)
Проверить то просто - исходники открыты (PHP все таки).
Что-то отправить из PHP можно ограниченным набором функций (file_get_contents, curl и т.п.) - поищите их все по исходникам и проверьте.
Кроме того, на сервере можно запретить все исходящие соединения на другие сервера (с исключениями для нужных IP). Некоторые shared хостинги так и делают.
semender
23.10.2012, 13:20
А почитать?
будет ли верно, если я в t3lib\stddb\tables.php
добавлю
$TCA['tx_mytable'] = array(
'ctrl' => array(
'id' => 'id',
'number' => 'number',
'date' => 'date',
)
);
а в ts это:
10 = CONTENT
10 {
table = tx_mytable
select {
orderBy = sorting
where = id=0
}
}
Андрей Аксенов
23.10.2012, 13:26
В файлы ядра системы никогда ничего добавлять не надо!
А таблицу свою легче всего создать, воспользовавшись каким-нибудь кикстартером расширений - то есть, в любом случае, нужно будет создавать свое расширение.
semender
23.10.2012, 14:18
о боже, неужели просто нельзя вывести какое нить значение таблицы,создал из pma,заполнил, и показал на странице. оказывается надо писать расширение. наверно легче будет Tesseract поставить и использовать его...
Андрей Аксенов
23.10.2012, 14:28
"простые" таблицы считаются сторонними для TYPO3, и это правильно - в целях безопасности, а что касается "просто создать таблицу", так об этом я и говорю, при помощи кикстартера создайте новое расширение с таблицами и берите из этих таблиц что хотите уже через TS.
dmartynenko
23.10.2012, 14:44
о боже, неужели просто нельзя вывести какое нить значение таблицы,создал из pma,заполнил, и показал на странице. оказывается надо писать расширение. наверно легче будет Tesseract поставить и использовать его...
Так ли это просто...
Что будет если вы захотите сделать то же самое на другом хостинге? В другой установке TYPO3?
Будете вспоминать через год-два что вы где-то что-то вручную насоздавали?
А как вы будете наполнять свою таблицу? Тоже руками через PMA ?
Если вы 1 раз сделаете экст, то там будет информация о том как ядру создать таблицу, какие там поля и каких типов. В результате установка таблицы и ее администрирование из проблемы "как сделать все вручную" переходит в удобную админку где многое (если не все) уже сделано и предусмотрено.
Программируйте под TYPO3 используя TYPO3-way. Не изобретайте свои велосипеды там где это не нужно.
semender
23.10.2012, 15:07
"простые" таблицы считаются сторонними для TYPO3, и это правильно - в целях безопасности, а что касается "просто создать таблицу", так об этом я и говорю, при помощи кикстартера создайте новое расширение с таблицами и берите из этих таблиц что хотите уже через TS.
объясните пожалуйста, а в чём угроза безопасности при использовании своей таблицы в этой же базе?
где в кикстартере есть возможности создать поля тип int(35),tinyint(1), с автоинкрементом, с моими дефолтными параметрами, с CURRENT_TIMESTAMP ?? Не нашел,изменил вручную ext_tables.sql , всё равно не пашет.
Вот пример из моего ext_tables.sql
Таблица создается один раз как указано ниже.
Возможно Вы не обновили БД (вкладка расширения > доступные расширения > выбор Вашего расширения > обновление БД) после изменения расширения в kickstarter.
-- MySQL dump 10.11
--
-- Host: localhost Database: rskapit8_datebaseallproject
-- ------------------------------------------------------
-- Server version 5.0.92-log
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
--
-- Table structure for table `tx_hellow_element_example_list`
--
DROP TABLE IF EXISTS `tx_hellow_element_example_list`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `tx_hellow_element_example_list` (
`uid` int(11) NOT NULL auto_increment,
`pid` int(11) NOT NULL default '0',
`tstamp` int(11) NOT NULL default '0',
`crdate` int(11) NOT NULL default '0',
`cruser_id` int(11) NOT NULL default '0',
`deleted` tinyint(4) NOT NULL default '0',
`hidden` tinyint(4) NOT NULL default '0',
`starttime` int(11) unsigned NOT NULL default '0',
`endtime` int(11) unsigned NOT NULL default '0',
`asorting` int(11) unsigned NOT NULL default '0',
`sorting` int(11) unsigned NOT NULL default '0',
`title` tinytext collate utf8_bin,
`service_note` tinytext collate utf8_bin,
`url_location` varchar(255) collate utf8_bin default '0',
`telem` int(11) NOT NULL default '0',
`pelem` int(11) NOT NULL default '0',
`ptable` int(11) NOT NULL default '0',
`structure` int(11) NOT NULL default '0',
PRIMARY KEY (`uid`),
KEY `parent` (`pid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
/*!40101 SET character_set_client = @saved_cs_client */;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
-- Dump completed on 2012-10-22 20:14:11
Данный файл ext_tables.sql по хорошему нужен только для одной вещи - если вы заходите в установки typo3 и жмете анализ БД, то typo3 проверят актуальность ваших mysql-таблиц на основе данного файла.
Если что-то лишнее есть в Вашей БД, чего нет в этом файле (к примеру имеется в виду `asorting` int(11) unsigned NOT NULL default '0', ) - то typo3 их удалит из БД - в общем сделает все в точности как в этом файле...:D
Если он (файл) действительно нужен проекту (у Вас это будет постоянное расширение) советую сделать следующим образом: создает TCA, разрабатывает php-скрипты, создаете какую угодно mysql-таблицу (где-то читал, что желательно использовать как можно меньше разновидностей типов полей - ограничится хотябы тремя - int, varcarh, text - в общем по желанию - без всяких float bloob) - одним словом доводите его до совершенства - и после после приступаете к созданию sql-файла так:
делаете выгрузку стуктуры данной таблицы следующей командой
$table = "tt_content_yourext";
$dumpfile = PATH_typo3conf . 'ext/yourext/ext_tables.sql';
exec("mysqldump -h".TYPO3_db_host." -u".TYPO3_db_username." -p".TYPO3_db_password ." --no-data --databases ".TYPO3_db." --tables " .$table. " > $dumpfile");
И получаете готовый файл...:)
Работает на vBulletin® версия 3.8.1. Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot