пятница, 15 февраля 2013 г.

SAPE на TYPO3


Многие знают, что существует такая биржа по покупке и продаже ссылок - SAPE.RU, или просто Сапа.

Для того, чтобы отобразить на своем сайте саповские ссылки необходимо на страницу внедрить примерно следующий PHP код:

<?php
     if (!defined('_SAPE_USER')){
        define('_SAPE_USER', '8asdfsg78675sdfg567huyt565v654654a');
     }
     require_once(realpath($_SERVER['DOCUMENT_ROOT'].'/'._SAPE_USER.'/sape.php'));
     $sape = new SAPE_client();
     echo $sape->return_links()
?>
Казалось бы все просто, но на самом деле не так. TYPO3 из соображений безопасности запрещает нам внедрять такой код на свои страницы, даже если мы выбираем тип контента - Plain HTML (HTML код). Поэтому, возникает вопрос - что же делать? 

Рассказываю:

1. Необходимо зарегистрировать на SAPE новую площадку


2. В процессе регистрации новой площадки нужно скачать саповский архив, в котором лежит PHP-файл - sape.php...


... а также внимательно читаем инструкцию по установке данного php-файла на нашем веб-сервере.

3. После установки sape.php, наша TYPO3 директория выглядит примерно так:



4. Теперь нужно позаботиться о том как подключить саповскую библиотеку - sape.php, и вывести ссылки с помощью функции return_links().

Чтобы подключить сапу на каждую страницу сайта можно использовать конфигурационный файл - typo3conf/localconf.php. Добавляем в этот файл следующие строки:

global $sape;
if (!defined('_SAPE_USER')){
    define('_SAPE_USER', '8asdfsg78675sdfg567huyt565v654654a');
}
require_once(realpath($_SERVER['DOCUMENT_ROOT'].'/'._SAPE_USER.'/sape.php'));
$sape = new SAPE_client();

Обратите внимание, мы создали глобальную переменную $sape и присвоили ей экземпляр класса.

Далее создаем в директории fileadmin новый php-файл - sape-links.inc  (где вам удобно, например fileadmin/sape/sape-links.inc, расширение файла именно INC!), который  будет содержать следующие строки для вывода списка или блока ссылок:
<?php
global $sape;
echo "<div class='sape'>";
//$output = $sape->return_links();
$output = $sape->return_block_links();
$output = iconv('windows-1251','utf-8',$output); // перекодировку в utf8 можно сделать и саповскими параметрами, см. документацию
echo $output;
echo "</div>";
?>

Файл который будет выводить саповские ссылки - готов. Осталось последнее - вставка этого файла в контент. Для этого используем плагин - lumophpinclude.

Этот экст легко устанавливается, однако в связи с тем, что lumophpinclude уже давно не обновлялся, он не устанавливается на последние версии TYPO3, ругаясь на несоответствие версии системы. Причина в следующем. Если заглянуть в файл ext_emconf.php плагина (путь - typo3conf/ext/lumophpinclude/ext_emconf.php), то мы там сможем увидеть такие строки:
'depends' => array(
'php' => '4.4.0-5.2.99',
'typo3' => '4.0.0-4.2.99',
)
Как видим, когда экст последний раз обновлялся, то автор предполагал, что он будет работать на всех версиях TYPO3 вплоть до версии - 4.2.99. Расширим этот интервал и заменим 4.2.99 на 6.2.99, например. Теперь в менеджере расширений (Extension Manager) можно нормально активировать данный плагин (нажать плюсик). К фатальным последствиям этот "хак" меня еще никогда не приводил, но на всякий случай поглядывайте в deprication.log.

Теперь можно подключить этот плагин и к TYPO3 шаблону:


Чтобы разместить lumophpinclude на странице сайта - выбирайте вставку плагина и настраивайте его. Вот так, можно подключить наш sape-links.inc на отдельной странице:


Хочу обратить внимание, что если вы внесете какие-либо изменения в исходный код файла sape-links.inc, то эти изменения не вступят в силу. И если не разобраться, то это может поставить в тупик. Дело в том, что после выбора php-файла, как это показано на рисунке выше, плагин копирует его в свою служебную директорию - uploads/tx_lumophpinclude/sape-links.inc, после чего работает именно с данной копией файла. Лично я переименовывал тот файл который находился в папке fileadmin и заново выбирал его в настройках плагина.

Если вам нужно разместить ссылки на большом количестве страниц, то вставка плагина lumophpinclude на каждую страницу может занять много времени. Для быстрого размещения sape-links.inc на всех страницах сайта одновременно нужно поступить следующим образом:
  • В любой из системых папок создать запись контента с типом - Plugin->Lumophpinclude
  • Создать новый тайповский lib объект в TYPO3 шаблоне, например:
# SAPE
lib.sape = RECORDS
lib.sape.tables = tt_content
lib.sape.source = 902 # где 902 - номер контентной записи
  • Закрепить (подмапить) lib объект к какому-то html фрагменту страницы. Как это выполнить - это уже на ваше усмотрение. Тут все зависит от вашего шаблонизатора.

суббота, 9 февраля 2013 г.

Константы TYPO3 в условиях IF


Как известно, шаблон TYPO3 состоит из двух основных блоков - константы и тело typoscript:


Иногда возникает вопрос - как в зависимости от значения константы выполнить тот или иной фрагмент скрипта? Все очень просто.

Допустим, у нас есть константа - addThis, которой присвоено значение - 1. Другими словами в блоке Constants имеется следующая запись:
addThis = 1

Пусть значение 1 означает, что на сайте нужно показывать кнопки, довольно популярного , сервиса - AddThis, а значение 0 - означает обратное, т.е. кнопки AddThis показывать не нужно.

Реализовать сравнение нашей константы addThis с каким-либо значением можно с помощью следующей конструкции typoscript :

[globalVar = LIT:0<{$addThis}]
# Константа больше нуля - показывать AddThis
lib.addThis = HTML
lib.addThis.value(
<!-- AddThis Button BEGIN -->
<div class="addthis_toolbox addthis_default_style ">
<a class="addthis_button_preferred_1"></a>
<a class="addthis_button_preferred_2"></a>
<a class="addthis_button_preferred_3"></a>
<a class="addthis_button_preferred_4"></a>
<a class="addthis_button_compact"></a>
<a class="addthis_counter addthis_bubble_style"></a>
</div>
<script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js#pubid=ra-4f0789fdfhs432acc001c493f73"></script>
<!-- AddThis Button END -->
)
[else]
# Константа 0 или меньше нуля - не показывать AddThis
lib.addThis >
[global]

суббота, 2 февраля 2013 г.

Как показать ID страниц в админке TYPO3


Порой, на сайтах задалбывает находить страницу с нужным ID (uid).
Облегчить себе жизнь можно следующим typoscript:

options {
  pageTree.showPageIdWithTitle = 1
}
Куда этот скрипт вставить (User Admin, выбор пользователя, закладка Options):





Что получаем на выходе:

О себе

Моя фотография
Вадим Гиркало
Фрилансер, веб-разработчик сайтов на базе бесплатной, мощнейшей и очень гибкой CMS системы - TYPO3.
Просмотреть профиль

Позвонить мне в Skype

TOP - 3