Искать  
 
   
 
Не отрабатывает модуль SQL
Отправлено: 16 Август 2013 09:54 A.M.   [ Игнорировать ]
Новичок
Rank
Всего сообщений:  18
Зарегистрирован  2013-08-02

Этот код не выдает ничего:

{exp:query sql="
    SELECT c.cat_name
    FROM exp_categories_posts AS cp
    LEFT JOIN exp_categories AS c USING (cat_id)
    WHERE (cp.entry_id == {entry_id}) AND (c.cat_name == {group_title})"
}
    {if no_result}
        
<p>доступа нет</p>
    
{if:else}
        
<p>доступ есть</p>
    
{/if}
{
/exp:query} 

Грешил на работу модуля, вставил проверку перед предыдущим кодом в этом же шаблоне:

<p>Проверка работы sql-модуля.</p>
    
{exp:query sql="SELECT func_get_cnt_entryes_on_weblog_id(8) as number_of_entries"}
    
<p>{number_of_entries}</p>
    
{/exp:query} 

Всё отрабатывает.

В чём может быть проблема?

Профиль
 
 
Отправлено: 16 Август 2013 11:41 A.M.   [ Игнорировать ]   [ # 1 ]
Member
RankRankRank
Всего сообщений:  172
Зарегистрирован  2010-07-13

а entry_id откуда? Если из channel_entryes - стоит ли параметр parse=“inward”?

 Подпись 

booooring…

Профиль
 
 
Отправлено: 19 Август 2013 01:20 A.M.   [ Игнорировать ]   [ # 2 ]
Администратор
Avatar
RankRankRankRank
Всего сообщений:  644
Зарегистрирован  2009-04-11

Попробуйте вместо тегов которые в запросе, указать настоящие данные. Если всё нормально, то значит не парсятся теги в запросе.

 Подпись 

Няшка, программист, фотограф, подкастер, блоггер и CEO студии FDCore Studio

Профиль
 
 
Отправлено: 19 Август 2013 12:59 P.M.   [ Игнорировать ]   [ # 3 ]
Новичок
Rank
Всего сообщений:  18
Зарегистрирован  2013-08-02

а entry_id откуда? Если из channel_entryes - стоит ли параметр parse=“inward”?

Из {exp:weblog:entries}, внутри которого {exp:query}, о котором речь.

Попробуйте вместо тегов которые в запросе, указать настоящие данные. Если всё нормально, то значит не парсятся теги в запросе.

Нет результата и если напрямую данные забить.

Написал функцию в sql, переписал код в шаблоне следующим образом:

{exp:query sql="SELECT func({entry_id}, {group_title}) as access_group"}
               {if access_group}
<p>{access_group}</p>
              
{if:else}
               
<p>доступа нет</p>
             
{/if}
        {
/exp:query} 

По-умолчанию тоже не работает. Подстановка реальных данных показала, что не парсится тег {group_title}.

Что я сделал неправильно? Что-то с “иерархией” тегов не так? Судя по документации {group_title} является глобальной переменной. Или я что-то путаю?

Профиль
 
 
Отправлено: 19 Август 2013 03:41 P.M.   [ Игнорировать ]   [ # 4 ]
Администратор
Avatar
RankRankRankRank
Всего сообщений:  644
Зарегистрирован  2009-04-11

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

 Подпись 

Няшка, программист, фотограф, подкастер, блоггер и CEO студии FDCore Studio

Профиль
 
 
Отправлено: 19 Август 2013 05:45 P.M.   [ Игнорировать ]   [ # 5 ]
Member
RankRankRank
Всего сообщений:  172
Зарегистрирован  2010-07-13

тогда только использовать трюк с embed

 Подпись 

booooring…

Профиль
 
 
Отправлено: 20 Август 2013 07:28 A.M.   [ Игнорировать ]   [ # 6 ]
Новичок
Rank
Всего сообщений:  18
Зарегистрирован  2013-08-02
Gotcha - 19 Август 2013 05:45 P.M.

тогда только использовать трюк с embed

Передать глобальное значение вместе с подкачкой шаблона? То есть, если препарируемый шаблон называется, к примеру tpl_reader, делаем следующее:

{embed="{tpl_current}/tpl_reader" access_group="{group_title}"

А в sql-теге подсасываем переменную через {embed:access_group} ?

Если да, то не сработало.

Профиль
 
 
Отправлено: 20 Август 2013 07:53 A.M.   [ Игнорировать ]   [ # 7 ]
Новичок
Rank
Всего сообщений:  18
Зарегистрирован  2013-08-02

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

{if group_title == '{categories}category_name{/categories}'

Но код не решает задачу, если присвоено несколько категорий. Отсюда и начались пляски.

Профиль
 
 
Отправлено: 22 Август 2013 01:03 A.M.   [ Игнорировать ]   [ # 8 ]
Администратор
Avatar
RankRank
Всего сообщений:  92
Зарегистрирован  2012-04-13

Группа пользователя: Super Admins
Категория записи: Super Admins, Москва

article.html

{exp:weblog:entries url_title='t22092013'}
    
<h1>{title}</h1>
    
{embed='{tpl_current}/tpl_reader' var='{categories}{if group_title == category_name}1{/if}{/categories}'}
{
/exp:weblog:entries} 

tpl_reader.html

{if embed:var != ''}
    доступ есть
{if
:else}
    доступа нет
{
/if} 

Хотя лучше написать плагин, как по мне =)

 Подпись 

[ EElover / FDCore ]

Профиль
 
 
Отправлено: 29 Август 2013 10:46 A.M.   [ Игнорировать ]   [ # 9 ]
Новичок
Rank
Всего сообщений:  18
Зарегистрирован  2013-08-02

L Des, так и у меня работает, а если доступ нужен двум группам? )

По факту все пляски из-за последовательности парсинга переменных. Даже вот такой док есть:

Приложения с файлами
ee-parse-order.pdf  (Размер файла: 31KB - Загрузок: 1123)
Профиль
 
 
Отправлено: 29 Август 2013 12:20 P.M.   [ Игнорировать ]   [ # 10 ]
Новичок
Rank
Всего сообщений:  18
Зарегистрирован  2013-08-02

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

Профиль
 
 
Отправлено: 30 Август 2013 06:18 P.M.   [ Игнорировать ]   [ # 11 ]
Администратор
Avatar
RankRank
Всего сообщений:  92
Зарегистрирован  2012-04-13

icemall, оно и будет работать с любым колличеством групп, указанных в категориях записи =ъ

Категория записи: Super Admins, Premium mebers, Moderators, Москва


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

 Подпись 

[ EElover / FDCore ]

Профиль
 
 
Отправлено: 03 Сентябрь 2013 07:40 A.M.   [ Игнорировать ]   [ # 12 ]
Новичок
Rank
Всего сообщений:  18
Зарегистрирован  2013-08-02

L Des,

Cпасибо тебе, мил человек! Всё заработало ^) Я уже собирался Low Variables покупать, начитался всякого на буржуйском форуме.

Профиль
 
 
Отправлено: 03 Сентябрь 2013 02:45 P.M.   [ Игнорировать ]   [ # 13 ]
Администратор
Avatar
RankRank
Всего сообщений:  92
Зарегистрирован  2012-04-13

Low Variables очень удобен во многих ситуациях кстати. Надо подкаст запилить на тему... Спасибо за идею =]

 Подпись 

[ EElover / FDCore ]

Профиль