Вернуться   Форум SAPE.RU > Система SAPE.ru > Установка кода на различные движки

Результаты опроса: Помогло ли Вам это решение?
Да 2 66.67%
Нет 0 0%
Я ничего не понял(а) 1 33.33%
Голосовавшие: 3. Вы ещё не голосовали в этом опросе

-->
Ответ
 
Опции темы
Старый 10.12.2012, 18:49   #1
Новичок
 
Регистрация: 07.12.2012
Сообщений: 11
Вес репутации: 0
Giacomo скоро станет известенGiacomo скоро станет известен
По умолчанию Правильный Контекстный код на Joomla 1.7

На днях я впервые добавил свой сайт в эту систему, и, как и многие, столкнулся с тем, что код на сайте либо не устанавливается, либо сайт не лезет в сапу. Сколько за эти дни я перечитал обсуждений (и тут, и на серче) уже не упомнишь. Скачивал разные плагины, пробовал всякие танцы с бубном (вроде удаления той самой папки с неперивариваемым именем, и т.д.), вот только всё без толку.
Как оказалось, инструкция по установке кода на странице добавления новой площадки - некорректно составлена. То есть, у кого-то она будет работать, а у кого-то нет.

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

Итак, всем уставшим бороться с саповским кодом посвящается...

Прежде чем приступить, проверьте что у вас есть Total Commander и WinRar. Хотя если вы вместо них пользуетесь чем-то другим - не беда.

Шаг 1:
со страницы добавления новой площадки скачиваем архив с длинющим именем вида d670f37280253c38a6a99b57b7e3efb9__php.zip
Распаковываем его в папку с таким же именем (то есть, если у вас есть WinRar, то жмём на файле правой кнопкой и выбираем "Извлечь в d670f37280253c38a6a99b57b7e3efb9__php/").

Шаг2:
Заходим в эту распакованную папку, там есть папка вида d670f37280253c38a6a99b57b7e3efb9 и ещё рядом с ней файл с таким же именем d670f37280253c38a6a99b57b7e3efb9.php
Так вот, этот файл нам НЕ нужен (зачем он там вообще присутствует??).
Нам нужна только папка d670f37280253c38a6a99b57b7e3efb9 .
Соединяемся по FTP со своим сайтом и копируем эту папку d670f37280253c38a6a99b57b7e3efb9 в корень своего сайта. Убедитесь в начале, что вы копируете именно в корень (то есть, там присутствуют папки administrator, cache, cli, components, files, images, includes, libraries,...).

Шаг3:
Скопировав эту папку на сервер, поставьте в Total Commander'e на неё курсор и в верхнем меню:
Файлы -> Изменить аттрибуты -> выставьте значение 777 и нажмите ОК.

Шаг4:
Не отключаясь от сервера идите сюда:
templates/ИМЯ_ВАШЕГО_ШАБЛОНА_Joomla
и найдите там файл index.php
скопируйте его к себе на компьютер.
Внимание!! Сразу же создайте на компьютере папку "Изначальный Шаблон" и скопируйте туда главный файл вашего шаблона. Если вы что-то испортите, то сможете потом восстановить исходный файл, скопировав его поверх изменённого.
откройте файл и посмотрите есть ли там такое:
<head>
тут всякий код
</head>
Если есть, то вы нашли то, что искали - это главный файл вашего шаблона. Если там такого нет (как у меня), то вам надо порыться в папке templates/ИМЯ_ВАШЕГО_ШАБЛОНА_Joomla и во внутренних папках.
Лично у меня этот файл был здесь:
templates/ИМЯ_ШАБЛОНА_Joomla/layouts/template.php
Обратите внимание, что он не обязательно должен называться index.php!

Шаг5:
Как только вы нашли главный файл вашего шаблона и вытащили его копию с сервера, откройте его и найдите секцию кода между тегами head:
<head>
тут всякий код
</head>
Теперь перед самым </head> вставьте:

<?php
if (!defined('_SAPE_USER')){
define('_SAPE_USER', 'ХЕШ-КОД');
}
require_once('АДРЕС_САЙТА_НА_СЕРВЕРЕ'.'/'._SAPE_USER.'/sape.php');

$o['charset'] = 'UTF-8';
$o['force_show_code'] = true;
$o['request_uri'] = $_SERVER['REDIRECT_URL'];

$sape_context = new SAPE_context();
?>

ХЕШ-КОД - это имя папки, которую вы копировали на сервер в Шаге 2.

АДРЕС_САЙТА_НА_СЕРВЕРЕ - это и был главный трабл кода, который предоставляет Sape. Изначально эта строка выглядит так:
require_once($_SERVER['DOCUMENT_ROOT'].'/'._SAPE_USER.'/sape.php');

