Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.04.2015, 15:11   #1
Luara
Пользователь
 
Регистрация: 14.04.2015
Сообщений: 29
По умолчанию Закомментировать язык

Добрый день.
Я вот только начала изучать php, но задачи подобного рода на работе мне встречаются. Люди добрые, помогите, пожалуйста))
Заказчик принял решение убрать одну языковую версию сайта. В файле header.tpl я нашла код вот такого вида:
PHP код:
                {foreach from=$LANG_LINKS item=i name=lang}                
                    {if 
$i.current }
                        <
span>{$i.name|truncate:3:'':true}</span>
                    {else}
                        <
a href="{$i.link}rel="changelang">{$i.name|truncate:3:'':true}</a>
                    {/if}
                    
                    {if !
$smarty.foreach.lang.last}
                        <
span>|</span>
                    {/if}
                {/foreach} 
Путем пробы я поняла, что цифра 3 отвечает за длину символов в названии языка)) А я надеялась, что это кол-во переменных, кот. соответствует числу языков.

Подскажите, пож., действительно ли этот код выбирает язык?
И если, да, то по какой переменной?

И вот еще нашла с пом. поиска:
PHP код:
   // назначение ссылок на другие языковые версии
    
$lang_links = array();
        
$db->query("SELECT l.lang_id, l.short_des as lang, l.long_des as name
                FROM t_lang as l
                LEFT JOIN t_tree as t ON t.tr_id='"
.$item."' and t.lang_id=l.lang_id
                LEFT JOIN t_page as p ON p.tr_id=t.tr_id and p.active=1 and p.lang_id = t.lang_id
                LEFT JOIN t_tree_visible as tv ON t.tr_id=tv.tr_id AND tv.lang_id=t.lang_id AND tv.part_id='"
.$part_id."'
                WHERE tv.visible = 1
                ORDER BY l.lang_id"
);
        while (
$row=$db->fetch_hash()) {
      
$path_visible true;
      for (
$i=0$i<count($path); $i++) {
        
$path_visible &= $path_visibles[$path[$i]][$part_id][$row['lang_id']];
      }
      if (
$path_visible){
        
$row['current'] = $lang_id == $row['lang_id'];
        
$row['link'] = "/".($part!=$def_part?$part."/":"").$row['lang']."/".$link_path.$item_info[$item][$lang_id]["link"].'/$QUERY_STRING';
        
$lang_links[$row['lang_id']] = $row;
      }
        }
        
$smarty->assign("LANG_LINKS"$lang_links);

    
// назначение контента в шаблон
        
$smarty->assign("CONTENT"$content);    // контент

        
if (($template=='')) {
            
error (""$lang);
            
$db->close();
            exit;
        }

        
$smarty->assign("LANGS"$langs);    // Если многоязычный сайт, тогда нужно для переключалок
        
$smarty->assign("LANG_ID"$lang_id);    // Текущий язык (для переключалок)
        
$smarty->assign("LANG"$lang);    // Текущий язык (для переключалок) 
Но что нужно сделать для того, что бы закомментировать определенный один язык, мне не понятно... Если кто-то поможет, буду очень признательна

Последний раз редактировалось Luara; 22.04.2015 в 15:21.
Luara вне форума Ответить с цитированием
Старый 22.04.2015, 15:19   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Это вывод всех доступных языков (ну в смысле ссылок на переключение языков), LANG_LINKS — список с данными о языках (название, ссылка).

Так что если вам просто надо убрать ссылку, то ищите где LANG_LINKS заполняется (в контроллере и т.п.).
Но конечно этого вряд ли достаточно, ибо язык никуда не денется, пропадет только ссылка на него.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 22.04.2015 в 15:21.
Alex11223 вне форума Ответить с цитированием
Старый 22.04.2015, 15:19   #3
mv28jam
Старожил
 
Аватар для mv28jam
 
Регистрация: 09.09.2008
Сообщений: 2,624
По умолчанию

