Модераторы: Aliance, skyboy, MoLeX, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Smarty исходный код шаблона, как его получить? 
V
    Опции темы
StachelDraht
Дата 28.9.2009, 00:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Не Опытный
**


Профиль
Группа: Участник
Сообщений: 429
Регистрация: 19.1.2006

Репутация: нет
Всего: 1



Привет!
Подсткажите пожалуйста, как получить исходный код (source) шаблона?
В smarty есть какая-нибудь функция или надо пользоваться file_get_contents()?



Спасибо!

Это сообщение отредактировал(а) StachelDraht - 28.9.2009, 00:50
PM MAIL   Вверх
Ипатьев
Дата 28.9.2009, 08:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: нет
Всего: 37



Для чего это нужно?
PM MAIL   Вверх
StachelDraht
Дата 28.9.2009, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Не Опытный
**


Профиль
Группа: Участник
Сообщений: 429
Регистрация: 19.1.2006

Репутация: нет
Всего: 1



Хочу более менее понять этот smarty

На данный момент хочу сделать систему словаря на сайте.
Т.е. в шаблоне пишем {$dog} а во время компиляции слово переменная должна быть замена на слово на языке который выбран на сайте.
но тогда по идее надо было бы делать что то типа {$word_dog} что бы можно было искать в шаблоне все переменные начинающие на word а дальше уже регулярными выражениями... Потом поиск в таблице и вывод.

Цитата

Для чего это нужно? 

Вот наверно для этого 

Или я опять не в ту степь думаю?
PM MAIL   Вверх
capitan
Дата 28.9.2009, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 602
Регистрация: 27.2.2005
Где: Москва

Репутация: нет
Всего: 13



если я правильно понял, то http://www.smarty.net/manual/ru/api.fetch.php
PM MAIL WWW ICQ   Вверх
skyboy
Дата 28.9.2009, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: нет
Всего: 260



Цитата(StachelDraht @  28.9.2009,  10:47 Найти цитируемый пост)
Т.е. в шаблоне пишем {$dog} а во время компиляции слово переменная должна быть замена на слово на языке который выбран на сайте.
но тогда по идее надо было бы делать что то типа {$word_dog} что бы можно было искать в шаблоне все переменные начинающие на word а дальше уже регулярными выражениями... 

не совсем ясно, какую роль предполагается отводить шаблонам с шаблонизатором. есть идея сделать шаблон хранилищем слов? откуда берется "компиляция"?
конечная задача - сайт-переводчик?
PM MAIL   Вверх
Ипатьев
Дата 28.9.2009, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: нет
Всего: 37



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

PM MAIL   Вверх
StachelDraht
Дата 28.9.2009, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Не Опытный
**


Профиль
Группа: Участник
Сообщений: 429
Регистрация: 19.1.2006

Репутация: нет
Всего: 1



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

есть таблица в базе с полями id, eng, ger, rus, fin...

и смысл то заключается в том, что бы не присваивать в каком нибудь там index.php нужное слово переменной, а просто в шаблоне писать  к примеру {$word_dog} из чего было бы понятно что перменную которая начинается на word обробатывать как слово которое должно выводится из словаря (словарь - эта самая таблица в базе)
PM MAIL   Вверх
capitan
Дата 28.9.2009, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 602
Регистрация: 27.2.2005
Где: Москва

Репутация: нет
Всего: 13



StachelDraht,  а не проще кидать в сессию версию сайта и делать выборку из нужного поля в базе, а не извращаться со Smarty?  Тем более структура базы это позволяет сделать.

Чтобы {$word_dog}  вывести, эту переменную все равно придется создать
Код

$smarty->assign('word_dog',$word_dog); 


Это сообщение отредактировал(а) capitan - 28.9.2009, 15:54
PM MAIL WWW ICQ   Вверх
Ипатьев
Дата 28.9.2009, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: нет
Всего: 37



Автор, судя по всему, изобретает gettext. Речь о языковых константах, которые, обычно, прописаны в теле шаблона. 
Кстати, как дружить смарти с геттекстом, я не знаю. Надо подумать