Эта строка составляет адрес той самой папки (точнее, файла sape.php внутри неё), которую вы скопировали ранее.
Она составляет адрес из четырёх частей:
ПУТЬ_К_ВАШЕМУ_САЙТУ_НА_СЕРВЕРЕ./.ИМЯ_ХЕШ_ПАПКИ./sape.php

$_SERVER['DOCUMENT_ROOT'].'/'._SAPE_USER.'/sape.php'

Строки склеиваются вместе с помощью точек (.) В результате образуется строка-адрес к файлу sape.php с точки зрения самого сервера.
Надеюсь, пока не слишком сложно?

$_SERVER['DOCUMENT_ROOT'] - эта абракадабра спрашивает у сервера путь к вашему сайту и сервер отвечает что-то типа:

"Ваш сайт находится на сервере в папке /var/www/html"

Так вот, прикол в том, что это может быть неправильный адрес!
Как и было в моём случае. Я не спец, но думаю, что сервер просто неправильно настроен, в результате чего саповские коды начинают искать сайт по неправильному адресу. И, вероятно, такое бывает на многих серверах.

Это как раз и приводит к знаменитой ошибке:

Цитата:
Fatal error: require_once(): Failed opening required '/var/www/html/d670f37280253c38a6a99b57b7e3efb9/sape.php'
Реально же адрес моего сайта выглядит вот так:

/home/vhosts/www.mysite.ru

То есть, никаких /var/www/html , которые получает $_SERVER['DOCUMENT_ROOT'] там нет.

Вместо того, чтобы полагаться на автоматику, нужно вписать красную часть адреса вручную, не забыв заключить её в одинарные кавычки:

require_once('/home/vhosts/www.mysite.ru'.'/'._SAPE_USER.'/sape.php');

Где взять адрес сайта на сервере?

Идём в админку Джумлы 1.7, в верхнем меню:
Сайт - Общие настройки - вкладка Сервер
смотрите самое первое поле "Путь к каталогу временных файлов"
копируйте из него всё кроме /tmp части.
Вставьте аккуратно это всё вместо $_SERVER['DOCUMENT_ROOT'] и обрамите одинарными кавычками.

Теперь ваш код должен выглядеть примерно так:

<?php
if (!defined('_SAPE_USER')){
define('_SAPE_USER', 'd670f37280253c38a6a99b57b7e3efb9');
}
require_once('/home/vhosts/www.mysite.ru'.'/'._SAPE_USER.'/sape.php');

$o['charset'] = 'UTF-8';
$o['force_show_code'] = true;
$o['request_uri'] = $_SERVER['REDIRECT_URL'];


$sape_context = new SAPE_context();
?>

Уфффф!
Кстати, по поводу части кода, котый я выделил красным - он не присутствует в оригинальном коде Sape, но без него Sape не находит код
Цитата:
Код на сайте не установлен
Эти три строчки фиксят ненахождение кода когда на сайте включён SEF(он же ЧПУ), фиксят кодировку ссылок (иначе вместо ссылок появятся кракозябры), и ещё что-то, уже не помню.

Шаг6:

Теперь, когда мы вставили код в head, плавно прокручивайте ваш главный файл шаблона и ищите, где происходит вывод контента. Ищите что-то вроде
$this['template']->render('content');
Ключевые слова здесь template и content
Эта строка определённо должна быть не в начале документа, и должна идти после всяких breadcrumbs и before-content'ов

У меня эта строка целиком выглядит так:

<section id="content" class="grid-block"><?php echo $this['template']->render('content'); ?></section>

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

Теперь мы должны выключить этот код, чтобы не стирать его. В принципе, можно было бы и стереть, но я предпочитаю иметь пути к отступлению в случае чего.
Добавьте в этот код символы, выделенные красным:

<!--
<section id="content" class="grid-block"><?php /* echo $this['template']->render('content'); */ ?></section>
-->

А что делать, если ваш код выглядит по-другому?
Не переживайте. Смысл в том, чтобы весь блок заключить в эти штуки:
<!-- и -->
а затем в этом блоке после каждого <? или <?php вставить /*
и перед каждым ?> или php?> вставить */

Будьте внимательны со всем этим!

Структура должна получиться такая:

<!--
тут всякий html код
<?
/*
тут php код
*/
?>
тут ещё что-нибудь может быть
-->

Когда вы так сделаете, код выключится и не будет обрабатываться. Можете попробовать сохранить этот файл и заменить им старую версию файла на сервере. После чего обновите ваш сайт в браузере, и вы увидите, что весь контент пропал. Так и должно быть, значит всё сделано правильно.

Теперь ниже, сразу после этого выключенного кода, вставьте:

