Как я могу посчитать ключи массива в ezpublish? - PullRequest
1 голос
/ 25 февраля 2011

У меня проблема с подсчетом значения ключей массива в ezpublish, функция php которого

array_count_values();

Мне нужна аналогичная функция в ezpublish.Есть ли в ezpublish операторы или мне тоже нужно сделать расширение?

Ответы [ 7 ]

3 голосов
/ 07 марта 2011

После долгого исследования я обнаружил, что нет никаких шаблонных операторов ez для array_count_values();, мы должны сделать для него расширение. И процесс создания расширения приведен в ссылке ниже.

http://blog.developeronhire.com/using-custom-php-functions-in-ez-publish-templates/

Спасибо всем

1 голос
/ 12 марта 2012

Как сказал Николас, вы можете отобразить любые функции PHP на оператор шаблона, если:

  • функция возвращает результат по значению, а не по ссылке
  • функция принимает толькоодин параметр (это может работать с функциями, имеющими один обязательный параметр, а другие являются необязательными, но я могу вспомнить, что он генерирует предупреждения PHP и что дополнительные параметры будут игнорироваться)

Документация: http://doc.ez.no/eZ-Publish/Technical-manual/4.x/Reference/Configuration-files/template.ini/PHP/PHPOperatorList

Делать то, что вы хотите, действительно легко, поскольку array_key_values ​​() является хорошим кандидатом и соответствует требованиям.

1 голос
/ 05 мая 2011

Вы можете объявить функцию php как новый оператор шаблона для использования шаблонами.

Добавьте его в файл переопределения template.ini.

1 голос
/ 22 марта 2011

Оператор подсчета - это то, что вы ищете здесь, похоже:

{def $arrayCount = $myArray|count()}

Подробнее об этом операторе в документации: http://doc.ez.no/eZ-Publish/Technical-manual/4.x/Reference/Template-operators/Variable-and-type-handling/count

Как правило, не стесняйтесь задавать свои вопросы на портале сообщества eZ Publish: http://share.ez.no (но я думаю, что вы уже знаете это место;))

Надеюсь, это поможет, Cheers,

0 голосов
/ 01 апреля 2012

Если добавление его в template.ini расширения вашего сайта не работает, просто создайте автозагрузку.Их очень просто создать, и я часто добавляю любую нужную мне php-функцию.Вам не нужно новое расширение для автозагрузки, просто добавьте его в существующее расширение в каталоге autoloads . Не забудьте объявить вашу автозагрузку в файле eztemplateautoload.php, вам, вероятно, придется добавить одну из них в вашу директорию автозагрузки.

0 голосов
/ 09 июня 2011

Если вам нужно использовать встроенные функции PHP, вам действительно следует использовать это расширение: http://projects.ez.no/wrap_operator

Вам просто нужно включить выбранную функцию в ini-файле расширения и использовать ее в своих шаблонах.

Например:

{def $html = wrap_php_func('str_replace', array('&', '&', $article.data_map.descriptif.data_text))}

Это спасет тебе жизнь!

0 голосов
/ 25 февраля 2011

попробуйте

function count_array_key($arr)
{          
    return count(array_keys($arr));
}

использование

$array = array("color" => array("blue", "red", "green"),
               "size"  => array("small", "medium", "large"));
echo count_array_key($array);
...