четверг, 23 июля 2015 г.

Разворачиваем TYPO3 на Windows 8

Ох, как давно я не писал сюда. Уже некоторые даже звонят и спрашивают - занимаюсь ли я TYPO3 ещё? На всякий случай всем хочу сказать, что TYPO3 - это любовь на всю жизнь! В блог я могу и не писать по разным причинам, но TYPO3 занимался, занимаюсь и заниматься буду.
Теперь по теме. По различным причинам, но назрел у меня вопрос развертывания TYPO3 на моей локальном компьютере, а конкретнее - на Windows 8. В принципе ничего военного, но, как обычно, есть свои нюансы.

Выбираем инсталлер (Installer)

Идем на http://typo3.org/download/ и видим такой список:


Почему-то, для себя я выбрал первый вариант - Bitnami и потом не пожалел. Очень обрадовался когда увидел там почти свеженькие сборки 7.3.0 и 6.2.13



Установка и настройка инсталлера

Процесс установки не вызвал никаких проблем. По ходу дела я выбрал также установку phpmyadmin, что позже стало даже полезным.

Итак, после установки в директорию C:\Bitnami\typo3\ увидим такую структуру:
23.07.2015  10:31    <DIR>          apache2
23.07.2015  14:56    <DIR>          apps
23.07.2015  10:27    <DIR>          common
23.07.2015  18:08    <DIR>          imagemagick
23.07.2015  10:27    <DIR>          img
23.07.2015  10:30    <DIR>          licenses
23.07.2015  10:26    <DIR>          mysql
23.07.2015  10:31    <DIR>          php
23.07.2015  10:30    <DIR>          scripts
23.07.2015  10:27    <DIR>          sqlite
26.06.2015  12:58    manager-windows.exe <= это запускалка мускула и апача!

Самое интересное происходит в папке apps. Там есть еще 2 папки - phpmyadmin и typo3. Вот тут-то я и понял, что каждый сайт в данном инсталлере играет роль приложения (application). Чтобы каждый сайт имел приятный url, я полез C:\Bitnami\typo3\apache2\conf\bitnami\bitnami-apps-vhosts.conf  и добавил следующие строки:

Include "C:/Bitnami/typo3/apps/typo3/conf/httpd-vhosts.conf"
Include "C:/Bitnami/typo3/apps/phpmyadmin/conf/httpd-vhosts.conf"

а в файлах httpd-vhosts.conf описал виртуальные хосты, например для phpmyadmin:

<VirtualHost *:80>
    ServerName phpmyadmin.example.com
    ServerAlias www.phpmyadmin.example.com
    DocumentRoot "C:\Bitnami\typo3/apps/phpmyadmin/htdocs"
    Include "C:\Bitnami\typo3/apps/phpmyadmin/conf/httpd-app.conf"
</VirtualHost>

и для TYPO3:

<VirtualHost *:80>
    ServerName typo3_7.com
    ServerAlias www.typo3_7.com
    DocumentRoot "C:\Bitnami\typo3/apps/typo3/htdocs"
    Include "C:\Bitnami\typo3/apps/typo3/conf/httpd-app.conf"
</VirtualHost>

Думаю, что само-собой понятно, что домены phpmyadmin.example.com и typo3_7.com я добавил в hosts:

127.0.0.1 phpmyadmin.example.com
127.0.0.1 typo3_7.com

После перезапуска apache мои локальные сайты заработали под именами phpmyadmin.example.com и typo3_7.com.

После этого я сразу задался вопросом, а что если мне нужно будет поднять еще одну TYPO3, но только уже другой версии, например 6.3.14.

Я сделал всё по аналогии. В директории app создал еще одну папку - typo3test, залил в неё содержимое папки apps/typo3, удалил всё содержимое htdocs и typo3_src, исправил все пути в конфигурационных файлах директории typo3test/conf и проделал установку TYPO3 с нуля по всем правилам. Т.е. в typo3_src распаковал ядро от 6.3.14, а в htdocs сделал симлинки на typo3_src. Windows 8 позволяет делать симлинки специальной командой - mklink. Вот эти команды:

mklink /D typo3_src "C:/Bitnami/typo3/apps/typo3test/typo3_src"
mklink /D typo3 "C:/Bitnami/typo3/apps/typo3test/typo3_src/typo3"
mklink index.php "C:/Bitnami/typo3/apps/typo3test/typo3_src/index.php"

Про создание БД я не пишу, там всё понятно. Паролем root-а от mysql, будет тот пароль который вы вводили на этапе установки Bitnami.

В целом установка проходит гладко. Но...

Настройка ImageMagick

Когда я пошел в InstallTool/Test setup, чтобы проверить работу ImageMagick, который исправно работает для директории apps/typo3, я с удивлением обнаружил что тут, в папке apps/typo3test он уже не работает, хотя пути к IM я прописал точно такие же как и для первого экземпляра TYPO3. И тут началось...

Для начала я поставил IM как отдельное приложение. Скачал ImageMagick-6.9.1-9-Q16-x86-dll.exe с родного сайта и установил его. Это проблему не решило, хотя convert.exe запускался из командной строки на раз.

После нескольких часов изысканий я обнаружил интересный факт. Когда выполняешь команду: convert.exe -verbose pic-1.jpg pic-1.png от лица администратора компьютера - утилита работает, а если от обычного пользователя, то выдает ошибку: convert.exe: no decode delegate for this image format...

Но, что интересно, так было с convert.exe от Bitnami (C:\Bitnami\typo3\imagemagick\convert.exe), но не с convert.exe от IM, который в любой ситуации отрабатывал без проблем.