<?
$text = 'КОД_ВЫВОДА_СТАТЬИ';
$text = $sape_context->replace_in_text_segment($text);
echo $text;
?>

Всё, что нам осталось сделать - это вставить КОД_ВЫВОДА_СТАТЬИ между одинарных кавычек в переменную $text.

И вот тут может возникнуть самая большая сложность для тех, кто незнаком с PHP и прочими мамбо-джамбо (как я). По правде я понятия не имею о php, всяких там javascripts/mysql, я далеко не программист, а правлю коды всегда исходя из собственной интуиции и номинального знания html на уровне детсада старшей группы.
Поэтому мне было сложно сообразить как же один код грамотно вставить в другой код. Но, выпив чашечку кофе и слегка напрягшись, я сконструировал что-то, что к моему величайшему удивлению заработало с первого раза.

Что я сделал?

те части кода, которые на html, я заключил в одинарные кавычки, а у того, что на php, я стёр открывающие и закрывающие теги, вот эти:
<? и ?>
они могут выглядеть и так:
<?php и php?>
а могут быть их комбинацией.

Ещё я стёр echo посмотрев аналогичные участки кода.
Также удалил все пробелы между частями строки.
И склеил их точками (.) - как видел в готовом коде выше.

Короче, у меня получилась такая структура:
$text = 'html-код'.php-код.'html-код закрывающий';

! Обратите внимание, что html-код в кавычках, а php-код - без кавычек.

В результате получил вот это:

$text = '<section id="content" class="grid-block">'.$this['template']->render('content').'</section>';

а всё вместе это выглядит так:

<?
$text = '<section id="content" class="grid-block">'.$this['template']->render('content').'</section>';
$text = $sape_context->replace_in_text_segment($text);
echo $text;
?>

Я понимаю, что у кого-то один вид всех этих абракадабр может вызывать отвращение. Но всё же напрягитесь и попробуйте разобраться что я тут понаписал. Это не ракетостроение, друзья мои, и если вы внимательно посмотрите, то сами быстро разберётесь. Я описал подробно как мог и искренне надеюсь что эта инструкция вам поможет.

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

Удачи вам! И бооольшущих заработков!
Giacomo вне форума   Ответить с цитированием
Старый 10.12.2012, 19:00   #2
Добрый модератор
 
Аватар для zhegloff
 
Регистрация: 09.07.2007
Адрес: глобус Украины
Сообщений: 27,600
Вес репутации: 1025
zhegloff - прекрасное будущееzhegloff - прекрасное будущееzhegloff - прекрасное будущееzhegloff - прекрасное будущееzhegloff - прекрасное будущееzhegloff - прекрасное будущееzhegloff - прекрасное будущееzhegloff - прекрасное будущееzhegloff - прекрасное будущееzhegloff - прекрасное будущееzhegloff - прекрасное будущее
По умолчанию

Цитата:
Сообщение от Giacomo Посмотреть сообщение
Так вот, этот файл нам НЕ нужен (зачем он там вообще присутствует??).
Захотите работать с биржей статей - узнаете.


Цитата:
Сообщение от Giacomo Посмотреть сообщение
И, вероятно, такое бывает на многих серверах.
Нет, только на хостингах с рукожопыми админами. Таких меньше одного процента.


Цитата:
Сообщение от Giacomo Посмотреть сообщение
Идём в админку Джумлы 1.7, в верхнем меню:
Сайт - Общие настройки - вкладка Сервер
смотрите самое первое поле "Путь к каталогу временных файлов"
копируйте из него всё кроме /tmp части.
Вставьте аккуратно это всё вместо $_SERVER['DOCUMENT_ROOT'] и обрамите одинарными кавычками.
Тут может быть большой эпикфейл, ибо частенько там тоже левые пути прописаны.


Цитата:
Сообщение от Giacomo Посмотреть сообщение
$o['request_uri'] = $_SERVER['REDIRECT_URL'];
С этой строчкой может быть тоже большой эпикфейл ибо она НЕ работает намного чаще, чем встречаются сервера с кривым документ-рутом.

А так вообще пять с плюсом вам за трудолюбие
__________________
Установка кода сапы от $9.95. Пишите в личку.
Правильный хостинг.
В личке бесплатно не отвечаю обычно.
zhegloff вне форума   Ответить с цитированием
Старый 10.12.2012, 21:22   #3
Новичок
 
Регистрация: 07.12.2012
Сообщений: 11
Вес репутации: 0
Giacomo скоро станет известенGiacomo скоро станет известен
По умолчанию

Цитата:
Сообщение от zhegloff Посмотреть сообщение

Нет, только на хостингах с рукожопыми админами. Таких меньше одного процента.
Значит мне так повезло. Правда хостинг бесплатный, так что грех жаловаться

