Skocz do zawartości
prypal

potrzebuje pomocy z przekładem SMARTY na kod PHP

Polecane posty

Witam, od jakiegoś czasu walcze metodą prób i błędów z przekładem kodu

SMARTY na kod PHP ale za chiny nie jestem wstanie tego ogarnąć.

 

 

Smarty wygląda tak

{$users[$i.user_id].username}

oraz

{foreach from=$f.categories item=e}{foreach from=$e item=c name=foo}{$categories[$c].name}{if !$smarty.foreach.foo.last}{/if}{/foreach}{/foreach}

Osobe która pomoże jestem wstanie wesprzeć małą dotacją.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Wgl nie wiem co ty chcesz zrobić...

 

Po co przekładać "smarty" na php. W sumie lepiej nie używać smartów, chyba że takich które potrafią cachować szablony. Nie są wcale bardziej wygodne niż zwykłe <?php $zmienna; ?> a serwer zostanie mniej obciążony.

Edytowano przez PrecelusMaximus (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Dzieki za odpowiedź oraz sugestie, chodzi o to że mam skrypt napisany pod smarty, ale niektóre elementy są includowane z php

część kodów udało mi się przełożyć a część nie, dla przykładu napisze jeden poniżej:

{$currency.symbol}{$i.price}

na

'.$currency['symbol'].$i['price'].'

Napisze tylko tyle że nie jestem programistą

 

 

 

Kto pomoże stawiam, wóde! :rolleyes:

Edytowano przez prypal (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Część która odpowiada za SMARTY

  <ul id="weekly-featured-items">
                {if $weeklyItems}
                  {foreach from=$weeklyItems item=i}
            <li class="thumbnail">
              <a href="/{$languageURL}items/{$i.id}/{$i.name|url}"><img data-tooltip="{$i.name|escape}" alt="{$i.name|escape}" class="landscape-image-magnifier preload no_preview" data-item-author="by {$users[$i.user_id].username}" data-item-category="{foreach from=$i.categories item=e}{foreach from=$e item=c name=foo}{$categories[$c].name} {if !$smarty.foreach.foo.last} \ {/if}{/foreach}{/foreach}" data-item-cost="{$currency.symbol}{$i.price}" data-item-name="{$i.name|escape}" data-preview-height="" data-preview-url="{$data_server}uploads/items/{$i.id}/preview.jpg" data-preview-width="" src="{$data_server}uploads/items/{$i.id}/{$i.thumbnail}" title="" border="0" width="80" height="80"></a>
            </li>
                 {/foreach}
                {/if}
  </ul>

Część przełożona na PHP

 if(is_array($items)) {
        $text .= '<ul id="weekly-featured-items">';
        foreach($items as $i) {
            $text .= '<li class="thumbnail"><a href="/'.$languageURL.'items/'.$i['id'].'" title="'.htmlspecialchars($i['name']).'"><img data-tooltip="'.htmlspecialchars($i['name']).'" alt="'.htmlspecialchars($i['name']).'" class="landscape-image-magnifier preload no_preview" data-item-author="" data-item-category="" data-item-cost="'.$currency['symbol'].$i['price'].' " data-item-name="'.htmlspecialchars($i['name']).'" data-preview-height="" data-preview-url="'.DATA_SERVER.'/uploads/items/'.$i['id'].'/preview.jpg" data-preview-width="" src="'.DATA_SERVER.'/uploads/items/'.$i['id'].'/'.$i['thumbnail'].'" title="" border="0" width="80" height="80"></a></li>';
        }
        $text .= '</ul>';
    }

Potrzebuje przełożyć ze smarty na php, ten kod:

{$users[$f.user_id].username}

{foreach from=$f.categories item=e}{foreach from=$e item=c name=foo}{$categories[$c].name} {if !$smarty.foreach.foo.last}{/if}{/foreach}{/foreach}
Edytowano przez prypal (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Czemu Ty z tego taką sieczkę robisz? Po co wciskasz HTML do zmiennej? Poza tym, jakbyś napisał jeszcze co nie działa, byłoby super.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

 

echo $users[$f['user_id']]['username'];

foreach ($f['categories'] as $e) {
  foreach ($e as $c) {
    echo $categories[$c]['name'];
  }
}

 

Tamto last ominąłem bo do niczego nie jest wykorzystywane.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
echo $users[$f['user_id']]['username'];

foreach ($f['categories'] as $e) {
  foreach ($e as $c) {
    echo $categories[$c]['name'];
  }
}

Tamto last ominąłem bo do niczego nie jest wykorzystywane.

 

 

Przede wszystkim dziękuje wam za poświęcony czas, sam się nad tym głowiłem pare dni, wymyślając tuziny kombinacji..

 

Jeśli chodzi o to pierwsze, mniej skomplikowane działa pieknie, sęk w tym że musze wstawić to do HTML, więc teraz to wygląda tak:

" '.$users[$f['user_id']]['username'].' "

Całościowo to wygląda tak:

 

<img data-tooltip=" '.htmlspecialchars($i['name']).' " alt=" '.htmlspecialchars($i['name']).' " class="landscape-image-magnifier preload no_preview" data-item-author="by '.$users[$f['user_id']]['username'].' " data-item-category="" data-item-cost=" '.$currency['symbol'].$i['price'].' " data-item-name=" '.htmlspecialchars($i['name']).' " data-preview-height="" data-preview-url="'.DATA_SERVER.'/uploads/items/'.$i['id'].'/preview.jpg " data-preview-width="" src="'.DATA_SERVER.'/uploads/items/'.$i['id'].'/'.$i['thumbnail'].'" title="" border="0" width="80" height="80">

 

Schody zaczynają się z tym drugim bardziej zawiłym,

{foreach from=$f.categories item=e}{foreach from=$e item=c name=foo}{$categories[$c].name}{if !$smarty.foreach.foo.last}{/if}{/foreach}{/foreach}

Jak wstawić

foreach ($i['categories'] as $e) {
  foreach ($e as $c) {
    echo $categories[$c]['name'];
  }
}

<img data-item-category="tu">

Edytowano przez prypal (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Chodzi o to by wstawić ten kod wewnątrz HTML

 

{foreach from=$i.categories item=e}{foreach from=$e item=c name=foo}{$categories[$c].name} {if !$smarty.foreach.foo.last} \ {/if}{/foreach}{/foreach}

 

 

 

Tak wygląda kod ze SMARTY

 

<ul id="weekly-featured-items">
{if $weeklyItems}
{foreach from=$weeklyItems item=i}
<li class="thumbnail">
<a href="/{$languageURL}items/{$i.id}/{$i.name|url}"><img data-tooltip="{$i.name|escape}" alt="{$i.name|escape}" class="landscape-image-magnifier preload no_preview" data-item-author="by {$users[$f.user_id].username}" data-item-category="{foreach from=$i.categories item=e}{foreach from=$e item=c name=foo}{$categories[$c].name} {if !$smarty.foreach.foo.last} \ {/if}{/foreach}{/foreach}" data-item-cost="{$currency.symbol}{$i.price}" data-item-name="{$i.name|escape}" data-preview-height="" data-preview-url="{$data_server}uploads/items/{$i.id}/preview.jpg" data-preview-width="" src="{$data_server}uploads/items/{$i.id}/{$i.thumbnail}" title="" border="0" width="80" height="80"></a>
</li>
{/foreach}
{/if}
</ul>

 

 

A tak wygląda przełożony na PHP

 

if(is_array($items)) {
$text .= '<ul id="weekly-featured-items">';
foreach($items as $i) {
$text .= '<li class="thumbnail"><a href="/'.$languageURL.'items/'.$i['id'].'" title="'.htmlspecialchars($i['name']).'"><img data-tooltip="'.htmlspecialchars($i['name']).'" alt="'.htmlspecialchars($i['name']).'" class="landscape-image-magnifier preload no_preview" data-item-author="by '.$users[$i['user_id']]['username'].' " data-item-category=" jak go wstawić tu " data-item-cost="'.$currency['symbol'].$i['price'].' " data-item-name="'.htmlspecialchars($i['name']).'" data-preview-height="" data-preview-url="'.DATA_SERVER.'/uploads/items/'.$i['id'].'/preview.jpg" data-preview-width="" src="'.DATA_SERVER.'/uploads/items/'.$i['id'].'/'.$i['thumbnail'].'" title="" border="0" width="80" height="80"></a></li>';
}
$text .= '</ul>';
}

 

 

Wie ktoś, co mam na myśli?

 

 


posiadam jeszcze ten kod gdy jest żywcem wycięty z cache smarty:

 

<?php endif; ?>
<ul id="weekly-featured-items">
<?php if ($this->_tpl_vars['weeklyItems']): ?>
<?php $_from = $this->_tpl_vars['weeklyItems']; if (!is_array($_from) && !is_object($_from)) { settype($_from, 'array'); }if (count($_from)):
foreach ($_from as $this->_tpl_vars['i']):
?>
<li class="thumbnail">
<a href="/<?php echo $this->_tpl_vars['languageURL']; ?>
items/<?php echo $this->_tpl_vars['i']['id']; ?>
/<?php echo ((is_array($_tmp=$this->_tpl_vars['i']['name'])) ? $this->_run_mod_handler('url', true, $_tmp) : smarty_modifier_url($_tmp)); ?>
"><img data-tooltip="<?php echo ((is_array($_tmp=$this->_tpl_vars['i']['name'])) ? $this->_run_mod_handler('escape', true, $_tmp) : smarty_modifier_escape($_tmp)); ?>
" alt="<?php echo ((is_array($_tmp=$this->_tpl_vars['i']['name'])) ? $this->_run_mod_handler('escape', true, $_tmp) : smarty_modifier_escape($_tmp)); ?>
" class="landscape-image-magnifier preload no_preview" data-item-author="by <?php echo $this->_tpl_vars['users'][$this->_tpl_vars['i']['user_id']]['username']; ?>
" data-item-category="<?php $_from = $this->_tpl_vars['i']['categories']; if (!is_array($_from) && !is_object($_from)) { settype($_from, 'array'); }if (count($_from)):
foreach ($_from as $this->_tpl_vars['e']):
?><?php $_from = $this->_tpl_vars['e']; if (!is_array($_from) && !is_object($_from)) { settype($_from, 'array'); }$this->_foreach['foo'] = array('total' => count($_from), 'iteration' => 0);
if ($this->_foreach['foo']['total'] > 0):
foreach ($_from as $this->_tpl_vars['c']):
$this->_foreach['foo']['iteration']++;
?><?php echo $this->_tpl_vars['categories'][$this->_tpl_vars['c']]['name']; ?>
<?php if (! ($this->_foreach['foo']['iteration'] == $this->_foreach['foo']['total'])): ?> \ <?php endif; ?><?php endforeach; endif; unset($_from); ?><?php endforeach; endif; unset($_from); ?>"
data-item-cost="<?php echo $this->_tpl_vars['currency']['symbol']; ?>
<?php echo $this->_tpl_vars['i']['price']; ?>
" data-item-name="<?php echo ((is_array($_tmp=$this->_tpl_vars['i']['name'])) ? $this->_run_mod_handler('escape', true, $_tmp) : smarty_modifier_escape($_tmp)); ?>
" data-preview-height="" data-preview-url="<?php echo $this->_tpl_vars['data_server']; ?>
uploads/items/<?php echo $this->_tpl_vars['i']['id']; ?>
/preview.jpg" data-preview-width="" src="<?php echo $this->_tpl_vars['data_server']; ?>
uploads/items/<?php echo $this->_tpl_vars['i']['id']; ?>
/<?php echo $this->_tpl_vars['i']['thumbnail']; ?>
" title="" border="0" width="80" height="80"></a>
</li>
<?php endforeach; endif; unset($_from); ?>
<?php endif; ?>
</ul>

Edytowano przez prypal (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Ja już nic nie rozumiem....

To co dał ZooMpl można zapisać jako:

<?php foreach ($i['categories'] as $e): ?>
  <?php foreach ($e as $c): ?>
    <img data-item-category="<? echo $categories[$c]['name']; ?>"/>
  <?php endforeach; ?>
<?php endforeach; ?>

Sam mniej więcej czegoś takiego używam, aczkolwiek mam swoje klasy itp. Zresztą WordPress i Joomla mają podobne proste zastosowania.

http://php.net/manual/en/control-structures.alternative-syntax.php

http://www.php.net/manual/en/control-structures.while.php

http://www.php.net/manual/en/control-structures.for.php

itp

Edytowano przez PrecelusMaximus (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Ja już nic nie rozumiem....

To co dał ZooMpl można zapisać jako:

<?php foreach ($i['categories'] as $e): ?>
  <?php foreach ($e as $c): ?>
    <img data-item-category="<? echo $categories[$c]['name']; ?>"/>
  <?php endforeach; ?>
<?php endforeach; ?>

Sam mniej więcej czegoś takiego używam, aczkolwiek mam swoje klasy itp. Zresztą WordPress i Joomla mają podobne proste zastosowania.

http://php.net/manual/en/control-structures.alternative-syntax.php

http://www.php.net/manual/en/control-structures.while.php

http://www.php.net/manual/en/control-structures.for.php

itp

 

Jak zmienić poniższy kod SMARTY na PHP by móc wstawić je do HTML.

 

{foreach from=$i.categories item=e}{foreach from=$e item=c name=foo}{$categories[$c].name} {if !$smarty.foreach.foo.last} \ {/if}{/foreach}{/foreach}

Edytowano przez prypal (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Nie rozumiem, więc powiniem to wstawić tak ?

 

 

if(is_array($items)) {
$text .= '<ul id="weekly-featured-items">';
foreach($items as $i) {
$text .= '<li class="thumbnail"><a href="/'.$languageURL.'items/'.$i['id'].'" title="'.htmlspecialchars($i['name']).'"><img data-tooltip="'.htmlspecialchars($i['name']).'" alt="'.htmlspecialchars($i['name']).'" class="landscape-image-magnifier preload no_preview" data-item-author="by '.$users[$i['user_id']]['username'].'"

'.foreach ($i['categories'] as $e) {
foreach ($e as $c) {
echo 'data-item-category="'.$categories[$c]['name'].'" ;
}
}.'

 

data-item-cost="'.$currency['symbol'].$i['price'].' " data-item-name="'.htmlspecialchars($i['name']).'" data-preview-height="" data-preview-url="'.DATA_SERVER.'/uploads/items/'.$i['id'].'/preview.jpg" data-preview-width="" src="'.DATA_SERVER.'/uploads/items/'.$i['id'].'/'.$i['thumbnail'].'" title="" border="0" width="80" height="80"></a></li>';
}
$text .= '</ul>';
}

Edytowano przez prypal (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

if(is_array($items)) {
$text .= '<ul id="weekly-featured-items">';
foreach($items as $i) {
$text .= '<li class="thumbnail"><a href="/'.$languageURL.'items/'.$i['id'].'" title="'.htmlspecialchars($i['name']).'"><img data-tooltip="'.htmlspecialchars($i['name']).'" alt="'.htmlspecialchars($i['name']).'" class="landscape-image-magnifier preload no_preview" data-item-author="by '.$users[$i['user_id']]['username'].'"';

foreach ($i['categories'] as $e) {
foreach ($e as $c) {
$text .= 'data-item-category="'.$categories[$c]['name'].'"';
}
}

 

$text .= 'data-item-cost="'.$currency['symbol'].$i['price'].' " data-item-name="'.htmlspecialchars($i['name']).'" data-preview-height="" data-preview-url="'.DATA_SERVER.'/uploads/items/'.$i['id'].'/preview.jpg" data-preview-width="" src="'.DATA_SERVER.'/uploads/items/'.$i['id'].'/'.$i['thumbnail'].'" title="" border="0" width="80" height="80"></a></li>';
}
$text .= '</ul>';
}

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

if(is_array($items)) {

$text .= '<ul id="weekly-featured-items">';

foreach($items as $i) {

$text .= '<li class="thumbnail"><a href="/'.$languageURL.'items/'.$i['id'].'" title="'.htmlspecialchars($i['name']).'"><img data-tooltip="'.htmlspecialchars($i['name']).'" alt="'.htmlspecialchars($i['name']).'" class="landscape-image-magnifier preload no_preview" data-item-author="by '.$users[$i['user_id']]['username'].'"';

 

foreach ($i['categories'] as $e) {

foreach ($e as $c) {

$text .= 'data-item-category="'.$categories[$c]['name'].'"';

}

}

 

$text .= 'data-item-cost="'.$currency['symbol'].$i['price'].' " data-item-name="'.htmlspecialchars($i['name']).'" data-preview-height="" data-preview-url="'.DATA_SERVER.'/uploads/items/'.$i['id'].'/preview.jpg" data-preview-width="" src="'.DATA_SERVER.'/uploads/items/'.$i['id'].'/'.$i['thumbnail'].'" title="" border="0" width="80" height="80"></a></li>';

}

$text .= '</ul>';

}

 

sprawdziłem i jest prawie dobrze, ale to jeszcze nie to,

 

Tak czy inaczej sprawe roztrzygł pewien freelancer odpłatnie,

 

Rozwiązanie troche inne niż się spodziewałem

            $backslash = chr();

            $a_kat = $i['categories'];
            
            $s_nazwy_kat = "";
            
            foreach ($a_kat as $a_k)
            {
                foreach ($a_k as $kat_id)
                {
                    $s_nazwy_kat .= $categories[$kat_id]['name']." \ ";

                }
            }

<img data-item-category="'. $s_nazwy_kat .'"/>

 

 

 

Dziekuje za wasz poświęcony czas oraz chęci, gdybym miał wystarczającą ilość postów, powysyłabym punkty reputacji //temat do zamknięcia.

Edytowano przez prypal (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się


×