Textpattern - на русском языке

форум общения русскоязычных пользователей CMS Текстпаттерн

Вы не зашли.

#1 27-01-2006 10:38:21

marazmus
наш
Откуда: Россия, Октябрьский
Зарегистрирован: 23-01-2006
Сообщений: 217
Вебсайт

как отключить Textile для блока текста в статье?

По ходу использования возникла пара вопросов.

В силу специфики сайта есть такая необходимость - ставить куски кода внутрь статьи.

Проблема с "несанкционированной" заменой кавычек с "программистских" на вычурные решилась вставкой html-тегов
<p><code> код код код </code></p>.

Но остальное внутри кода Текстиль все равно парсит (обрабатывает).

Строчный тег отключения обработки - это тег ==

А вот как сделать блочное отключение обработки текста текстилем - хотя бы для кусков кода?
Спасибо заранее за ответ.

!
Извините за невнимательность.
Что-то глючило в процессе ввода текста, т.к. набирался из многих источников.
На самом деле - по крайней мере, у меня на локалхосте в русской сборке 4.03 Текстиль не обрабатывает то, что находится в пределах тегов <code> и <pre>.

Но вопрос все равно остается.

Отредактированно marazmus (27-01-2006 11:15:09)

Неактивен

 

#2 27-01-2006 12:30:05

Nicck
ферт
Откуда: Ижевск
Зарегистрирован: 11-05-2005
Сообщений: 536
Вебсайт

Re: как отключить Textile для блока текста в статье?

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

Лучше уж написать текст, оттекстилить, а тотом в полученный html уже руками вставить что нужно, а текстиль вырубить для всей статьи.

Неактивен

 

#3 27-01-2006 13:54:49

marazmus
наш
Откуда: Россия, Октябрьский
Зарегистрирован: 23-01-2006
Сообщений: 217
Вебсайт

Re: как отключить Textile для блока текста в статье?

Спасибо за совет, так и пришлось сделать, на пока.

И еще по этой теме:

Товарищ из буржуинских стран Dunstan Orchard предлагает функцию, которая заменяет "свой" тег <codeins ...> результатом обработки этой функции текстового файла с кодом - программой и т.п.
http://www.1976design.com/blog/archive/ … transform/

Как "внедрить" это в статичные страницы на уровне html, я примерно допер - на этой странице расписан способ:

Код:

<?php
// include the file with the transformation scripts in
include('blog/include/general_transform.php');
 
// grab your post_body from the db, I do it like this:
// $post_body = stripslashes($row['post_body']);
 
// transform all the code listings
$post_body = preg_replace('!<codeins="(.*?)" />!ie', "codeTransform('$1')", $post_body);
 
// transform all the image tags
$post_body = preg_replace('!<imageins="(.*?)" alt="(.*?)" caption="(.*?)" class="(.*?)" link="(.*?)" linktitle="(.*?)" />!ie', "imageTransform('$1', '$2', '$3', '$4', '$5', '$6')", $post_body);
 
// $post_body now contains your complete, transformed post, ready to be printed out:
print $post_body;
?>

А вот как внедрить это в Textpattern, я пока никак не пойму; к тому же нет знаний по php, хотя есть опыт программирования на других языках.
Может, кто-нибудь хотя бы "на пальцах" сможет обьяснить, как эту функцию "запихать" в textpattern?

!
Извиняюсь за путаность обьяснений.
Щас, постараюсь расписать по-другому.

Есть функция на php, текст под рукой.
Ее задача - получить имя текстового файла (ссылку) и обработать его определенным образом; конкретно - сделать список (ul) строк  текста, содержащегося в этом файле.
Потом, если на этот список есть ссылки в css сайта, то он "обрастет красивостями" типа цвета фона, бордюрчиков и т.п., но это неважно пока.
Этот список заменяет собой весь тег <codeins ...>, на который и "натравливается" данная функция.

Из вышеприведенного кода видно, что непосредственно замена тега на сформированный функцией список происходит здесь:

Код:

$post_body = preg_replace('!<codeins="(.*?)" />!ie', "codeTransform('$1')", $post_body);

И касательно самого Текстпаттерна - куда же "засунуть" в код движка этот preg_replace, чтобы не повредить остальному парсингу текста через Текстиль?

p.s. Функция очень сильная, т.к. решает глобальную проблему Текстиля - полную неспособность нормально работать с кусками исходников программ (кода); к тому же есть возможность настраивать подсветку.

Помогите, кто чем может, люди. smile
Спасибо заранее.

Отредактированно marazmus (27-01-2006 14:39:18)

Неактивен

 

#4 27-01-2006 16:41:46

Evgeny
ять
Зарегистрирован: 15-03-2005
Сообщений: 1869

Re: как отключить Textile для блока текста в статье?

marazmus написал:

как сделать блочное отключение обработки текста текстилем

Можно сделать так:
< notextile >
Куски текста, которые не надо "текстилить" помещать внутри этих тэгов.
< /notextile >

Неактивен

 

#5 27-01-2006 16:53:06

Nicck
ферт
Откуда: Ижевск
Зарегистрирован: 11-05-2005
Сообщений: 536
Вебсайт

Re: как отключить Textile для блока текста в статье?

Да, видел я как у Данстана всё красиво...

Можно без проблем реализовать новый тэг <txp:nck_code file="filename.ext" /> который при выводе будет заменяться на то что нужно, а именно на нумерованный список строк (можно ещё и подсветку синтаксиса прикрутить)... это не проблема. Файлы с кусками кода как и где хранить? Заливать через админку как file? Если так то никаких проблем.

Думаю, вооружившить php manul'ом и статьей о написании плагинов для txp ты сможешь прикрутить решение Данстана к нашему любимому движку.

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

Неактивен

 