Цитата:
Сообщение от zhegloff Посмотреть сообщение
Тут может быть большой эпикфейл, ибо частенько там тоже левые пути прописаны.
А как тогда узнать, не поделитесь знаниями? Вообще, если там путь левый, то установка плагинов не должна работать, как я понимаю, на что само собой внимание обращается. Если, конечно вебмастер не плюнул на это.

Цитата:
Сообщение от zhegloff Посмотреть сообщение
Сообщение от Giacomo
$o['request_uri'] = $_SERVER['REDIRECT_URL'];

С этой строчкой может быть тоже большой эпикфейл ибо она НЕ работает намного чаще, чем встречаются сервера с кривым документ-рутом.
А она вообще для чего предназначается? Тоже что-то фиксит? Я где-то в интернете нашёл эти строчки и вставил, после чего всё заработало.
Giacomo вне форума   Ответить с цитированием
Старый 10.12.2012, 22:42   #4
Добрый модератор
 
Аватар для zhegloff
 
Регистрация: 09.07.2007
Адрес: глобус Украины
Сообщений: 27,600
Вес репутации: 1025
zhegloff - прекрасное будущееzhegloff - прекрасное будущееzhegloff - прекрасное будущееzhegloff - прекрасное будущееzhegloff - прекрасное будущееzhegloff - прекрасное будущееzhegloff - прекрасное будущееzhegloff - прекрасное будущееzhegloff - прекрасное будущееzhegloff - прекрасное будущееzhegloff - прекрасное будущее
По умолчанию

Цитата:
Сообщение от Giacomo Посмотреть сообщение
Вообще, если там путь левый, то установка плагинов не должна работать, как я понимаю, на что само собой внимание обращается.
Ну в общем-то да, хороший признак


Цитата:
Сообщение от Giacomo Посмотреть сообщение
А она вообще для чего предназначается? Тоже что-то фиксит? Я где-то в интернете нашёл эти строчки и вставил, после чего всё заработало.
Для указания адреса текущей страницы коду сапы.
__________________
Установка кода сапы от $9.95. Пишите в личку.
Правильный хостинг.
В личке бесплатно не отвечаю обычно.
zhegloff вне форума   Ответить с цитированием
Старый 11.12.2012, 10:02   #5
Новичок
 
Регистрация: 07.12.2012
Сообщений: 11
Вес репутации: 0
Giacomo скоро станет известенGiacomo скоро станет известен
По умолчанию

Я придумал как ещё определить путь к сайту на сервере.

Способ 2 (железный):
1. Создаём текстовый документ и пишем в него:

<?
$test = abc();
echo $test;
?>

2. Сохраняем его и называем checkpath.php
3. Соединяемся по FTP со своим сайтом и копируем этот файл в корень сайта.
4. Открываем в браузере адрес http://www.ВашСайт.ru/checkpath.php
смотрим на сообщение об ошибке:
Цитата:
Fatal error: Call to undefined function abc() in /home/vhosts/www.ВашСайт.ru/checkpath.php on line 2
То что выделено жирным - и есть путь к сайту.

PS Я уже не могу поправить свой первый пост, но буду благодарен, если модератор прилепит этот способ в нужное место
Giacomo вне форума   Ответить с цитированием
Старый 11.12.2012, 11:01   #6
Добрый модератор
 
Аватар для zhegloff
 
Регистрация: 09.07.2007
Адрес: глобус Украины
Сообщений: 27,600
Вес репутации: 1025
zhegloff - прекрасное будущееzhegloff - прекрасное будущееzhegloff - прекрасное будущееzhegloff - прекрасное будущееzhegloff - прекрасное будущееzhegloff - прекрасное будущееzhegloff - прекрасное будущееzhegloff - прекрасное будущееzhegloff - прекрасное будущееzhegloff - прекрасное будущееzhegloff - прекрасное будущее
По умолчанию

Есть еще более железный способ - функция phpinfo();
__________________
Установка кода сапы от $9.95. Пишите в личку.
Правильный хостинг.
В личке бесплатно не отвечаю обычно.
zhegloff вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
контекстный код mortan Вопросы по работе системы 5 27.12.2013 18:57
Joomla. Все. Исправляем ERROR на главной и прописываем правильный редирект dbsysru Ошибки при работе с системой 26 10.11.2011 13:33
Помогите установить контекстный код на DLE akella_ Контекстные ссылки и все, что с ними связано 2 28.08.2009 10:11
HELP - не работает контекстный код! skylander Контекстные ссылки и все, что с ними связано 1 07.08.2009 11:37
Контекстный трафик jaboss7 Контекстная реклама 4 21.07.2009 13:10


Часовой пояс GMT +3, время: 13:07.