Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Встраивание скрипта в CMS, Обсуждаем общие моменты.. 
:(
    Опции темы
Wowa
Дата 30.12.2005, 01:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: нет
Всего: 290



Я использую Content Management System TYPO3. Это очень серьезная разработка с большим кол-во возможностей. Однако она постороена по принципу, расширения функциональности за счет модулей.

Однако, когда уже есть готовый хорошо работащий скрипт, то делать из него модуль для системы TYPO3 - довольно сложное занятие, т.к. еще стоит разобраться как делаются эти модули и т.п.


Идеальным решением была бы возможность подключения к системе любого стороннего ПХП-скрипта. Эта возможность есть за счет возможности вставки через CMS на страницу не только обычного простого текста, но также и PHP-скрипта.


Естественно, мы не можем вставить на страницу весь код пхп-скрипта, особоенно если он состоит из множества модулей и т.п. Поэтому можно написать <?php include("наш скрипт");?>

Казалось бы проблема решена? А нет.
Страница с нашим встроенным скриптом имеет адрес: index.php?id=4654
Если наш ПХП скрипт выводит на экран форму, или же ссылки для перехода по страницам, то при нажатиии на них мы перейдем в большом кол-ве случаев на страницу: myscript.php
А нужно перейти на index.php?id=4654, с которой и вызывается собственно наш скрипт.


Я вижу след. пути решения проблемы:
1. Грузить скрипт в IFRAME, что в принципе по многим причинам не самое удачное решение.2
2. Обрабатывать весь вывод от myscript.php переписывая ссылки правильными.


Что скажете?
PM WWW   Вверх
Mal Hack
Дата 30.12.2005, 01:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 8
Всего: 261



Я бы тут сделал так..
Делал бы mod_rewrite'ом редирект при my.php?<params> на скрипт type.
В нем, смотрел, если запрос идет на my.php, то подключаем наш скрипт. Ему уже будут доступны все переменные массива GET, POST и прочих.
PM ICQ   Вверх
Wowa
Дата 30.12.2005, 01:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: нет
Всего: 290



Mal Hack супер. Очень хорошее решение.
Цитата(Mal @ 29.12.2005, 23:48)
В нем, смотрел, если запрос идет на my.php, то подключаем наш скрипт.

А это даже не надо, т.к. сразу сделаем редирект на страницу внутри TYPO3 со скриптом. Т.е. на: index.php?id=4654


Но есть еще одна проблема. Это каталог запуска скрипта. Подключая скрипт через include, он будет думать, что он(скрипт) лежит также в корне сайта, хотя это необязательно так. Соответсвенно путь к модулями, картинкам и т.п. - неправильный будет..
Добавлено @ 01:56
И еще одна проблемка, это то, что скрипт может выдавать какие-нибудь header...
Добавлено @ 02:00
По идее.. Решение через IFRAME не имеет этих проблем.
PM WWW   Вверх
Mal Hack
Дата 30.12.2005, 02:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 8
Всего: 261



Цитата(Wowa @ 30.12.2005, 01:56)
Но есть еще одна проблема. Это каталог запуска скрипта. Подключая скрипт через include, он будет думать, что он(скрипт) лежит также в корне сайта, хотя это необязательно так. Соответсвенно путь к модулями, картинкам и т.п. - неправильный будет..

ПРописать в скрипте <base>.

Цитата(Wowa @ 30.12.2005, 01:56)
И еще одна проблемка, это то, что скрипт может выдавать какие-нибудь header...

Ну, если ты подключишь его в типо до вывода, а в самом начале, то все будет пучком.

PM ICQ   Вверх
Wowa
Дата 30.12.2005, 02:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: нет
Всего: 290



Цитата(Mal @ 30.12.2005, 00:09)
ПРописать в скрипте <base>.

это вроде в ХТМЛе. А в пхп-скрипте, как?


Цитата(Mal @ 30.12.2005, 00:09)
Ну, если ты подключишь его в типо до вывода, а в самом начале, то все будет пучком.

А вот это сложно реализовать...


В общем, я все же наверное склоняюсь к варианту через IFRAME.. Вроде минусов вообще нет. А?
PM WWW   Вверх
Mal Hack
Дата 30.12.2005, 02:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 8
Всего: 261



Цитата(Wowa @ 30.12.2005, 02:12)
это вроде в ХТМЛе. А в пхп-скрипте, как?

ПХП тут не при чем. <base> у тебя установит как бы корень твоего скрипта.
Или тебе надо чтобы внутри типо был вывод скрипта?
Тогда надо найти, где он гегнерит шапку и еще раз сделать условие:

Цитата(Mal @ 30.12.2005, 01:48)
смотрел, если запрос идет на my.php, то

... дописываем <base> или в скрипте все ссылки скриптом переписываемю

Цитата(Wowa @ 30.12.2005, 02:12)
В общем, я все же наверное склоняюсь к варианту через IFRAME.. Вроде минусов вообще нет. А?

В теории да, но файеры блочат smile


Цитата(Wowa @ 30.12.2005, 02:12)
А вот это сложно реализовать...

Тут просто надо найти место где он:
а) генерит.
б) выводит.
PM ICQ   Вверх
Wowa
Дата 30.12.2005, 03:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: нет
Всего: 290



