За последние 24 часа нас посетили 62863 программиста и 1742 робота. Сейчас ищут 1133 программиста ...

INCLUDE & Smarty

Тема в разделе "Прочие вопросы по PHP", создана пользователем Zerox, 16 апр 2012.

  1. Zerox

    Zerox Активный пользователь

    С нами с:
    18 янв 2010
    Сообщения:
    123
    Симпатии:
    0
    Фрагмент index.php(первые строки):
    Код (Text):
    1.  
    2. error_reporting(E_ALL);
    3. date_default_timezone_set('Europe/Moscow');
    4. include('../tpl/configs/bd.conf');
    5. define('SMARTY_DIR','../smarty_library/');
    6. require(SMARTY_DIR.'Smarty.class.php');
    7. $smarty = new Smarty ();//объект smarty
    8. $smarty->template_dir='../tpl/templates/admin/';//путь к шаблонам
    9. $smarty->compile_dir='../tpl/templates_c/admin/';
    10. $smarty->config_dir='../tpl/configs/admin/';
    11. $smarty->cache_dir='../tpl/cache/admin/';
    12. $domain = "http://vkanale.tk/";
    13. include('functions.php');
    В functions.php используется переменная $smarty:
    Код (Text):
    1. $smarty->assign("total", $total);
    Появляется errors:
    Код (Text):
    1.  
    2. Notice: Undefined variable: smarty in /usr/home/ssm0014/data/www/vkanale.tk/admin/functions.php on line 155
    3.  
    4. Fatal error: Call to a member function assign() on a non-object in /usr/home/ssm0014/data/www/vkanale.tk/admin/functions.php on line 155
    Help.
     
  2. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    А теперь разбегитесь и спрыгните с крыши дома, чтобы исправить ошибку всей жизни :)
     
  3. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    чего ты злой такой?
     
  4. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Нужда=)
     
  5. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    малая? =)
     
  6. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Самая чиперсная =))
     
  7. Zerox

    Zerox Активный пользователь

    С нами с:
    18 янв 2010
    Сообщения:
    123
    Симпатии:
    0
    иногда бывает правильнее помочь решить проблему
    чем оффтопить
     
  8. html-программист

    html-программист Активный пользователь

    С нами с:
    10 фев 2012
    Сообщения:
    831
    Симпатии:
    4
    Адрес:
    Kiev
    Область видимости переменной
     
  9. Zerox

    Zerox Активный пользователь

    С нами с:
    18 янв 2010
    Сообщения:
    123
    Симпатии:
    0
    Вот благодарю
     
  10. Zerox

    Zerox Активный пользователь

    С нами с:
    18 янв 2010
    Сообщения:
    123
    Симпатии:
    0
    Код (Text):
    1. define('SMARTY_DIR','../smarty_library/');
    2. require(SMARTY_DIR.'Smarty.class.php');
    3. global $smarty;
    4. $smarty = new Smarty ();//объект smarty
    5. $smarty->template_dir='../tpl/templates/admin/';//путь к шаблонам
    6. $smarty->compile_dir='../tpl/templates_c/admin/';
    7. $smarty->config_dir='../tpl/configs/admin/';
    8. $smarty->cache_dir='../tpl/cache/admin/';
    9. $domain = "http://vkanale.tk/";
    Сделал так.
    Ничего не изменилось...
    Что не так?
     
  11. artem-Kuzmin

    artem-Kuzmin Активный пользователь

    С нами с:
    16 фев 2012
    Сообщения:
    809
    Симпатии:
    0
    Вы бы полное содержимое обоих файликов показали
     
  12. Zerox

    Zerox Активный пользователь

    С нами с:
    18 янв 2010
    Сообщения:
    123
    Симпатии:
    0
    200 строк в каждом
    норм?

    Добавлено спустя 1 минуту 46 секунд:
    в общем, вызываю функцию
    Код (Text):
    1.  
    2. if(isset($_GET['numb'])){
    3.     all_articles_of_release();
    4. }
    Соответственно функция находится в файле functions.php:
    Код (Text):
    1. function all_articles_of_release(){
    2.         $query = "SELECT * FROM `articles` WHERE `rel_id`=".$_GET['numb']." ORDER BY `Id` DESC";
    3.         $sql = mysql_query($query) or die(mysql_error());
    4.         $total = mysql_num_rows($sql);
    5.         $smarty->assign("total", $total);
    6.         while ($row = mysql_fetch_assoc($sql)) {
    7.             $text = $row['text'];
    8.             $text = preg_replace("|<[^>]*?>|s", "", $text);
    9.             $counttext = 50; $sep = ' ';
    10.             $words = explode($sep, $text);
    11.             if ( count($words) > $counttext )
    12.                 $text = join($sep, array_slice($words, 0, $counttext));
    13.                 $row['text'] = $text."...";
    14.                 $art[] = $row;
    15.         $smarty->assign("art_arr", $art);
    16.         }
    17.         $arr_meta_tags['title'] = "Газета Видеоканал | Статьи номера".$_GET['numb'];
    18.         $arr_meta_tags['keywords'] = "Ключевые слова";
    19.         $arr_meta_tags['description'] = "Описание";
    20.         $main_tpl = $smarty->fetch("articles.tpl");
    21. }
     
  13. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    не огорчайся, до свадьбы авось подростет. ;)
     
  14. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Да вот надеюсь каждый день сижу =) Молю ее, рости моя хорошая =)
     
  15. Zerox

    Zerox Активный пользователь

    С нами с:
    18 янв 2010
    Сообщения:
    123
    Симпатии:
    0
    Оффтоп прекращаем
    Да у меня действительно кривой код. Да может быть он неудобный. Но уж как умею, как научили.
    Был бы очень благодарен, если бы действительно помогли, потому что не знаю что с этим сделать.
    А вообще был бы еще благодарнее, если бы помогли сделать код правильнее.
     
  16. html-программист

    html-программист Активный пользователь

    С нами с:
    10 фев 2012
    Сообщения:
    831
    Симпатии:
    4
    Адрес:
    Kiev
    Попробуй здесь:
    сделать так:
    Код (PHP):
    1. $smarty = new Smarty ();
    2. $smarty->assign("total", $total); 
    а еще лучше так:
    Код (PHP):
    1. function all_articles_of_release($smarty) 
    или даже так:
    Код (PHP):
    1. function all_articles_of_release(&$smarty) 
    и функцию вызывай так:
    Код (PHP):
    1. all_articles_of_release($smarty) 
     
  17. Zerox

    Zerox Активный пользователь

    С нами с:
    18 янв 2010
    Сообщения:
    123
    Симпатии:
    0
    Вы знакомы со Smarty? По моему это будет не правильно:
    у меня дублируется шаблон.
    Да и не работает эта затея, много левых ошибок.
    Суть в том, что до того, как я не вынес эти куски кода в функции и в отдельный файл - все работало.
     
  18. html-программист

    html-программист Активный пользователь

    С нами с:
    10 фев 2012
    Сообщения:
    831
    Симпатии:
    4
    Адрес:
    Kiev
    Ну так у тебя в функции, $smarty - обычная переменная, а не объект класса. А ты пытаешься вызвать метод этого не объекта. Значит надо в функции сделать из этой переменной объект, прежде чем вызывать его методы.
     
  19. Zerox

    Zerox Активный пользователь

    С нами с:
    18 янв 2010
    Сообщения:
    123
    Симпатии:
    0
    Появляются ошибки вообще не связанные с этим. Шаблон не может загрузить.
     
  20. html-программист

    html-программист Активный пользователь

    С нами с:
    10 фев 2012
    Сообщения:
    831
    Симпатии:
    4
    Адрес:
    Kiev
    Я наверное чего-то пропустил?
     
  21. Zerox

    Zerox Активный пользователь

    С нами с:
    18 янв 2010
    Сообщения:
    123
    Симпатии:
    0
    Можно просто как-то по-другому отделить кусок кода?
     
  22. Ke1eth

    Ke1eth Активный пользователь

    С нами с:
    16 мар 2012
    Сообщения:
    1.073
    Симпатии:
    11
    Адрес:
    заблудилса
    сделай просто так:
    Код (PHP):
    1. function all_articles_of_release(&$smarty){ дальше твоя функция} 
    вызывай
    Код (PHP):
    1. all_articles_of_release($smarty) 
    должно помочь, ибо передашь в функцию указатель на объект, однако у тебя дальше будет свистопляска с $main_tpl :)
     
  23. Zerox

    Zerox Активный пользователь

    С нами с:
    18 янв 2010
    Сообщения:
    123
    Симпатии:
    0
    Спасибо, сработало.
    Дублировался шаблон из-за моей глупости.
    еще раз вызов функции Smarty() был лишний
     
  24. html-программист

    html-программист Активный пользователь

    С нами с:
    10 фев 2012
    Сообщения:
    831
    Симпатии:
    4
    Адрес:
    Kiev
    Так сработало:
    А так не срабатывало?
     
  25. Zerox

    Zerox Активный пользователь

    С нами с:
    18 янв 2010
    Сообщения:
    123
    Симпатии:
    0
    Код (Text):
    1.     $smarty = new Smarty ();
    2.     $smarty->assign("total", $total);
    вот так не сработало