Внедрение одного скрипта в другой (в дизайн)

Тема в разделе "PHP", создана пользователем o_nix, 17 окт 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. o_nix

    o_nix

    Регистр.:
    7 ноя 2007
    Сообщения:
    1.073
    Симпатии:
    1.037
    Долго искал движок удовлетворяющий моим запросам
    но не нашёл такой. Зато нашёл два отдельных движка в каждом из которых есть отлично работающая нужная мне часть.

    В общих чертах это скрипт портала который установлен в корне домена и скрипт каталога который установлен во вложенную директорию тогоже домена.

    Цель внедрить в дизайн портала инфу выдаваемую скриптом каталога.
    С адекватным отображением для пользователей и поисковиков.

    Шаблоны портала поддерживают вставки php кода

    пока единственное что хоть както работает это вставка в нужное место шаблона портала
    PHP:
    <?php
    $homepage 
    file_get_contents('http://sete.ru/catalog/index.php');
    echo 
    $homepage;
    ?>
    Получается я сам себя парсю и потом вывожу :D
    но при этом вероятно придётся переработать весь скрипт каталога тк он выдаёт пути site.ru/script.php а должен выдавать site.ru/catalog/script.php

    <? include ("./catalog/index.php"); ?> - не срабатывает, скрипт каталога если его запускать в cgi режиме без апача выдаёт пустоту (500 ошибку)

    iframe не подходит

    Повторять полностью дизайн портала приминительно к каталогу трудоёмкая задача, не уверен что она правильная тк сделать динамику меню портала наверняка не получится.

    В общем делаю подобное впервые, подскажите пожалуйста самый правильный и цивилизованный способ внедрить каталог в портал ...
     
  2. t3s

    t3s

    Регистр.:
    16 фев 2008
    Сообщения:
    719
    Симпатии:
    290
    возможно, в вашем случае сможет помочь RSS - при условии что каталог умеет отдавать фиды...
     
  3. o_nix

    o_nix

    Регистр.:
    7 ноя 2007
    Сообщения:
    1.073
    Симпатии:
    1.037
    нет rss тоже не подойдёт
    каталог интерактивен для пользоватей сортировка поиск и всё такое
    Вероятно это через попу но пока додумался сделать только вот так :D
    PHP:
    <?php 
    $homepage 
    file_get_contents('http://sete.ru/catalog/index.php');
    $homepage str_replace('href="''href="catalog/'$homepage); 
    echo 
    $homepage
    ?>
    но опятьтаки нет внедрения в дизайн, при переходе по любой ссылке каталога - попадаеш в каталог а надо в каталог "обрамлённый" меню шапкой и подвалом портала

    приходят мысли сделать тоже самое парсинг уже портала замена лишнего и всавка контента каталога.
    ужас какойто :D

    Цивилизованние чтонибудь может быть ??
     
  4. TheGp

    TheGp Писатель

    Регистр.:
    21 янв 2010
    Сообщения:
    7
    Симпатии:
    1
    Ну а как ты хотел?) тут в любом случае через жопу получится.
    ну можно сделать например переменную, которая будет отвечать за url который послыается к каталогу.

    то есть пишем на портале ?catalog=page1/
    и портал загружается не главную странцу каталога а урл_каталога/page1/

    также заменяем на эту херовину все ссылки каталога, чтобы они сначала перевеодили человека на портал, который загружал нужную страницу

    теперь есть проблема с POST запросами. решаем ее:
    при формировании урлу к каталогу делаем скрипт который либо:
    а. отправляет пост запрос каталогу(через headers)
    б. либо собирает пост запрос в строку(через serialize например), передает через get запрос каталогу, который снова делает из гета пост(можно в главном скрипте каталога это вначале кода сделать)
     
    o_nix нравится это.
  5. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    883
    Симпатии:
    540
    Цивилизованно можно сделать 2-мя способами-
    1) дописать каталог, чтобы просто использовал одну базу, но жил в отдельно
    2) сделать мост, который разными методами получит информацию о нужной странице и загонит в новый дизайн. способ реализации моста зависит от реализации каталога- можно через file_get_contents, если вывод страницы идёт в разнобой, если используется шаблонизатор- можно через него все переменные вывести через мост в новый диз (или попытаться хотябы)
     
    o_nix нравится это.
  6. o_nix

    o_nix

    Регистр.:
    7 ноя 2007
    Сообщения:
    1.073
    Симпатии:
    1.037
    TheGp
    header имеется ввиду это ?
    PHP:
    <?php 
    header
    ("Location: http://site.ru/catalog");
    exit; 
    ?>
    я так понимаю это управление браузером без возможности для пользователя что либо сделать?? Как к этому боты поисковиков отнесуться ?? И будут ли индексировать это?

    KillDead
    1) ну в принципе чтобы всё жило отдельно в одной базе ничего даже переписывать не придётся. Названия таблиц разные - уже думаю не морочить себе голову а оставить каталог во вложенной папке либо поставить его на поддомен. Скопировать статику портала по минимуму и перелинковать.
    Минус динамики совсем нестанет :(

    б, оноже 2, и оноже то что я "наделал" как я понимаю :D

    В движке каталога шаблоны смарти, в движке портала непойму что - переменные в шаблоне выглядят как *phone*
    как объеденить эти два вывода абсолютно разных шаблонизаторов в единое цело чесно говоря не понимаю.

    Вариант с file_get_contents мне хотябы полностью понятен. Плюс в том что останется динамика портала от имени незарегистрированного пользователя.

    В общем пробую мучать file_get_contents, неполучится поставлю на поддомен.

    Если у когото будут ещё какието хорошие мысли по сабжу пишите :D
     
  7. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    883
    Симпатии:
    540
    в принципе, кроме интеграции и прочего, нужно так и делать -
    в каталоге, убрать весь дизайн (всякие css, шапку и прочее), чтобы он отдавал только блок, который нужно от него. Там же и поменять урл сайта на нужный. Можно это даже сделать через ajax, но поисковики не будут рады.
     
  8. o_nix

    o_nix

    Регистр.:
    7 ноя 2007
    Сообщения:
    1.073
    Симпатии:
    1.037
    ajax - это былобы самым гибким вариантом но его я сразу отмёл,
    индексация очень нужна.

    делаю сейчас какраз так с обрезанием всего лишнего и пристройкой нужного :D

    проблема вот только index.php файл каталога неработает без htaacces из корня, тоесть получается что мне нужно работать только с этим index.php нельзя сделать его урезаный клон для вывода нужных блоков.

    такчто получается что крамсать нужно дважды
    1. парсим портал из скрипта каталога лепим нужное всё выводим
    2. скрипт портала парсит вывод каталога (с уже прилепленным дизайном портала) после чего от него отрезается портал и встраивается в текущий диз и динамику портала :D

    есть ощущение что уже при 10-15 пользователях онлайн такой подход убьёт впэску :(
    а уж если боты гугла налетят то темболее.

    проблемму решилабы возможность юзать скрипт каталога в cgi, сделать из него просто модуль портала тогда можно - но вероятно это просто невозможно там завязка с апачем
     
  9. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    883
    Симпатии:
    540
    Зависит от способа реализации этой самой Кромсалки (сомневаюсь, что данных будет очень много, так что скрипт, если нет явных ошибок, быстро сгенерится и не нагрузит серв) и самих скриптов- тут получается что мы запускаем весма нагруженный сайт. Получается что-то типа джумлы или друпала, в жёствком исполнении.
    Как хороший вариант- кешировать данные от каталога.
    я хз что там за адская связка с апачем) если ошибка 500- это ещё ничего не значит, мож он просто не в ASCII залит
     
  10. pitkina

    pitkina

    Регистр.:
    1 апр 2007
    Сообщения:
    253
    Симпатии:
    176
    в общем способ есть, и с передачей GET, POST запросов

    PHP:
    $opt = array('QUERY_STRING='.http_build_query($_GET), // передача GET запроса
                
    'POST_QUERY='.http_build_query($_POST),
                
    'REQUEST_METHOD=GET',
                
    'HTTP_HOST=site.com',
                
    'SERVER_NAME=site.com','SERVER_PORT=80',
                
    'SERVER_PROTOCOL=HTTP/1.1',
                
    'SCRIPT_NAME=/index.php',
                
    'REQUEST_URI=/catalog/',
                
    'SCRIPT_FILENAME=/home/user_name/public_html/site.ru/catalog/index.php');

    foreach (
    $_SERVER as $k=>$v// передаем массив $_SERVER
    if((strpos($k,'HTTP_')===0) OR (strpos($k,'REMOTE_')===0)) putenv("{$k}={$v}");

    foreach (
    $opt as $valueputenv($value); // передаем массив $opt

    $tmp_dir getcwd();
    chdir('/home/user_name/public_html/site.ru/catalog/'); // директория скрипта

    $page shell_exec('php index.php'); // запускаемый скрипт
    echo $page;


    chdir($tmp_dir);
    Все параметры заменяются на свои, их можно получить через print_r($_SERVER); или var_export($_SERVER);

    и в начале запускаемого скрипта добавить ф-и для создания $_GET , $_POST

    PHP:
    parse_str($_SERVER['QUERY_STRING'],$_GET);
    parse_str($_SERVER['POST_QUERY'],$_POST);
     
    o_nix нравится это.
Статус темы:
Закрыта.