Last I heard @joshualuckers was talking about picking it up and making some improvements (I think). But Articles is very much a deformation of a bunch of things smashed together and updating and improving it isn’t as straight forward as it should be.
Great news. There are lots of ways Articles could be improved. One way would be to move all the various Tpl chunks used by Articles into actual chunks in their own category.
Since so many users will modify them, it might make sense to create a general getTpl() method used throughout Articles. A nice feature would be to have the method look for a chunk or file with the standard name of the Tpl prefixed with “My” and use it if found (and use the current settings for them if that’s not found to preserve BC). That way users could just duplicate them, add the prefix, and modify them without having to find the setting or property specifying the Tpl name.
Thanks for the reply. This is a reference to the problem - https://forums.modx.com/thread/101937/articles-not-showing-articles-children … It was a known problem. Articles is/was a very popular tool, but this particular issue rendered it non-functional. It worked under the old version of Modx, but does not seem to work in 2.7 (looks like). Maybe there are things that need to fixed in database.
Also, what I could help with Modx plugins is a list of all required dependencies in the documentation.
These are the relevant values:
MODX version = MODX Revolution 2.7.0-pl (traditional)
Version codename = Revolution
phpinfo() = View
Server Time = 08:40:26 PM
Local Time = 08:40:26 PM
Server Offset = 0
ExtJS Version = 3.4.1
Smarty Version = 3.1.27
PHPMailer Version = 5.2.14
MagpieRSS Version = 0.72
Database type = mysql
Database version = 5.6.41-84.1
Database charset = utf8
Table prefix = modx_
PDO support = enabled
PDO drivers = mysql, odbc, pgsql, sqlite
PDO Driver for MySQL = enabled
Client API version = mysqlnd 5.0.12-dev - 20150407
Directive = Local Value,Master Value
pdo_mysql.default_socket = /var/lib/mysql/mysql.sock,/var/lib/mysql/mysql.sock
Zip = enabled
Zip version = 1.13.5
Libzip version = 1.1.2
allow_url_fopen = On
allow_url_include = Off
arg_separator.input = &
arg_separator.output = &
auto_append_file = no value
auto_globals_jit = On
auto_prepend_file = no value
browscap = no value
default_charset = UTF-8
default_mimetype = text/html
disable_classes = no value
disable_functions = no value
display_errors = Off
display_startup_errors = Off
doc_root = no value
docref_ext = no value
docref_root = no value
enable_dl = Off
enable_post_data_reading = On
error_append_string = no value
error_log = error_log
error_prepend_string = no value
error_reporting = 32759
exit_on_timeout = Off
expose_php = Off
extension_dir = /opt/cpanel/ea-php70/root/usr/lib64/php/modules
file_uploads = On
highlight.comment = #FF8000
highlight.default = #0000BB
highlight.html = #000000
highlight.keyword = #007700
highlight.string = #DD0000
html_errors = On
ignore_repeated_errors = Off
ignore_repeated_source = Off
ignore_user_abort = Off
implicit_flush = Off
include_path = .:/opt/cpanel/ea-php70/root/usr/share/pear
input_encoding = no value
internal_encoding = no value
log_errors = On
log_errors_max_len = 1024
mail.add_x_header = On
mail.force_extra_parameters= no value
mail.log = no value
max_execution_time = 30
max_file_uploads = 20
max_input_nesting_level = 64
max_input_time = 60
max_input_vars = 1000
memory_limit = 256M
open_basedir = no value
output_buffering = no value
output_encoding = no value
output_handler = no value
post_max_size = 64M
precision = 14
realpath_cache_size = 4096K
realpath_cache_ttl = 120
register_argc_argv = On
report_memleaks = On
report_zend_debug = On
request_order = GP
serialize_precision = 100
short_open_tag = On
SMTP = localhost
smtp_port = 25
sql.safe_mode = Off
sys_temp_dir = no value
track_errors = Off
unserialize_callback_func = no value
upload_max_filesize = 64M
upload_tmp_dir = no value
user_dir = no value
user_ini.cache_ttl = 300
user_ini.filename = .user.ini
variables_order = GPCS
xmlrpc_error_number = 0
xmlrpc_errors = Off
zend.assertions = -1
zend.detect_unicode = On
zend.enable_gc = On
zend.multibyte = Off
zend.script_encoding = no value
So I upgraded MODx to the latest version and cleared out cache files for good measure. I then reinstalled Articles.
When installing Articles the following errors appear. Also the Articles documentation does not list the dependencies (though it installs them).
Console running...
Attempting to install package with signature: articles-1.7.13-pl
Package found...now preparing to install.
Grabbing package workspace...
Workspace environment initiated, now installing package...
Error adding field quipComment->name: Array ( [0] => 42S21 [1] => 1060 [2] => Duplicate column name 'name' )
Error adding field quipComment->email: Array ( [0] => 42S21 [1] => 1060 [2] => Duplicate column name 'email' )
Error adding field quipComment->website: Array ( [0] => 42S21 [1] => 1060 [2] => Duplicate column name 'website' )
Error adding field quipComment->resource: Array ( [0] => 42S21 [1] => 1060 [2] => Duplicate column name 'resource' )
Error adding field quipComment->idprefix: Array ( [0] => 42S21 [1] => 1060 [2] => Duplicate column name 'idprefix' )
Error adding field quipComment->existing_params: Array ( [0] => 42S21 [1] => 1060 [2] => Duplicate column name 'existing_params' )
Error adding index resource to quipComment: Array ( [0] => 42000 [1] => 1061 [2] => Duplicate key name 'resource' )
Error adding field quipComment->ip: Array ( [0] => 42S21 [1] => 1060 [2] => Duplicate column name 'ip' )
Error adding field quipComment->rank: Array ( [0] => 42S21 [1] => 1060 [2] => Duplicate column name 'rank' )
Error adding field quipComment->approvedby: Array ( [0] => 42S21 [1] => 1060 [2] => Duplicate column name 'approvedby' )
Error adding field quipComment->deleted: Array ( [0] => 42S21 [1] => 1060 [2] => Duplicate column name 'deleted' )
Error adding field quipComment->deletedon: Array ( [0] => 42S21 [1] => 1060 [2] => Duplicate column name 'deletedon' )
Error adding field quipComment->deletedby: Array ( [0] => 42S21 [1] => 1060 [2] => Duplicate column name 'deletedby' )
Error adding index approvedby to quipComment: Array ( [0] => 42000 [1] => 1061 [2] => Duplicate key name 'approvedby' )
Error adding index deleted to quipComment: Array ( [0] => 42000 [1] => 1061 [2] => Duplicate key name 'deleted' )
Error adding index deletedby to quipComment: Array ( [0] => 42000 [1] => 1061 [2] => Duplicate key name 'deletedby' )
Error adding field quipThread->quip_call_params: Array ( [0] => 42S21 [1] => 1060 [2] => Duplicate column name 'quip_call_params' )
Error adding field quipThread->quipreply_call_params: Array ( [0] => 42S21 [1] => 1060 [2] => Duplicate column name 'quipreply_call_params' )
Could not load class: quipNotifyComment from mysql.quipnotifycomment.
Could not load class: quipNotifyComment from mysql.quipnotifycomment.
Error removing field Article->articles_container: Array ( [0] => 42000 [1] => 1091 [2] => Can't DROP 'articles_container'; check that column/key exists )
Error removing field Article->articles_container_settings: Array ( [0] => 42000 [1] => 1091 [2] => Can't DROP 'articles_container_settings'; check that column/key exists )
Successfully installed package articles-1.7.13-pl
When running Articles the Article Children still do not show up. I did see errors in the browser console … and I also saw that it could not find assets/components/articles/connector.php
ext-base.js:21 POST https://www.websitename.com/assets/components/articles/connector.php 500
i @ ext-base.js:21
request @ ext-base.js:21
request @ ext-all.js:21
doRequest @ ext-all.js:21
request @ ext-all.js:21
execute @ ext-all.js:21
load @ ext-all.js:21
MODx.grid.Grid @ modx.grid.js:115
Articles.grid.ContainerArticles @ container.articles.grid.js:129
create @ ext-all.js:21
createComponent @ ext-all.js:21
lookupComponent @ ext-all.js:21
add @ ext-all.js:21
(anonymous) @ ext-all.js:21
each @ ext-base.js:21
add @ ext-all.js:21
(anonymous) @ ext-all.js:21
each @ ext-base.js:21
add @ ext-all.js:21
initComponent @ ext-all.js:21
initComponent @ ext-all.js:21
initComponent @ ext-all.js:21
Ext.Component @ ext-all.js:21
S @ ext-base.js:21
S @ ext-base.js:21
S @ ext-base.js:21
S @ ext-base.js:21
MODx.FormPanel @ modx.panel.js:34
MODx.panel.Resource @ modx.panel.resource.js:26
Articles.panel.Container @ update.js:41
create @ ext-all.js:21
load @ modx.js?v=06b40bff:85
_loadComponents @ modx.component.js:68
MODx.Component @ modx.component.js:10
MODx.page.UpdateResource @ update.js:33
Articles.page.UpdateContainer @ update.js:15
create @ ext-all.js:21
load @ modx.js?v=06b40bff:85
(anonymous) @ ?a=resource/update&id=95:90
(anonymous) @ ext-all.js:21
b @ ext-all.js:21
setInterval (async)
e.delay @ ext-all.js:21
(anonymous) @ ext-all.js:21
fire @ ext-all.js:21
b @ ext-all.js:21
Show 11 more frames
ext-base.js:21 POST https://www.websitename.com/assets/components/quip/connector.php 500
i @ ext-base.js:21
request @ ext-base.js:21
request @ ext-all.js:21
doRequest @ ext-all.js:21
request @ ext-all.js:21
execute @ ext-all.js:21
load @ ext-all.js:21
MODx.grid.Grid @ modx.grid.js:115
Quip.grid.Comments @ comments.grid.js:104
create @ ext-all.js:21
createComponent @ ext-all.js:21
lookupComponent @ ext-all.js:21
add @ ext-all.js:21
(anonymous) @ ext-all.js:21
each @ ext-base.js:21
add @ ext-all.js:21
initComponent @ ext-all.js:21
initComponent @ ext-all.js:21
Ext.Component @ ext-all.js:21
S @ ext-base.js:21
S @ ext-base.js:21
S @ ext-base.js:21
create @ ext-all.js:21
createComponent @ ext-all.js:21
lookupComponent @ ext-all.js:21
add @ ext-all.js:21
(anonymous) @ ext-all.js:21
each @ ext-base.js:21
add @ ext-all.js:21
initComponent @ ext-all.js:21
initComponent @ ext-all.js:21
Ext.Component @ ext-all.js:21
S @ ext-base.js:21
S @ ext-base.js:21
S @ ext-base.js:21
create @ ext-all.js:21
createComponent @ ext-all.js:21
lookupComponent @ ext-all.js:21
add @ ext-all.js:21
(anonymous) @ ext-all.js:21
each @ ext-base.js:21
add @ ext-all.js:21
initComponent @ ext-all.js:21
initComponent @ ext-all.js:21
initComponent @ ext-all.js:21
Ext.Component @ ext-all.js:21
S @ ext-base.js:21
S @ ext-base.js:21
S @ ext-base.js:21
S @ ext-base.js:21
MODx.Tabs @ modx.tabs.js:22
create @ ext-all.js:21
createComponent @ ext-all.js:21
lookupComponent @ ext-all.js:21
add @ ext-all.js:21
(anonymous) @ ext-all.js:21
each @ ext-base.js:21
add @ ext-all.js:21
initComponent @ ext-all.js:21
initComponent @ ext-all.js:21
initComponent @ ext-all.js:21
Ext.Component @ ext-all.js:21
S @ ext-base.js:21
S @ ext-base.js:21
S @ ext-base.js:21
S @ ext-base.js:21
MODx.FormPanel @ modx.panel.js:34
MODx.panel.Resource @ modx.panel.resource.js:26
Articles.panel.Container @ update.js:41
create @ ext-all.js:21
load @ modx.js?v=06b40bff:85
_loadComponents @ modx.component.js:68
MODx.Component @ modx.component.js:10
MODx.page.UpdateResource @ update.js:33
Articles.page.UpdateContainer @ update.js:15
create @ ext-all.js:21
load @ modx.js?v=06b40bff:85
(anonymous) @ ?a=resource/update&id=95:90
(anonymous) @ ext-all.js:21
b @ ext-all.js:21
setInterval (async)
e.delay @ ext-all.js:21
(anonymous) @ ext-all.js:21
fire @ ext-all.js:21
b @ ext-all.js:21
Show 50 more frames
modx.window.js:60 Uncaught TypeError: this.mask.addClass is not a function
at S.onShow (modx.window.js:60)
at S.afterShow (ext-all.js:21)
at S.show (ext-all.js:21)
at Object.show (ext-all.js:21)
at MODx.onAjaxException (modx.js?v=06b40bff:122)
at h.Event.fire (ext-all.js:21)
at Ext.data.Connection.fireEvent (ext-all.js:21)
at Ext.data.Connection.handleFailure (ext-all.js:21)
at f (ext-base.js:21)
at m (ext-base.js:21)
onShow @ modx.window.js:60
afterShow @ ext-all.js:21
show @ ext-all.js:21
show @ ext-all.js:21
onAjaxException @ modx.js?v=06b40bff:122
fire @ ext-all.js:21
fireEvent @ ext-all.js:21
handleFailure @ ext-all.js:21
f @ ext-base.js:21
m @ ext-base.js:21
(anonymous) @ ext-base.js:21
setInterval (async)
n @ ext-base.js:21
i @ ext-base.js:21
request @ ext-base.js:21
request @ ext-all.js:21
doRequest @ ext-all.js:21
request @ ext-all.js:21
execute @ ext-all.js:21
load @ ext-all.js:21
MODx.grid.Grid @ modx.grid.js:115
Articles.grid.ContainerArticles @ container.articles.grid.js:129
create @ ext-all.js:21
createComponent @ ext-all.js:21
lookupComponent @ ext-all.js:21
add @ ext-all.js:21
(anonymous) @ ext-all.js:21
each @ ext-base.js:21
add @ ext-all.js:21
(anonymous) @ ext-all.js:21
each @ ext-base.js:21
add @ ext-all.js:21
initComponent @ ext-all.js:21
initComponent @ ext-all.js:21
initComponent @ ext-all.js:21
Ext.Component @ ext-all.js:21
S @ ext-base.js:21
S @ ext-base.js:21
S @ ext-base.js:21
S @ ext-base.js:21
MODx.FormPanel @ modx.panel.js:34
MODx.panel.Resource @ modx.panel.resource.js:26
Articles.panel.Container @ update.js:41
create @ ext-all.js:21
load @ modx.js?v=06b40bff:85
_loadComponents @ modx.component.js:68
MODx.Component @ modx.component.js:10
MODx.page.UpdateResource @ update.js:33
Articles.page.UpdateContainer @ update.js:15
create @ ext-all.js:21
load @ modx.js?v=06b40bff:85
(anonymous) @ ?a=resource/update&id=95:90
(anonymous) @ ext-all.js:21
b @ ext-all.js:21
setInterval (async)
e.delay @ ext-all.js:21
(anonymous) @ ext-all.js:21
fire @ ext-all.js:21
b @ ext-all.js:21
Show 23 more frames
modx.window.js:100 Uncaught TypeError: Cannot read property 'removeClass' of undefined
at S.onHide (modx.window.js:100)
at S.afterHide (ext-all.js:21)
at S.hide (ext-all.js:21)
at Object.hide (ext-all.js:21)
at Object.show (ext-all.js:21)
at MODx.onAjaxException (modx.js?v=06b40bff:122)
at h.Event.fire (ext-all.js:21)
at Ext.data.Connection.fireEvent (ext-all.js:21)
at Ext.data.Connection.handleFailure (ext-all.js:21)
at f (ext-base.js:21)
onHide @ modx.window.js:100
afterHide @ ext-all.js:21
hide @ ext-all.js:21
hide @ ext-all.js:21
show @ ext-all.js:21
onAjaxException @ modx.js?v=06b40bff:122
fire @ ext-all.js:21
fireEvent @ ext-all.js:21
handleFailure @ ext-all.js:21
f @ ext-base.js:21
m @ ext-base.js:21
(anonymous) @ ext-base.js:21
setInterval (async)
n @ ext-base.js:21
i @ ext-base.js:21
request @ ext-base.js:21
request @ ext-all.js:21
doRequest @ ext-all.js:21
request @ ext-all.js:21
execute @ ext-all.js:21
load @ ext-all.js:21
MODx.grid.Grid @ modx.grid.js:115
Quip.grid.Comments @ comments.grid.js:104
create @ ext-all.js:21
createComponent @ ext-all.js:21
lookupComponent @ ext-all.js:21
add @ ext-all.js:21
(anonymous) @ ext-all.js:21
each @ ext-base.js:21
add @ ext-all.js:21
initComponent @ ext-all.js:21
initComponent @ ext-all.js:21
Ext.Component @ ext-all.js:21
S @ ext-base.js:21
S @ ext-base.js:21
S @ ext-base.js:21
create @ ext-all.js:21
createComponent @ ext-all.js:21
lookupComponent @ ext-all.js:21
add @ ext-all.js:21
(anonymous) @ ext-all.js:21
each @ ext-base.js:21
add @ ext-all.js:21
initComponent @ ext-all.js:21
initComponent @ ext-all.js:21
Ext.Component @ ext-all.js:21
S @ ext-base.js:21
S @ ext-base.js:21
S @ ext-base.js:21
create @ ext-all.js:21
createComponent @ ext-all.js:21
lookupComponent @ ext-all.js:21
add @ ext-all.js:21
(anonymous) @ ext-all.js:21
each @ ext-base.js:21
add @ ext-all.js:21
initComponent @ ext-all.js:21
initComponent @ ext-all.js:21
initComponent @ ext-all.js:21
Ext.Component @ ext-all.js:21
S @ ext-base.js:21
S @ ext-base.js:21
S @ ext-base.js:21
S @ ext-base.js:21
MODx.Tabs @ modx.tabs.js:22
create @ ext-all.js:21
createComponent @ ext-all.js:21
lookupComponent @ ext-all.js:21
add @ ext-all.js:21
(anonymous) @ ext-all.js:21
each @ ext-base.js:21
add @ ext-all.js:21
initComponent @ ext-all.js:21
initComponent @ ext-all.js:21
initComponent @ ext-all.js:21
Ext.Component @ ext-all.js:21
S @ ext-base.js:21
S @ ext-base.js:21
S @ ext-base.js:21
S @ ext-base.js:21
MODx.FormPanel @ modx.panel.js:34
MODx.panel.Resource @ modx.panel.resource.js:26
Articles.panel.Container @ update.js:41
create @ ext-all.js:21
load @ modx.js?v=06b40bff:85
_loadComponents @ modx.component.js:68
MODx.Component @ modx.component.js:10
MODx.page.UpdateResource @ update.js:33
Articles.page.UpdateContainer @ update.js:15
create @ ext-all.js:21
load @ modx.js?v=06b40bff:85
(anonymous) @ ?a=resource/update&id=95:90
(anonymous) @ ext-all.js:21
b @ ext-all.js:21
setInterval (async)
e.delay @ ext-all.js:21
(anonymous) @ ext-all.js:21
fire @ ext-all.js:21
b @ ext-all.js:21
Show 63 more frames
All the errors about duplicate names and fields it can’t find can be safely ignored. That just means your database is already up-to-date with what it should be, obviously because it’s a fresh installations.
The connector seems to be responding with a 500 status code, meaning an internal server error, meaning an error on either the PHP or webserver side of things. Check your server/PHP logs; there should hopefully be a meaningful error message there.
You may also be able to see a PHP error if you turn on Dev. Tools in your browser and check the Network tab after loading the page. You can click on a request and then on the Response tab, which will sometimes show some ugly HTML with a PHP error message in it.
FWIW, I’m using Articles with MODX 2.7 for my blog at Bob’s Guides now with no problems.
I should mention that I always create new Articles by going to “Manage Articles” and clicking on the button. At one time, there was a problem with doing it from the context menu in the tree. It may be fixed, but I got in the habit of doing it the other way.
Okay … It seems to be finally working. I did a lot of cleanup on the website (reinstalled MODx, and reset the permissions 755 for dirs and 644 for files. I also performed lots of cache flushes and uninstalled Articles as well). Also it only worked by clicking the button in Manage Articles.
There’s a good chance that the articles you previously wrote are lurking in the DB, but deleting them there would probably leave some orphan intersects (which SiteCheck could clean up for you).
You could also set the show_in_tree field to 1. That way, you could delete them in the Manager.