capitan, в сессию язык писать нельзя. идентификатор языка должен присутствовать в адресной строке, в любой ее части

Это сообщение отредактировал(а) Ипатьев - 28.9.2009, 16:06
PM MAIL   Вверх
capitan
Дата 28.9.2009, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 602
Регистрация: 27.2.2005
Где: Москва

Репутация: нет
Всего: 13



Ипатьев, Чтобы сдружить Gettext и Smarty как вариант использовать фильтр.
http://www.phpinsider.com/smarty-forum/vie...b51f0bc11#42156

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

Обычно для локализации используют иконки,- нажал и получил нужную локализацию. Или использовать под каждую локализацию поддомен. Тогда точно не потеряется. Хотя встречал сайты, где индефикатор есть в строке. Как пример все тот же http://php.net/

P.S.  вроде похожая тема http://forum.vingrad.ru/forum/topic-233263.html

Это сообщение отредактировал(а) capitan - 28.9.2009, 16:25
PM MAIL WWW ICQ   Вверх
Ипатьев
Дата 28.9.2009, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: нет
Всего: 37



Домен - это тоже часть адресной строки. Доводы про "юзер сотрет" всегда очень смешные. точно так же он может вообще браузер закрыть. Или другой домен набрать.
Передача языка в адресе - это аксиома. Меня удивляет, что по таким очевидным вещам постоянно возникают вопросы. Одному надо 2 дня рассказывать, как SQL запросы составлять. Другому - как к файлам обращаться. Третьему на существование поисковиков глаза открывать. И ведь, что самое странное - не тем, кто вопросы задает, а тем, кто отвечает.

register_prefilter - это, видимо, то, что автор искал.

PM MAIL   Вверх
sTa1kEr
Дата 28.9.2009, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: нет
Всего: 146



Цитата(capitan @  28.9.2009,  17:17 Найти цитируемый пост)
Ипатьев, Чтобы сдружить Gettext и Smarty как вариант использовать фильтр.

Только тут есть одна проблема, xgettext не знает этого синтаксиса, по этому нужно еще и парсер писать.
PM MAIL   Вверх
capitan
Дата 28.9.2009, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 602
Регистрация: 27.2.2005
Где: Москва

Репутация: нет
Всего: 13



обычно я отвечаю так http://lmgtfy.com/?q=smarty+gettext

Ипатьев,  оказывается со Smarty идет block-плагин (block.t.php) для работы с gettext. В шаблоне текст под локализацию выглядит так:
Код

{t}Text to be localized{/t}


PM MAIL WWW ICQ   Вверх
bars80080
Дата 28.9.2009, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: нет
Всего: 315



Цитата(Ипатьев @  28.9.2009,  16:26 Найти цитируемый пост)
Передача языка в адресе - это аксиома.

почему? мне вот совершенно не очевидно. если знаете секрет, поделитесь пожалуйста
PM MAIL WWW   Вверх
capitan
Дата 28.9.2009, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 602
Регистрация: 27.2.2005
Где: Москва

Репутация: нет
Всего: 13



bars80080, У каждого своя позиция. Я например в сессии локализацию держу. И буду держать.
PM MAIL WWW ICQ   Вверх
bars80080
Дата 28.9.2009, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: нет
Всего: 315



нет, ну зачем так резко. если человек говорит что-то, то под его мнением есть какое-то основание. у Ипатьева вроде основания весомые, но я ещё стал адептом его секты и на веру воспринимать не намерян. вот и хочется узнать


во всяком случае я не знаю, где как не в куках или данных в БД (если уже зарегестрированный) хранить язык, выбранный пользователем, если он заходит на сайт. адрес входа ведь в большинстве случаев свободен от всяких переменных
PM MAIL WWW   Вверх
solenko
Дата 28.9.2009, 17:58 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: нет
Всего: 67



