Установка драйвера PDO на сервере MySQL Linux. Modx требует расширение pdo при использовании php без собственного pdo и оно не было загружено
php - Установка драйвера PDO на сервере MySQL Linux
- PDO обозначает объект данных PHP.
- PDO_MYSQL - это драйвер, который будет реализовывать интерфейс между данными (база данных) и пользователем (слой под пользовательским интерфейсом, называемый "код сзади" ), доступ к вашему объекту данных, базе данных MySQL.
Цель использования этого - реализовать дополнительный уровень безопасности между пользовательским интерфейсом и базой данных. Используя этот уровень, данные могут быть нормализованы перед вставкой в вашу структуру данных. (Столицы - это Столицы, без начальных или конечных пробелов, все даты в правильной форме.)
Но есть несколько нюансов к этому, о которых вы, возможно, и не подозревали.
Прежде всего, до сих пор вы, вероятно, записывали все свои запросы в нечто похожее на URL-адрес, и вы передаете параметры с помощью самого URL-адреса. Используя PDO, все это делается под уровнем пользовательского интерфейса. Пользовательский интерфейс передает мяч в PDO, который переносит его в поле и заносит его в базу данных для 7-точечного TOUCHDOWN.. он получает семь очков, потому что он получил его там и сделал гораздо безопаснее, чем передача информации по URL-адресу.
Вы также можете закрепить свой сайт SQL injection с помощью слоя данных. Используя этот промежуточный слой, который является ТОЛЬКО "игроком", который разговаривает с самой базой данных, я уверен, что вы можете видеть, как это может быть гораздо более безопасным. Интерфейс для datalayer для базы данных, datalayer для базы данных для datalayer для интерфейса.
и
Используя лучшие практики при написании кода, вы будете намного счастливее с результатом.
Дополнительные источники:
Re: MySQL Функции в url php dot net/manual/en/ref dot pdo-mysql dot php
Re: трехуровневая архитектура - добавление безопасности в ваши приложения https://blog.42.nl/articles/introducing-a-security-layer-in-your-application-architecture/
Re: Объектно-ориентированный дизайн с использованием UML Если вы действительно хотите узнать больше об этом, это лучшая книга на рынке, Грэди Буч был отцом UML http://dl.acm.org/citation.cfm?id=291167&CFID=241218549&CFTOKEN=82813028
Или проверьте с помощью bitmonkey. Там есть группа, я уверен, что вы могли бы многому научиться.
Если бы мы знали, что на самом деле означает терминология, нам не нужно ничего узнавать.
qaru.site
[решено] PDO на Debian для MODx Revolution / modx.pro
Какой час перебираю варианты решения проблемы, но результата нет. Пытаюсь развернуть MODXx Revo на Apache/2.2.22 (Debian) PHP/5.4.36-0+deb7u3 configured Проблема с pdo.
Шаг установки, проверка подключения к базе данных:
Подключение к серверу базы данных: MODX требуется драйвер pdo_mysql при использовании собственного PDO, он не загружен.Что нашел по теме?
Эта вся инфа по теме, которая мне показалась полезной, но ни одна не помогла. Во время установки происходят ошибки, что странно. Как же поставить pdo?Одна из попыток:
Linux vm91014.local 3.10-0.bpo.3-amd64 #1 SMP Debian 3.10.52-1~bpo1 (2014-08-11) x86_64 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Sun Jan 18 04:52:12 2015 from 176.14.148.168 root@vm91014:~# apt-get install php-pear php5-dev libmysqlclient15-dev Reading package lists... Done Building dependency tree Reading state information... Done Note, selecting 'libmysqlclient-dev' instead of 'libmysqlclient15-dev' php-pear is already the newest version. php5-dev is already the newest version. The following NEW packages will be installed: libmysqlclient-dev 0 upgraded, 1 newly installed, 0 to remove and 22 not upgraded. Need to get 941 kB of archives. After this operation, 5,646 kB of additional disk space will be used. Do you want to continue [Y/n]? y Get:1 http://cdn.debian.net/debian/ wheezy/main libmysqlclient-dev amd64 5.5.40-0+wheezy1 [941 kB] Fetched 941 kB in 0s (9,733 kB/s) Selecting previously unselected package libmysqlclient-dev. (Reading database ... 36236 files and directories currently installed.) Unpacking libmysqlclient-dev (from .../libmysqlclient-dev_5.5.40-0+wheezy1_amd64.deb) ... Processing triggers for man-db ... Setting up libmysqlclient-dev (5.5.40-0+wheezy1) ... root@vm91014:~# pecl install pdo_mysql WARNING: "pecl/PDO_MYSQL" is deprecated in favor of "channel://http://svn.php.net/viewvc/php/php-src/trunk/ext/pdo_mysql//ext/pdo_mysql" WARNING: "pecl/PDO" is deprecated in favor of "channel://http://svn.php.net/viewvc/php/php-src/trunk/ext/pdo//ext/PDO" downloading PDO_MYSQL-1.0.2.tgz ... Starting to download PDO_MYSQL-1.0.2.tgz (14,778 bytes) .....done: 14,778 bytes downloading PDO-1.0.3.tgz ... Starting to download PDO-1.0.3.tgz (52,613 bytes) ...done: 52,613 bytes 12 source files, building running: phpize Configuring for: PHP Api Version: 20100412 Zend Module Api No: 20100525 Zend Extension Api No: 220100525 building in /tmp/pear/temp/pear-build-rootgS3v9N/PDO-1.0.3 running: /tmp/pear/temp/PDO/configure checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking for a sed that does not truncate output... /bin/sed checking for cc... cc checking whether the C compiler works... yes checking for C compiler default output file name... a.out checking for suffix of executables... checking whether we are cross compiling... no checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether cc accepts -g... yes checking for cc option to accept ISO C89... none needed checking how to run the C preprocessor... cc -E checking for icc... no checking for suncc... no checking whether cc understands -c and -o together... yes checking for system library directory... lib checking if compiler supports -R... no checking if compiler supports -Wl,-rpath,... yes checking build system type... x86_64-unknown-linux-gnu checking host system type... x86_64-unknown-linux-gnu checking target system type... x86_64-unknown-linux-gnu checking for PHP prefix... /usr checking for PHP includes... -I/usr/include/php5 -I/usr/include/php5/main -I/usr/include/php5/TSRM -I/usr/include/php5/Zend -I/usr/include/php5/ext -I/usr/include/php5/ext/date/lib checking for PHP extension directory... /usr/lib/php5/20100525 checking for PHP installed headers prefix... /usr/include/php5 checking if debug is enabled... no checking if zts is enabled... no checking for re2c... no configure: WARNING: You will need re2c 0.13.4 or later if you want to regenerate PHP parsers. checking for gawk... no checking for nawk... nawk checking if nawk is broken... no checking whether to enable PDO support... yes, shared checking how to print strings... printf checking for a sed that does not truncate output... (cached) /bin/sed checking for fgrep... /bin/grep -F checking for ld used by cc... /usr/bin/ld checking if the linker (/usr/bin/ld) is GNU ld... yes checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B checking the name lister (/usr/bin/nm -B) interface... BSD nm checking whether ln -s works... yes checking the maximum length of command line arguments... 1572864 checking whether the shell understands some XSI constructs... yes checking whether the shell understands "+="... yes checking how to convert x86_64-unknown-linux-gnu file names to x86_64-unknown-linux-gnu format... func_convert_file_noop checking how to convert x86_64-unknown-linux-gnu file names to toolchain format... func_convert_file_noop checking for /usr/bin/ld option to reload object files... -r checking for objdump... objdump checking how to recognize dependent libraries... pass_all checking for dlltool... no checking how to associate runtime and link libraries... printf %s\n checking for ar... ar checking for archiver @FILE support... @ checking for strip... strip checking for ranlib... ranlib checking for gawk... (cached) nawk checking command to parse /usr/bin/nm -B output from cc object... ok checking for sysroot... no checking for mt... mt checking if mt is a manifest tool... no checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking for dlfcn.h... yes checking for objdir... .libs checking if cc supports -fno-rtti -fno-exceptions... no checking for cc option to produce PIC... -fPIC -DPIC checking if cc PIC flag -fPIC -DPIC works... yes checking if cc static flag -static works... yes checking if cc supports -c -o file.o... yes checking if cc supports -c -o file.o... (cached) yes checking whether the cc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking whether -lc should be explicitly linked in... no checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking whether stripping libraries is possible... yes checking if libtool supports shared libraries... yes checking whether to build shared libraries... yes checking whether to build static libraries... no configure: creating ./config.status config.status: creating config.h config.status: executing libtool commands running: make /bin/bash /tmp/pear/temp/pear-build-rootgS3v9N/PDO-1.0.3/libtool --mode=compile cc -I. -I/tmp/pear/temp/PDO -DPHP_ATOM_INC -I/tmp/pear/temp/pear-build-rootgS3v9N/PDO-1.0.3/include -I/tmp/pear/temp/pear-build-rootgS3v9N/PDO-1.0.3/main -I/tmp/pear/temp/PDO -I/usr/include/php5 -I/usr/include/php5/main -I/usr/include/php5/TSRM -I/usr/include/php5/Zend -I/usr/include/php5/ext -I/usr/include/php5/ext/date/lib -DHAVE_CONFIG_H -g -O2 -c /tmp/pear/temp/PDO/pdo.c -o pdo.lo libtool: compile: cc -I. -I/tmp/pear/temp/PDO -DPHP_ATOM_INC -I/tmp/pear/temp/pear-build-rootgS3v9N/PDO-1.0.3/include -I/tmp/pear/temp/pear-build-rootgS3v9N/PDO-1.0.3/main -I/tmp/pear/temp/PDO -I/usr/include/php5 -I/usr/include/php5/main -I/usr/include/php5/TSRM -I/usr/include/php5/Zend -I/usr/include/php5/ext -I/usr/include/php5/ext/date/lib -DHAVE_CONFIG_H -g -O2 -c /tmp/pear/temp/PDO/pdo.c -fPIC -DPIC -o .libs/pdo.o /bin/bash /tmp/pear/temp/pear-build-rootgS3v9N/PDO-1.0.3/libtool --mode=compile cc -I. -I/tmp/pear/temp/PDO -DPHP_ATOM_INC -I/tmp/pear/temp/pear-build-rootgS3v9N/PDO-1.0.3/include -I/tmp/pear/temp/pear-build-rootgS3v9N/PDO-1.0.3/main -I/tmp/pear/temp/PDO -I/usr/include/php5 -I/usr/include/php5/main -I/usr/include/php5/TSRM -I/usr/include/php5/Zend -I/usr/include/php5/ext -I/usr/include/php5/ext/date/lib -DHAVE_CONFIG_H -g -O2 -c /tmp/pear/temp/PDO/pdo_dbh.c -o pdo_dbh.lo libtool: compile: cc -I. -I/tmp/pear/temp/PDO -DPHP_ATOM_INC -I/tmp/pear/temp/pear-build-rootgS3v9N/PDO-1.0.3/include -I/tmp/pear/temp/pear-build-rootgS3v9N/PDO-1.0.3/main -I/tmp/pear/temp/PDO -I/usr/include/php5 -I/usr/include/php5/main -I/usr/include/php5/TSRM -I/usr/include/php5/Zend -I/usr/include/php5/ext -I/usr/include/php5/ext/date/lib -DHAVE_CONFIG_H -g -O2 -c /tmp/pear/temp/PDO/pdo_dbh.c -fPIC -DPIC -o .libs/pdo_dbh.o /tmp/pear/temp/PDO/pdo_dbh.c: In function 'pdo_stmt_instantiate': /tmp/pear/temp/PDO/pdo_dbh.c:410:8: error: 'zval' has no member named 'refcount' /tmp/pear/temp/PDO/pdo_dbh.c:411:8: error: 'zval' has no member named 'is_ref' /tmp/pear/temp/PDO/pdo_dbh.c: In function 'pdo_stmt_construct': /tmp/pear/temp/PDO/pdo_dbh.c:424:2: error: too few arguments to function 'std_object_handlers.write_property' /tmp/pear/temp/PDO/pdo_dbh.c:435:6: error: 'zend_fcall_info' has no member named 'object_pp' /tmp/pear/temp/PDO/pdo_dbh.c:458:6: error: 'zend_fcall_info_cache' has no member named 'object_pp' /tmp/pear/temp/PDO/pdo_dbh.c: In function 'zim_PDO_setAttribute': /tmp/pear/temp/PDO/pdo_dbh.c:752:12: error: 'zval' has no member named 'refcount' /tmp/pear/temp/PDO/pdo_dbh.c: In function 'zim_PDO_getAttribute': /tmp/pear/temp/PDO/pdo_dbh.c:818:28: error: 'zval' has no member named 'refcount' /tmp/pear/temp/PDO/pdo_dbh.c: In function 'pdo_hash_methods': /tmp/pear/temp/PDO/pdo_dbh.c:1126:20: warning: assignment discards 'const' qualifier from pointer target type [enabled by default] /tmp/pear/temp/PDO/pdo_dbh.c:1128:26: error: 'const struct _zend_arg_info' has no member named 'required_num_args' /tmp/pear/temp/PDO/pdo_dbh.c:1131:50: error: 'const struct _zend_arg_info' has no member named 'required_num_args' /tmp/pear/temp/PDO/pdo_dbh.c:1133:9: error: 'zend_internal_function' has no member named 'pass_rest_by_reference' /tmp/pear/temp/PDO/pdo_dbh.c:1134:9: error: 'zend_internal_function' has no member named 'return_reference' /tmp/pear/temp/PDO/pdo_dbh.c:1134:48: error: 'const struct _zend_arg_info' has no member named 'return_reference' /tmp/pear/temp/PDO/pdo_dbh.c:1139:9: error: 'zend_internal_function' has no member named 'pass_rest_by_reference' /tmp/pear/temp/PDO/pdo_dbh.c:1140:9: error: 'zend_internal_function' has no member named 'return_reference' /tmp/pear/temp/PDO/pdo_dbh.c: In function 'pdo_dbh_init': /tmp/pear/temp/PDO/pdo_dbh.c:1242:37: warning: assignment from incompatible pointer type [enabled by default] /tmp/pear/temp/PDO/pdo_dbh.c: In function 'pdo_dbh_new': /tmp/pear/temp/PDO/pdo_dbh.c:1413:37: error: 'zend_class_entry' has no member named 'default_properties' make: *** [pdo_dbh.lo] Error 1 ERROR: `make' failed 7 source files, building running: phpize Configuring for: PHP Api Version: 20100412 Zend Module Api No: 20100525 Zend Extension Api No: 220100525 building in /tmp/pear/temp/pear-build-root4mtqtN/PDO_MYSQL-1.0.2 running: /tmp/pear/temp/PDO_MYSQL/configure checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking for a sed that does not truncate output... /bin/sed checking for cc... cc checking whether the C compiler works... yes checking for C compiler default output file name... a.out checking for suffix of executables... checking whether we are cross compiling... no checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether cc accepts -g... yes checking for cc option to accept ISO C89... none needed checking how to run the C preprocessor... cc -E checking for icc... no checking for suncc... no checking whether cc understands -c and -o together... yes checking for system library directory... lib checking if compiler supports -R... no checking if compiler supports -Wl,-rpath,... yes checking build system type... x86_64-unknown-linux-gnu checking host system type... x86_64-unknown-linux-gnu checking target system type... x86_64-unknown-linux-gnu checking for PHP prefix... /usr checking for PHP includes... -I/usr/include/php5 -I/usr/include/php5/main -I/usr/include/php5/TSRM -I/usr/include/php5/Zend -I/usr/include/php5/ext -I/usr/include/php5/ext/date/lib checking for PHP extension directory... /usr/lib/php5/20100525 checking for PHP installed headers prefix... /usr/include/php5 checking if debug is enabled... no checking if zts is enabled... no checking for re2c... no configure: WARNING: You will need re2c 0.13.4 or later if you want to regenerate PHP parsers. checking for gawk... no checking for nawk... nawk checking if nawk is broken... no checking for MySQL support for PDO... yes, shared checking for mysql_config... /usr/bin/mysql_config checking for mysql_query in -lmysqlclient... yes checking for mysql_commit... yes checking for mysql_stmt_prepare... yes checking for mysql_next_result... yes checking for mysql_sqlstate... yes checking for PDO includes... checking for PDO includes... configure: error: Cannot find php_pdo_driver.h. ERROR: `/tmp/pear/temp/PDO_MYSQL/configure' failed root@vm91014:~# ^Ccl install pdo_mysql root@vm91014:~# Linux vm91014.local 3.10-0.bpo.3-amd64 #1 SMP Debian 3.10.52-1~bpo1 (2014-08-11) x86_64 -bash: Linux: command not found root@vm91014:~# root@vm91014:~# The programs included with the Debian GNU/Linux system are free software; Last login: Sun Jan 18 04:52:12 2015 from 176.14.148.168 root@vm91014:~# apt-get install php-pear php5-dev libmysqlclient15-dev -bash: The: command not found Reading package lists... Done Building dependency tree Reading state information... Done Note, selecting 'libmysqlclient-dev' instead of 'libmysqlclient15-dev' root@vm91014:~# the exact distribution terms for each program are described in the 0 upgraded, 1 newly installed, 0 to remove and 22 not upgraded. Need to get 941 kB of archives. After this operation, 5,646 kB of additional disk space will be-bash: the: command not found used. root@vm91014:~# individual files in /usr/share/doc/*/copyright. Do you want to continue [Y/n]? y Get:1 http://cdn.debian.net/debian/ wheezy/main libmysqlclient-dev amd64 5.5.40-0+wheezy1 [941 kB] Fetched 941 kB in 0s (9,733 kB/s) Selecting previously unselected package libmysqlclient-dev. (Reading database ... 36236 files and directories currently installed.) Unpacking libmysqlclient-dev (from .../libmysqlclient-dev_5.5.40-0+wheezy1_amd64.deb) ... Processing triggers for man-db ... Setting up libmysqlclient-dev (5.5.40-0+wheezy1) ... root@vm91014:~# pecl install pdo_mysql WARNING: "pecl/PDO_MYSQL" is deprecated in favor of "channel://http://svn.php.net/viewvc/php/php-src/trunk/ext/pdo_mysql//ext/pdo_mysql" WARNING: "pecl/PDO" is deprecated in favor of "channel://http://svn.php.net/viewvc/php/php-src/trunk/ext/pdo//ext/PDO" downloading PDO_MYSQL-1.0.2.tgz ... Starting to download PDO_MYSQL-1.0.2.tgz (14,778 bytes) .....done: 14,778 bytes downloading PDO-1.0.3.tgz ... Starting to download PDO-1.0.3.tgz (52,613 bytes) ...done: 52,613 bytes 12 source files, building running: phpize Configuring for: PHP Api Version: 20100412 Zend Module Api No: 20100525 Zend Extension Api No: 220100525 building in /tmp/pear/temp/pear-build-rootgS3v9N/PDO-1.0.3 running: /tmp/pear/temp/PDO/configure checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking for a sed that does not truncate output... /bin/sed checking for cc... cc checking whether the C compiler works... yes checking for C compiler default output file name... a.out checking for suffix of executables... checking whether we are cross compiling... no checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether cc accepts -g... yes checking for cc option to accept ISO C89... none needed checking how to run the C preprocessor... cc -E checking for icc... no checking for suncc... no checking whether cc understands -c and -o together... yes checking for system library directory... lib checking if compiler supports -R... no checking if compiler supports -Wl,-rpath,... yes checking build system type... x86_64-unknown-linux-gnu checking host system type... x86_64-unknown-linux-gnu checking target system type... x86_64-unknown-linux-gnu checking for PHP prefix... /usr checking for PHP includes... -I/usr/include/php5 -I/usr/include/php5/main -I/usr/include/php5/TSRM -I/usr/include/php5/Zend -I/usr/include/php5/ext -I/usr/include/php5/ext/date/lib checking for PHP extension directory... /usr/lib/php5/20100525 checking for PHP installed headers prefix... /usr/include/php5 checking if debug is enabled... no checking if zts is enabled... no checking for re2c... no configure: WARNING: You will need re2c 0.13.4 or later if you want to regenerate PHP parsers. checking for gawk... no checking for nawk... nawk checking if nawk is broken... no checking whether to enable PDO support... yes, shared checking how to print strings... printf checking for a sed that does not truncate output... (cached) /bin/sed checking for fgrep... /bin/grep -F checking for ld used by cc... /usr/bin/ld checking if the linker (/usr/bin/ld) is GNU ld... yes checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B checking the name lister (/usr/bin/nm -B) interface... BSD nm checking whether ln -s works... yes checking the maximum length of command line arguments... 1572864 chec-bash: individual: command not foundНе знаю, мозг уже не работает.modx.pro
pdoTools в MODX — замена стандартных сниппетов
«pdoTools» — это пакет, содержащий инструменты для быстрой разработки сниппетов в MODX Revolution, а так же набор готовых сниппетов для повседневной работы. Именно о этих сниппетах и пойдёт речь в статье, а точнее о том, как я заменял ими стандартные «сниппеты» и для чего это делал.
Так чем же хорош компонент «pdoTools»? А тем, что позволяет создавать сниппеты без использования xPDO — MODX'овской надстройки над PHP расширением - PDO. Небольшое пояснение по этому поводу. Изначально все запросы к базе данных осуществлялись на SQL (структурированный язык запросов), и все бы хорошо, но вот синтаксис этих запросов к различным СУБД (MySQL, MSSQL, Oracle, FireBird...) зачастую отличается. Приходилось затачивать код под определенную СУБД и переписывать его при использовании с другой СУБД. Чтобы избежать данного неудобства для PHP было написано расширение PDO, которое позволило создать универсальный интерфейс для работы с базами данных. В MODX пошли дальше и для удобства разработки написали надстройку над PDO, которую назвали xPDO. Эта надстройка делает работу с БД из под MODX (а мы помним, что MODX, это не просто CMS, это CMF) ещё более удобной и безопасной, но за всё надо платить и в нашем случае это скорость работы. xPDO в качестве результата запроса возвращает объекты и при большом количестве возвращаемых объектов (тысячи) время генерации страницы значительно возрастает. Поэтому наш соотечественник Василий Наумкин решил разработать собственный инструмент для создания сниппетов, которые работают через PDO, а не через xPDO. Как вы поняли, инструмент этот и есть «pdoTools».
Далее последуют примеры, как я производил замены всем привычных сниппетов на сниппеты из пакета «pdoTools». Описывать все параметры этих сниппетов не вижу смысла, так как они уже есть на сайте разработчика, но на некоторых моментах я все же заострю внимание.
Замена getResources на pdoResources
Сниппеты для вывода ресурсов. Про эту замену я писал отдельную статью, она получилась не слишком содержательной, но кому-то может и пригодилась. Пример замены сниппета «getRecources» на «pdoRecources» с привязкой к «pdoPage» чуть ниже.
Замена getPage на pdoPage
Сниппеты для постраничного вывода ресурсов в MODX Revolution.
Как было:
[[!getPage@articlePaging? &elementClass=`modSnippet` &element=`getResources` &parents=`36,37,38,39,40` &depth=`1` &limit=`5` &includeTVs=`1` &tpl=`articleTpl` ]]«articlePaging» — это набор параметров, где хранится содержимое чанков сниппета для оформления вывода. Для «pdoPage» я приведу их содержимое, так как оно несколько отличается от имеющихся в «getPage».
Как стало:
[[!pdoPage? &parents=`36,37,38,39,40` &depth=`1` &limit=`5` &includeTVs=`img-news,tags,HitsPage` &tpl=`articleTpl` &tplPageWrapper=`@INLINE [[+prev]][[+first]][[+pages]][[+last]][[+next]]` &tplPage=`@INLINE <a href="[[+href]]" title="[[+pageNo]]">[[+pageNo]]</a>` &tplPageActive=`@INLINE <span>[[+pageNo]]</span>` &tplPageFirst=`@INLINE <a href="[[+href]]">First</a>` &tplPageLast=`@INLINE <a href="[[+href]]">Last</a>` &tplPagePrev=`@INLINE <a href="[[+href]]">«</a>` &tplPageNext=`@INLINE <a href="[[+href]]">»</a>` &tplPageFirstEmpty=`` &tplPageLastEmpty=`` &tplPagePrevEmpty=`` &tplPageNextEmpty=`` ]]Во-первых, пропали параметры «&elementClass» и «&element». Указывать их есть смысл только если в качестве источника постраничного вывода используется не «pdoRecources». Вместо «&includeTVs=`1`» пришлось указать имена всех tv параметров, участвующих в выводе. Остальные изменения связаны исключительно с чанками. В этом примере я специально отказался от использования набора параметров, чтобы вы увидели какие плейсхолдеры в каких чанках используются.
Замена getResourcesTag на pdoResources
В состав компонента getRecources входит так же сниппет getResourcesTag, предназначенный для вывода ресурсов, привязанных к определенному тегу. Этот сниппет так же можно заменить на pdoResources. Как было: [[!getResourcesTag? &parents=`36,37,38,39,40` &depth=`1` &tpl=`articleTpl` &limit=`6` &includeTVs=`1` ]] Как стало: [[!pdoResources? &parents=`36,37,38,39,40` &depth=`1` &tpl=`articleTpl` &limit=`6` &includeTVs=`img-news,tags,HitsPage` &where=`{"tags:LIKE":"%[[!getUrlParam? &name=`tag`]]%"}` ]]Сразу обращаем внимание на параметр — &where=`{"tags:LIKE":"%[[!getUrlParam? &name=`tag`]]%"}` В нём мы указываем критерий выборки ресурсов. Если простыми словами, то выбираем все ресурсы, у которых в TV параметре «tags» встречается слово, передаваемое в GET параметре «tag». А его, в свою очередь, мы вытаскиваем из URL с помощью сниппета getUrlParam, который вы можете установить из репозитория
Кстати, возможно есть и какие-то другие способы, если знаете, то поделитесь.
Замена breadCrumbs на pdoCrumbs
Как было:
[[Breadcrumbs? &homeCrumbTitle=`Главная`]]Как стало:
[[pdoCrumbs? &showHome=`1` &outputSeparator=` » ` &tplHome=`@INLINE Главная` ]] После замены пришлось немного подредактировать CSS оформление выводимых хлебных крошек, так как «pdoCrumbs» в отличии от «BreadCrumbs» на выходе дает не список li, а просто набор ссылок, разделенных сепаратором, указанным в сниппете.Замена Wayfinder на pdoMenu
Сниппеты предназначены для генерации меню на сайте. Здесь писать нечего, так как кроме замены названия сниппета менять ничего не пришлось. Выводимый результат остался тот же самый. Особого прироста в скорости генерации страницы я не заметил, но у меня небольшой сайт, поэтому это не удивительно. [[pdoMenu? &startId=`0` &level=`2`]]Замена GoogleSitemap на pdoSitemap
Сниппеты для генерации карты сайта. Заменяется только название. У меня на сайте есть отдельная статья по созданию карты сайта в modx revolution при помощи сниппета «GoogleSitemap» — Карта сайта в MODX Revolution (GoogleSiteMap). Для «pdoSitemap» делается всё аналогичным образом. [[!pdoSitemap]]Остальные сниппеты
В состав «pdoTools» входит ещё 2 сниппета. Я не применял их пока на практике, поэтому ничего писать про них не буду. Это сниппеты «pdoUsers» для вывода списка польователей сайта и «pdoNeighbors» для вывода соседних ресурсов.
На этом всё. Возможно, к тому моменту когда вы будете читать эту статью, появятся ещё статьи, связанные с пакетом «pdoTools». Найти их можно перейдя по соответствующему тегу. Про неточности в статье пишите в комментариях — буду исправлять.
realadmin.ru