По этому идёт цикл.
Код:
$LANG_LINKS
Эта переменная определяет текущий язык.
Код:
$i.current
Это ф-я обрезания длины строки из шаблонизатора.
Код:
|truncate
Язык надо убрать из этого массива - $LANG_LINKS.
Стрелок-охотник
mv28jam вне форума Ответить с цитированием
Старый 22.04.2015, 15:31   #4
mv28jam
Старожил
 
Аватар для mv28jam
 
Регистрация: 09.09.2008
Сообщений: 2,624
По умолчанию

Что в таблице t_lang?
Стрелок-охотник
mv28jam вне форума Ответить с цитированием
Старый 22.04.2015, 16:13   #5
Luara
Пользователь
 
Регистрация: 14.04.2015
Сообщений: 29
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Это вывод всех доступных языков (ну в смысле ссылок на переключение языков), LANG_LINKS — список с данными о языках (название, ссылка).

Так что если вам просто надо убрать ссылку, то ищите где LANG_LINKS заполняется (в контроллере и т.п.).
Но конечно этого вряд ли достаточно, ибо язык никуда не денется, пропадет только ссылка на него.
Мне пока достаточно убрать с главной ссылку на язык, поэтому если бы я ее нашла, я была бы самым счастливым (на сегодня )) ) человеком.

Цитата:
Сообщение от mv28jam Посмотреть сообщение
По этому идёт цикл.
Код:
$LANG_LINKS
Эта переменная определяет текущий язык.
Код:
$i.current
Это ф-я обрезания длины строки из шаблонизатора.
Код:
|truncate
Язык надо убрать из этого массива - $LANG_LINKS.
Спасибо.

К сожалению, пока выхожу по переменным и по ссылкам только на файлы, которые содержат перевод...

Цитата:
Сообщение от mv28jam Посмотреть сообщение
Что в таблице t_lang?
Она используется при получении списка языков. Это пока все, что нашла:
PHP код:
получение списка языков
    $db
->query("SELECT lang_id, short_des, charset FROM t_lang ORDER BY lang_id");
    while(list(
$t_lang_id$t_short_des$t_charset)=$db->fetch_row()) {
        
$langs[$t_lang_id]=$t_short_des;
        
$charsets[$t_lang_id]=$t_charset;
    }
  
$lang $langs[$lang_id]; 

Последний раз редактировалось Stilet; 27.04.2015 в 16:26.
Luara вне форума Ответить с цитированием
Старый 22.04.2015, 16:39   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Удалите запись об этом языке из этой таблицы БД.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 22.04.2015, 16:45   #7
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

В php-коде из первого поста в этом месте:
PHP код:
if ($path_visible){
  
$row['current'] = $lang_id == $row['lang_id'];
  
$row['link'] = "/".($part!=$def_part?$part."/":"").$row['lang']."/".$link_path.$item_info[$item][$lang_id]["link"].'/$QUERY_STRING';
  
$lang_links[$row['lang_id']] = $row;

нужно добавить условие:
PHP код:
if ($path_visible){
  if(
$row['lang_id'] != 1){ // <–  вместо 1 указываем ID языка, который нужно исключить из списка
    
$row['current'] = $lang_id == $row['lang_id'];
    
$row['link'] = "/".($part!=$def_part?$part."/":"").$row['lang']."/".$link_path.$item_info[$item][$lang_id]["link"].'/$QUERY_STRING';
    
$lang_links[$row['lang_id']] = $row;
  }

Andkorol вне форума Ответить с цитированием
Старый 27.04.2015, 15:56   #8
Luara
Пользователь
 
Регистрация: 14.04.2015
Сообщений: 29
По умолчанию

Всем спасибо. Я не успела попрактиковаться, клиент передумал))
Luara вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Закомментировать код Саша1990 Помощь студентам 1 09.04.2015 00:19
Закомментировать код Саша1990 Помощь студентам 4 08.04.2015 23:34
Закомментировать в .rc zvygin1964 Помощь студентам 1 03.03.2015 16:12
Помогите закомментировать задачу alina1995 Общие вопросы C/C++ 3 10.12.2014 19:10