Цитата(bars80080 @  28.9.2009,  16:29 Найти цитируемый пост)
мне вот совершенно не очевидно. если знаете секрет, поделитесь пожалуйста

ответ:
Цитата(Ипатьев @  28.9.2009,  15:26 Найти цитируемый пост)
ретьему на существование поисковиков глаза открывать. 



Цитата(bars80080 @  28.9.2009,  16:49 Найти цитируемый пост)
если он заходит на сайт. адрес входа ведь в большинстве случаев свободен от всяких переменных

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


--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
StachelDraht
Дата 28.9.2009, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Не Опытный
**


Профиль
Группа: Участник
Сообщений: 429
Регистрация: 19.1.2006

Репутация: нет
Всего: 1



странно, что не вопрос то горячая тема)

может я опять неверно изъяснился и меня не поняли
вот готовый вариант того что я хочу но без использования smarty
Код

            preg_match_all("/\(word\:([0-9a-zA-Z_]*)\)/", $source, $array);
            
            $query = mysql_query("select
                `string`,
                `".$page['language']."` as `value`
            from `words`
                where `string` in ('".implode("', '", $array[1])."')");
            while($w = mysql_fetch_assoc($query)){
                $html = str_replace("{word:".$w['string']."}", $w['value'], $html);
            }

единственное в запросе может быть ошибка
Код

(word:dog)


PM MAIL   Вверх
Ипатьев
Дата 28.9.2009, 18:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: нет
Всего: 37



И сколько таких запросов на странице будет?
PM MAIL   Вверх
bars80080
Дата 28.9.2009, 19:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: нет
Всего: 315



Цитата(solenko @  28.9.2009,  17:58 Найти цитируемый пост)
Да, храниту в куках нужно, но дополнять все ссылки на сайте идеттификатором языка тоже нужно, чтобы поисковики, которые не будут вам передавать куки могли проиндексировать сайт на всех языках, а не только на дефолтном 

ну вот, по-русски, вменяемо и для детей
PM MAIL WWW   Вверх
StachelDraht
Дата 28.9.2009, 19:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Не Опытный
**


Профиль
Группа: Участник
Сообщений: 429
Регистрация: 19.1.2006

Репутация: нет
Всего: 1



ну скажем 20

плохо?
PM MAIL   Вверх
Ипатьев
Дата 28.9.2009, 19:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: нет
Всего: 37



всего 20 слов на странице? Что ж это за сайт такой, немногословный?
PM MAIL   Вверх
StachelDraht
Дата 28.9.2009, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Не Опытный
**


Профиль
Группа: Участник
Сообщений: 429
Регистрация: 19.1.2006

Репутация: нет
Всего: 1



не все же будет выводиться через так называемый словарь, только какие то определенные слова которые будут вписываться в сам шаблон, остальные вещи модулями, к примеру модуль текстовой части который тоже будет на всех языках
PM MAIL   Вверх
Ипатьев
Дата 28.9.2009, 21:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: нет
Всего: 37



ну, этот модуль ведь тоже будет выполнять запросы?
PM MAIL   Вверх
StachelDraht
Дата 29.9.2009, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Не Опытный
**


Профиль
Группа: Участник
Сообщений: 429
Регистрация: 19.1.2006

Репутация: нет
Всего: 1



Цитата(Ипатьев @ 28.9.2009,  21:25)
ну, этот модуль ведь тоже будет выполнять запросы?

будет

но я все таки хотел бы найти какое то решение
PM MAIL   Вверх
Ипатьев
Дата 29.9.2009, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: нет
Всего: 37



Решение написано выше.
1. Переводить не отдельные слова, а фразы
2. Использовать готовое решение - gettext, а не изобретать свое.
PM MAIL   Вверх
StachelDraht
Дата 29.9.2009, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Не Опытный
**


Профиль
Группа: Участник
Сообщений: 429
Регистрация: 19.1.2006

Репутация: нет
Всего: 1



Ипатьев, понял, спасибо!
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Libraries | Следующая тема »


 




[ Время генерации скрипта: 0.1125 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.