немного доки по теме: http://typo3.org/fileadmin/pdf_manuals/man...03_00-58-13.pdf
Добавлено @ 03:14
Там написано, что используется output buffering. А это по идее означает, что никаких проблем с header быть не должно. Так ведь?

Проблему с include можно решить через set_include_path(), а затем выполнить restore_include_path().

Проблему с ссылками - через mod_rewrite, как предложил Mal Hack.
PM WWW   Вверх
Mal Hack
Дата 30.12.2005, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 8
Всего: 261



Цитата(Wowa @ 30.12.2005, 03:12)
Проблему с include можно решить через set_include_path(), а затем выполнить restore_include_path().

Ага.

Цитата(Wowa @ 30.12.2005, 03:12)
Там написано, что используется output buffering. А это по идее означает, что никаких проблем с header быть не должно. Так ведь?

Ага.
PM ICQ   Вверх
-=Ustas=-
Дата 30.12.2005, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: нет
Всего: 69



Цитата(Wowa @ 30.12.2005, 01:30)
Если наш ПХП скрипт выводит на экран форму, или же ссылки для перехода по страницам, то при нажатиии на них мы перейдем в большом кол-ве случаев на страницу: myscript.php

Это как так??? Либо я непонял твою проблему, либо.... Ну если я правильно понимаю, то допустим myscript.php генерит какие-то ссылки, которые отображает index.php?... Так? Если так, то почему бы тебе не юзать $_SERVER['PHP_SELF'] для формирования ссылок в myscript.php. Ведь имя файла скрипта будет всегда тем, который инклюдит какой-то скрипт, а не инклюженого.
Или я что-то не понял? smile


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
Wowa
Дата 30.12.2005, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: нет
Всего: 290



Цитата
Это как так??? Либо я непонял твою проблему, либо.... Ну если я правильно понимаю, то допустим myscript.php генерит какие-то ссылки, которые отображает index.php?... Так? Если так, то почему бы тебе не юзать $_SERVER['PHP_SELF'] для формирования ссылок в myscript.php. Ведь имя файла скрипта будет всегда тем, который инклюдит какой-то скрипт, а не инклюженого.
Или я что-то не понял? 

Так. Но есть готовые скрипты, в которых это не так.
А вторая траблка это то, что в TYPO3 нужно передавать id еще страницы. Т.е. типа: $_SERVER['PHP_SELF']?id=ид страницы с пхп скриптом.


P.S. Кстати, как изменить, чтобы вместо id в typo3 использовалось бы pagetypoid?
PM WWW   Вверх
-=Ustas=-
Дата 31.12.2005, 10:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: нет
Всего: 69



Цитата(Wowa @ 30.12.2005, 15:24)
Так. Но есть готовые скрипты, в которых это не так.

Ну передалеть по-моему недолго... smile
Цитата(Wowa @ 30.12.2005, 15:24)
P.S. Кстати, как изменить, чтобы вместо id в typo3 использовалось бы pagetypoid?

А вот это уже черт его знает. Я не помню, но кажется что там есть поддержка ЧПУ, которая где-то в конфигурировании включается, после чего на урл берутся алиасы имен страниц.
Ты поковыряй код, если там явно указан $_GET['id'] или $_POST['id'] , тогда наряд ли это изменить можно.


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

Внимание: данный раздел предназначен для решения сложных, нестандартных задач.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Для профи | Следующая тема »


 




[ Время генерации скрипта: 0.0583 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.