Поскольку я не являюсь знаком Windows, то я не стал искать причину такого странного поведения, а поступил очень просто - прописал в TYPO3 пути к другой версии IM. А именно, в файле typo3conf\LocalConfiguration.php сделал такие настройки:

'GFX' => array(
'colorspace' => 'RGB',
'im' => 1,
'im_mask_temp_ext_gif' => 1,
//'im_path' => 'C:/Bitnami/typo3/imagemagick/',
//'im_path_lzw' => 'C:/Bitnami/typo3/imagemagick/',
'im_path' => 'C:/Program Files (x86)/ImageMagick-6.9.1-Q16/',
  'im_path_lzw' => 'C:/Program Files (x86)/ImageMagick-6.9.1-Q16/',
'im_v5effects' => 1,
'im_version_5' => 'im6',
'image_processing' => 1,
'jpg_quality' => '80',
),

И, о чудо! Всё заработало! Теперь я могу иметь сколько угодно локальных TYPO3! Даже у себя на даче, где пока нет интернета, я смогу иногда поработать.

четверг, 17 октября 2013 г.

Если картинки на сайте темнее оригинала


Впервые столкнулся с необычным явлением - картинки на TYPO3-сайте выглядят несколько темнее, чем те оригиналы, которые я загружал. Поспешу сказать, что сама TYPO3 тут абсолютно ни при чём. Она "виновата" лишь в том, что для всех манипуляций с картинками использует графические библиотеки IM (ImageMagick) или GM (GraphicsMagick). В моём случае это был ImageMagick. Вначале я решил исследовать на эту тему все настройки TYPO3 в разделе Install/All Configuration. Там меня заинтересовал параметр - colorspace, значение которого было - RGB, а коментарий к параметру:

  1. String: Specifiy the colorspace to use. Some ImageMagick versions (like 6.7.0 and above) use the sRGB colorspace, so all images are darker then the original
  1. Possible Values: CMY, CMYK, Grey, HCL, HSB, HSL, HWB, Lab, LCH, LMS, Log, Luv, OHTA, Rec601Luma, Rec601YCbCr, Rec709Luma, Rec709YCbCr, RGB, sRGB, Transparent, XYZ, YCbCr, YCC, YIQ, YCbCr, YUV

До конца не поверив, что решение так быстро найдено, я почитал мануал по IM и наткнулся на такой текст:

...In the above example, the result is darker than the original, because the channels were separate as linear gray and subsequently combined as linear color. In order to return the channels back to sRGB, one must change the colorspace from RGB back to sRGB after the -combine step.

Т.е. все пути вели к значению sRGB. После того, как я поменял RGB на sRGB в файле конфигурации (typo3conf/LocalConfiguration.php)  появилась такая строка:
'GFX' => array(
'colorspace' => 'sRGB', 'gdlib_png' => 1,
'im_combine_filename' => 'composite',
'jpg_quality' => '80',
),
 И о чудо! Картинки стали светлее!

p.s. После смены значения параметра colorspace, TYPO3 может какое-то время заниматься переконвертацией всех картинок в соответствии с новыми графическими настройками, поэтому сайт может вести себя не совсем адекватно. В моем случае это был абсолютно белый экран, который пропал минут через 5.


вторник, 1 октября 2013 г.

Константы TYPO3 в шаблоне FLUID


При формировании меню с помощью FLUID, а точнее вьюхелпером - page.menu из пакета VHS, столкнулся с задачей передачи значения константы TYPO3 в качестве одного из параметров вьюхелпера.

Вот как выглядел viewhelper изначально:

<v:page.menu showHidden="1" doktypes="3" classCurrent="" classActive="" classFirst="" classLast="last" pageUid="26">
<ul class="socicons-container">
<f:for each="{menu}" as="menuLink" iteration="menuIterator">
<li {f:if(condition: menuIterator.isLast, then: 'class="last"')}>
<a href="{menuLink.link}" title="{menuLink.title}" target="{menuLink.target}">
<img src="fileadmin/tmpl/florian/Resources/Public/images/icons/{menuLink.subtitle}" width="30" height="30" alt="{menuLink.title}" />
</a>
</li>
</f:for>
</ul>
</v:page.menu>

тут меню формируется на основании страниц, которые содержатся в системной папке с id=26.

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

Итак, создаем TYPO3-константу:

socialIcons = 26


Как же ее значение использовать вьюхелпером? Для этого нужен промежуточный этап. Сначала значение данной константы помещаем в объект lib:

lib.constants.socialIcons.id = {$socialIcons}

А вот значение параметра lib внутри вьюхелпера можно получить с помощью другого вьюхелпера - var.typoscript. В итоге получаем следующую конструкцию:

<v:page.menu showHidden="1" doktypes="3" classCurrent="" classActive="" classFirst="" classLast="last" pageUid="{v:var.typoscript(path: 'lib.constants.socialIcons.id')}">
<ul class="socicons-container">
<f:for each="{menu}" as="menuLink" iteration="menuIterator">
<li {f:if(condition: menuIterator.isLast, then: 'class="last"')}>
<a href="{menuLink.link}" title="{menuLink.title}" target="{menuLink.target}">
<img src="fileadmin/tmpl/florian/Resources/Public/images/icons/{menuLink.subtitle}" width="30" height="30" alt="{menuLink.title}" />
</a>
</li>
</f:for>
</ul>
</v:page.menu>


P.S. Т.к. в примере используется пакет VHS, то не забывайте подключать его с помощью - {namespace v=Tx_Vhs_ViewHelpers} в начале html-шаблона.



О себе

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

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

TOP - 3