我想做一個JavaScript和PHP的條件選擇器。我已經做過,但在WordPress(純PHP)中,現在我必須適應prestashop(.tpl文件)。JavaScript代碼與PHP到.tpl prestashop
在.tpl文件中編寫php並不容易,並將Smarty更新爲SmartyBC類。但我仍然是複雜
/public_html/controllers/front/certificadosController.php
class certificadosControllerCore extends FrontController{
public $php_self = 'certificados';
public function init(){
parent::init();
}
public function initContent(){
parent::initContent();
$this->setTemplate(_PS_THEME_DIR_.'certificados.tpl');
}
}
function ConectarBD() {
// connect to db
}
function TraerProd() {
//get all products
}
function TraerAttr($vid_prod) {
//get atributtes
}
至於是什麼邏輯?我正在使用標籤{php} php代碼{/ php} {literal} js代碼{/ literal}
我向他們展示了一段代碼,其中prestashop顯然沒有很好地解釋。
/public_html/themes/theme/certificados.tpl
{literal}
var_attr = '<option value="default" selected>Diametro</option>';
sel_attr = $('#attr');
$('select').change(function() {
switch(this.id) {
case 'producto':
sel_attr.find('option').remove();
sel_attr.append(var_attr);
sel_attr.show();
sel_attr.removeAttr('disabled');
if (this.value == 'Válvula_de_bloqueo_Pead') {
for (i = 0; i < Válvula_de_bloqueo_Pead.length; i++) {
$("#attr").append(
'<option value="' + Válvula_de_bloqueo_Pead[i] + '">' + Válvula_de_bloqueo_Pead[i] + '</option>'
);
}
{/literal}
{php}
$Prod=array();
$Prod=TraerProd();
if (!empty($Prod)) {
$cntProd=count($Prod);
};
for ($k = 0; $k < $cntProd; $k++) {
$_prod = $Prod[$k]['name']; $_prod = str_replace(array(' ', '-', '"', '/', '.', 'ñ'), array('_', '_', '', '_', '_', 'n'), $_prod);
$Attr=array();
$id_prod=$Prod[$k]['ID'];
$Attr=TraerAttr($id_prod);
if (!empty($Attr)) {
echo '} else if (this.value =='.$_prod.') { for (i = 0; i <'.$_prod.'.length; i++) { $("#attr").append(" <option value="\'+'.$_prod.'[i]+\'">\'+'.$_prod.'[i]+\'</option>");}';
}
} /* cierre if, for (php) */
{/php}
{literal}
} //cierre if (js)
break;
}
看到的結果表明鏈我砍,我認爲這是過度使用標籤{PHP}和{}文字
的這是JSFiddle有我想要完成的想法,我再說一遍,因爲我在wp中,但.tpl文件使我複雜化所有:(
我希望你能幫助我,對不起我的壞英語。 謝謝!
一些技巧;絕對不要在類文件中寫入函數。我相信這是違反PSR規則的。 NR。 2 - 不要在.tpl文件中寫入yoru邏輯! .tpl嚴格用於輸出數據。計算代碼文件(控制器)中的數據。 NR。 3 - 不要在代碼中寫入特殊字符!只能使用英文字符 – gskema
您應該關閉最後一個'{literal}'標記 – UnLoCo