#6 27-01-2006 21:03:35

marazmus
наш
Откуда: Россия, Октябрьский
Зарегистрирован: 23-01-2006
Сообщений: 217
Вебсайт

Re: как отключить Textile для блока текста в статье?

Ура!
Нашел плагин krl_geshiSyntaxHighlight, использует модуль GeSHi, который нужно качать отдельно и ставить распаковкой.
Все выглядит очень круто, используется просто тег текстпаттерновского типа.
Как смогу установить на свой сайт (на локалхосте работает замечательно), сразу кину  ссылку "на поглядеть".

Правда, проблема с блочным отключением текстиля так и осталась, приходится делать статьи в html - по крайней мере те, которые содержат куски кода.
Тег <notextile> - такое ощущение, что он просто не работает. sad

!!
А вот и обещанная ссылка!
http://mod.worldofgothic.ru/0S_news/30/ … dulya-pozh

С подсветкой нужно работать, это скриптовый язык игры Готика, так что еще предстоит заполнение языкового файла. Но все равно, очень замечательный модуль, этот GeSHi.

В общем, делаем так:
(если не считать дня, потраченного на "разборки" с тем, как это все делается, то все устанавливается "с полпинка")

1) Качаем сам модуль GeSHi

а) здесь - "усеченная" версия, 207 274 байт zip
http://mod.worldofgothic.ru/files/site_ … /geshi.zip

б) или качаем полную версию с документацией, килобайт на 800, с домашней странички модуля:
http://qbnz.com/highlighter/

Файл geshi.php кладем в каталог textpattern, каталог /geshi с модулями подсветки конкретных языков - туда же.

Примечание: В каталоге contrib архива - пара файлов для проверки работы и демонстрации возможностей; плюс простой css-генератор для языка. Но слишком простой - я, честно говоря, "потырил" css из демонстратора, там он формируется гораздо богаче.
Ну и набор готовых языковых раскладок впечатляет - 56 штук.

2) Устанавливаем модуль для textpattern, чтобы использовать GeSHi тегом текстпаттерна - krl_geshiSyntaxHighlight

Пока брать здесь, т.к. ссылка с сайта textpattern.org глючит - 5 417 байт
http://mod.worldofgothic.ru/files/site_ … ighter.txt

устанавливаем через админпанель;

3) Заменяем подправленной версией (или правим сами, под себя и свои предпочтения - разметка через div, использование pre, где лежит модуль GeSHi и т.п.
http://mod.worldofgothic.ru/files/site_ … module.php

В принципе, все; можно попробовать составить простую тестовую статью:

Код:

Пример использования модуля GeSHi.

<txp:krl_geshiSyntaxHighlight language="gothic_script">
instance DIA_Onar_WannaSheep(C_Info)
{
    npc = Bau_900_Onar;
    nr = 10;
    condition = DIA_Onar_WannaSheep_Condition;
    information = DIA_Onar_WannaSheep_Info;
    permanent = TRUE;
    description = "Я хочу купить овцу!";
};
</txp:krl_geshiSyntaxHighlight>

Очень красиво, не так ли?

В превью красоты не видно, но на сайте это выглядит просто здорово.

p.s. Нумерацию строк, которая стоит по умолчанию, я убрал - т.к. при копировании текста кода через выделение к нему добавляются строки вида
#
_пустая строка
что не очень приятно.
А без нумерации - все нормально.
p.p.s. И еще раз отмечу - правим без текстиля.

p.p.p.s. У плагина еще есть режим работы как одиночный тег - с спользованием имени файла как источника текста для разметки. Но пока я этот режим "победить" не смог.
Плюс этого режима - текстиль не "корявит" код, т.к. в тексте статьи только тег вида <txp:krl_geshiSyntaxHighlight language="php" file="files/my_code.txt"> и все.
Минус - текстовые файлы нужно все-таки как-то заливать; подходящий раздел - файлы, но есть опасность нахождения "дыры" в парсинге, если кто-то зальет "хитрый"файл (а может, это просто у меня паранойя smile ).

Все, все, ухожу smile.

Спасибо за поддержку.

Отредактированно marazmus (27-01-2006 21:57:42)

Неактивен

 

#7 29-01-2006 13:34:11

marazmus
наш
Откуда: Россия, Октябрьский
Зарегистрирован: 23-01-2006
Сообщений: 217
Вебсайт

Re: как отключить Textile для блока текста в статье?

Evgeny написал:

marazmus написал:

как сделать блочное отключение обработки текста текстилем

Можно сделать так:
< notextile >
Куски текста, которые не надо "текстилить" помещать внутри этих тэгов.
< /notextile >

Это таки не работает.
Или я торможу.
В любом случае, очень сильно раздражает эта невозможность отключения текстиля. Лучше уж тогда все в html писать. И пропадает весь смысл использования текстиля sad.

В исходнике текстиля (lib/classTextile.php) написано

Version 2.0 beta

- может, есть более новая версия?

!
Нашел немного извратное, но работающее решение, в итоге.
Пишем в html, изначально. Но если уж захочется использовать текстиль в статье, ставим этот хак и радуемся жизни smile.
http://flashrocket.worldoptimizer.com/a … extile-tag

хак - потому что нужно заливать файл на сайт и править иходник publish.php, правда, всего одну строку.

Отредактированно marazmus (29-01-2006 14:12:09)

Неактивен

 

#8 30-01-2006 11:43:55

Evgeny
ять
Зарегистрирован: 15-03-2005
Сообщений: 1869

Re: как отключить Textile для блока текста в статье?

marazmus написал:

Это таки не работает.

похоже - в пределах одного абзаца только работает. Согласен, это не удобно.

Неактивен

 

Board footer

RSS   Rambler's Top100
Powered by PunBB
Textpattern.ru