Новичок Вопрос о добавлении элемента массива на страницу (скрипт php) - PullRequest
1 голос
/ 10 июня 2011

Извините меня, если вопрос неясен.

Я - новичок в php, и у меня есть этот скрипт, который я хочу отредактировать.

В этом скрипте дляtheme.

В memberprofile.tpl есть элемент first name $profilearray[0].firstname. Я хочу добавить результат этого элемента также в другой файл .tpl с именем docs.tpl

Iпопытался скопировать и вставить `$profilearray[0].firstname в docs.tpl, но это не сработало.Я заметил, что docs.tpl использует свой собственный $docsarray[0].xxx

Так, ребята, есть идеи, как это сделать?потому что в профиле пользователя есть некоторая информация, которую я хотел бы добавить на странице документации.

Я пытался поиграть с mysql, но не знаю, как использовать один и тот же элемент firstname для обоих memberprofile и docs таблицы

Я уверен, что есть простой способ сделать это.

Вот полный код из memberprofile.tpl, и я хочу показать некоторые из этих данных вэта тема docs.tpl

<p class="gray">
    {$lang112}: <b>{$profilearray[0].firstname}&nbsp;{$profilearray[0].lastname}</b><br>
    {$lang130}: <b>{$profilearray[0].birthday}</b><br>
    {$lang134}: <b>{if $profilearray[0].gender eq "1"}Male{elseif $profilearray[0].gender eq "0"}Female{/if}</b><br>                
    {$lang140}: <b>{$profilearray[0].city}</b> <br>
    {$lang139}: <b>{$profilearray[0].country}</b> <br>
    {$lang113}: <b>{insert name=get_stripped_phrase value=a assign=pdesc details=$profilearray[0].description}{$pdesc}</b> <br>
    {$lang259}: <b><a href="{$profilearray[0].url}" target="_blank">{$profilearray[0].url|stripslashes|truncate:20:"...":true}</a></b> <br>
    {$lang260}: <b>{insert name=get_time_to_days_ago value=var time=$profilearray[0].lastlogin}</b> <br>
    {$lang261}: <b>{insert name=get_time_to_days_ago value=var time=$profilearray[0].addtime}</b>
</p>

Ответы [ 3 ]

1 голос
/ 10 июня 2011
$profilearray

в вашем примере присваивается шаблону smarty до того, как шаблон вызывается каким-то образом, похожим на этот

            $smarty->assign('profilearray',$somearray);

, вам нужно найти настройки, которые в вашем первом файле, затемконечно, это включено во второй вызов шаблона

, но вам непременно следует прочитать документацию smarty , чтобы понять, что вы пытаетесь сделать.

1 голос
/ 10 июня 2011

Чтобы отступить на мгновение ... Есть две части всего этого.Первая часть - это код PHP, который фактически принимает пользовательский ввод, запрашивает базу данных, обрабатывает данные и т. Д. Вторая часть - это файл TPL.В максимально возможной степени файл TPL должен касаться только представления , а не обработки данных, перекрестных ссылок на данные и т. Д.

Все это чтение базы данных и перекрестные ссылкидолжно происходить внутри простого файла PHP, а не внутри TPL.

Чтобы добавить «Сведения об авторе» на страницу «Список документов» (или как вы называете docs.tpl), вам нужно найти код PHP, который поднимает список документов.Найдите код PHP, в котором написано что-то вроде:

$smarty->assign('docsarray',$document_list);

Теперь вы хотите передать more информацию в шаблон smarty (файл TPL), чтобы он мог его отобразить.Что-то вроде:

for($document_list as $index => $doc){
    $owner = $doc['owner'];        // Get the owner of the document
    $profile = getProfile($owner); // Create one of the same things that go into $profilearray elsewhere
    $document_list[$index]['profile'] = $profile; // Modify original array
}
$smarty->assign('docsarray',$document_list);

Затем перейдите в docs.tpl и найдите, где он отображает информацию о каждом документе, и добавьте код шаблона smarty для чтения из новой информации о документе, которую вы добавили.(Подробнее см. Справочную страницу Smarty .)

Например, если docs.tpl показывает таблицу документов, вы можете добавить новый столбец, в котором указаны имя / фамилия автора:

<tr>
    <td>{$docsarray[$index].title}</td>
    <td>{$docsarray[$index].created_date}</td>
    <!-- Next line is new -->
    <td>{$docsarray[$index].profile.firstname} {$docsarray[$index].profile.lastname}</td>
</tr>

Если вам нужно что-то, похожее на «окно профиля», вы тоже можете это сделать.Фактически, используя {include}, вы можете создать profilebox.tpl и использовать его в обоих местах для уменьшения избыточного кода.

1 голос
/ 10 июня 2011

В Smarty есть тег, который вы можете найти в Google по имени {include}, который будет делать то, что вы хотите.http://www.smarty.net/docsv2/en/language.function.include.tpl Используйте этот тег в файле docs.tpl, и все будет в порядке.

...