Вопрос : Как могу я доработать модуль комментария Drupal так, что он не включит поле домашняя страница?

Искать дорога изменить поле комментария в Drupal так, что оно не попросит домашняя страница потребителя.  Я рассматривал просто прокомментировать вне определение домашняя страница в PHP модуля, но после того как я дал число функций к которым этот блок связан, я вычислял он причинило пук ошибок вниз с линии.  Будет самой лучшей дорогой сделать это? конечная цель

The должна избежать hyperlinking к off-site страницам, и форма в настоящее время установлена для того чтобы соединить данные вписанные в поле домашняя страница.  Если легке просто запрограммировать модуль для того чтобы не создать hyperlink против не индикации поле на всех, то пожалуйста объясните как сделать this.

I вывесьте под сердечником comment.module и архивы comment.js от Drupal 6.6 install.

What будет самой лучшей дорогой причалить этому?

Thanks!
class= " ясное " >
> " codeSnippet " class=
class= " lineNumbers "
class=
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
217:
218:
219:
220:
221:
222:
223:
224:
225:
226:
227:
228:
229:
230:
231:
232:
233:
234:
235:
236:
237:
238:
239:
240:
241:
242:
243:
244:
245:
246:
247:
248:
249:
250:
251:
252:
253:
254:
255:
256:
257:
258:
259:
260:
261:
262:
263:
264:
265:
266:
267:
268:
269:
270:
271:
272:
273:
274:
275:
276:
277:
278:
279:
280:
281:
282:
283:
284:
285:
286:
287:
288:
289:
290:
291:
292:
293:
294:
295:
296:
297:
298:
299:
300:
301:
302:
303:
304:
305:
306:
307:
308:
309:
310:
311:
312:
313:
314:
315:
316:
317:
318:
319:
320:
321:
322:
323:
324:
325:
326:
327:
328:
329:
330:
331:
332:
333:
334:
335:
336:
337:
338:
339:
340:
341:
342:
343:
344:
345:
346:
347:
348:
349:
350:
351:
352:
353:
354:
355:
356:
357:
358:
359:
360:
361:
362:
363:
364:
365:
366:
367:
368:
369:
370:
371:
372:
373:
374:
375:
376:
377:
378:
379:
380:
381:
382:
383:
384:
385:
386:
387:
388:
389:
390:
391:
392:
393:
394:
395:
396:
397:
398:
399:
400:
401:
402:
403:
404:
405:
406:
407:
408:
409:
410:
411:
412:
413:
414:
415:
416:
417:
418:
419:
420:
421:
422:
423:
424:
425:
426:
427:
428:
429:
430:
431:
432:
433:
434:
435:
436:
437:
438:
439:
440:
441:
442:
443:
444:
445:
446:
447:
448:
449:
450:
451:
452:
453:
454:
455:
456:
457:
458:
459:
460:
461:
462:
463:
464:
465:
466:
467:
468:
469:
470:
471:
472:
473:
474:
475:
476:
477:
478:
479:
480:
481:
482:
483:
484:
485:
486:
487:
488:
489:
490:
491:
492:
493:
494:
495:
496:
497:
498:
499:
500:
501:
502:
503:
504:
505:
506:
507:
508:
509:
510:
511:
512:
513:
514:
515:
516:
517:
518:
519:
520:
521:
522:
523:
524:
525:
526:
527:
528:
529:
530:
531:
532:
533:
534:
535:
536:
537:
538:
539:
540:
541:
542:
543:
544:
545:
546:
547:
548:
549:
550:
551:
552:
553:
554:
555:
556:
557:
558:
559:
560:
561:
562:
563:
564:
565:
566:
567:
568:
569:
570:
571:
572:
573:
574:
575:
576:
577:
578:
579:
580:
581:
582:
583:
584:
585:
586:
587:
588:
589:
590:
591:
592:
593:
594:
595:
596:
597:
598:
599:
600:
601:
602:
603:
604:
605:
606:
607:
608:
609:
610:
611:
612:
613:
614:
615:
616:
617:
618:
619:
620:
621:
622:
623:
624:
625:
626:
627:
628:
629:
630:
631:
632:
633:
634:
635:
636:
637:
638:
639:
640:
641:
642:
643:
644:
645:
646:
647:
648:
649:
650:
651:
652:
653:
654:
655:
656:
657:
658:
659:
660:
661:
662:
663:
664:
665:
666:
667:
668:
669:
670:
671:
672:
673:
674:
675:
676:
677:
678:
679:
680:
681:
682:
683:
684:
685:
686:
687:
688:
689:
690:
691:
692:
693:
694:
695:
696:
697:
698:
699:
700:
701:
702:
703:
704:
705:
706:
707:
708:
709:
710:
711:
712:
713:
714:
715:
716:
717:
718:
719:
720:
721:
722:
723:
724:
725:
726:
727:
728:
729:
730:
731:
732:
733:
734:
735:
736:
737:
738:
739:
740:
741:
742:
743:
744:
745:
746:
747:
748:
749:
750:
751:
752:
753:
754:
755:
756:
757:
758:
759:
760:
761:
762:
763:
764:
765:
766:
767:
768:
769:
770:
771:
772:
773:
774:
775:
776:
777:
778:
779:
780:
781:
782:
783:
784:
785:
786:
787:
788:
789:
790:
791:
792:
793:
794:
795:
796:
797:
798:
799:
800:
801:
802:
803:
804:
805:
806:
807:
808:
809:
810:
811:
812:
813:
814:
815:
816:
817:
818:
819:
820:
821:
822:
823:
824:
825:
826:
827:
828:
829:
830:
831:
832:
833:
834:
835:
836:
837:
838:
839:
840:
841:
842:
843:
844:
845:
846:
847:
848:
849:
850:
851:
852:
853:
854:
855:
856:
857:
858:
859:
860:
861:
862:
863:
864:
865:
866:
867:
868:
869:
870:
871:
872:
873:
874:
875:
876:
877:
878:
879:
880:
881:
882:
883:
884:
885:
886:
887:
888:
889:
890:
891:
892:
893:
894:
895:
896:
897:
898:
899:
900:
901:
902:
903:
904:
905:
906:
907:
908:
909:
910:
911:
912:
913:
914:
915:
916:
917:
918:
919:
920:
921:
922:
923:
924:
925:
926:
927:
928:
929:
930:
931:
932:
933:
934:
935:
936:
937:
938:
939:
940:
941:
942:
943:
944:
945:
946:
947:
948:
949:
950:
951:
952:
953:
954:
955:
956:
957:
958:
959:
960:
961:
962:
963:
964:
965:
966:
967:
968:
969:
970:
971:
972:
973:
974:
975:
976:
977:
978:
979:
980:
981:
982:
983:
984:
985:
986:
987:
988:
989:
990:
991:
992:
993:
994:
995:
996:
997:
998:
999:
1000:
1001:
1002:
1003:
1004:
1005:
1006:
1007:
1008:
1009:
1010:
1011:
1012:
1013:
1014:
1015:
1016:
1017:
1018:
1019:
1020:
1021:
1022:
1023:
1024:
1025:
1026:
1027:
1028:
1029:
1030:
1031:
1032:
1033:
1034:
1035:
1036:
1037:
1038:
1039:
1040:
1041:
1042:
1043:
1044:
1045:
1046:
1047:
1048:
1049:
1050:
1051:
1052:
1053:
1054:
1055:
1056:
1057:
1058:
1059:
1060:
1061:
1062:
1063:
1064:
1065:
1066:
1067:
1068:
1069:
1070:
1071:
1072:
1073:
1074:
1075:
1076:
1077:
1078:
1079:
1080:
1081:
1082:
1083:
1084:
1085:
1086:
1087:
1088:
1089:
1090:
1091:
1092:
1093:
1094:
1095:
1096:
1097:
1098:
1099:
1100:
1101:
1102:
1103:
1104:
1105:
1106:
1107:
1108:
1109:
1110:
1111:
1112:
1113:
1114:
1115:
1116:
1117:
1118:
1119:
1120:
1121:
1122:
1123:
1124:
1125:
1126:
1127:
1128:
1129:
1130:
1131:
1132:
1133:
1134:
1135:
1136:
1137:
1138:
1139:
1140:
1141:
1142:
1143:
1144:
1145:
1146:
1147:
1148:
1149:
1150:
1151:
1152:
1153:
1154:
1155:
1156:
1157:
1158:
1159:
1160:
1161:
1162:
1163:
1164:
1165:
1166:
1167:
1168:
1169:
1170:
1171:
1172:
1173:
1174:
1175:
1176:
1177:
1178:
1179:
1180:
1181:
1182:
1183:
1184:
1185:
1186:
1187:
1188:
1189:
1190:
1191:
1192:
1193:
1194:
1195:
1196:
1197:
1198:
1199:
1200:
1201:
1202:
1203:
1204:
1205:
1206:
1207:
1208:
1209:
1210:
1211:
1212:
1213:
1214:
1215:
1216:
1217:
1218:
1219:
1220:
1221:
1222:
1223:
1224:
1225:
1226:
1227:
1228:
1229:
1230:
1231:
1232:
1233:
1234:
1235:
1236:
1237:
1238:
1239:
1240:
1241:
1242:
1243:
1244:
1245:
1246:
1247:
1248:
1249:
1250:
1251:
1252:
1253:
1254:
1255:
1256:
1257:
1258:
1259:
1260:
1261:
1262:
1263:
1264:
1265:
1266:
1267:
1268:
1269:
1270:
1271:
1272:
1273:
1274:
1275:
1276:
1277:
1278:
1279:
1280:
1281:
1282:
1283:
1284:
1285:
1286:
1287:
1288:
1289:
1290:
1291:
1292:
1293:
1294:
1295:
1296:
1297:
1298:
1299:
1300:
1301:
1302:
1303:
1304:
1305:
1306:
1307:
1308:
1309:
1310:
1311:
1312:
1313:
1314:
1315:
1316:
1317:
1318:
1319:
1320:
1321:
1322:
1323:
1324:
1325:
1326:
1327:
1328:
1329:
1330:
1331:
1332:
1333:
1334:
1335:
1336:
1337:
1338:
1339:
1340:
1341:
1342:
1343:
1344:
1345:
1346:
1347:
1348:
1349:
1350:
1351:
1352:
1353:
1354:
1355:
1356:
1357:
1358:
1359:
1360:
1361:
1362:
1363:
1364:
1365:
1366:
1367:
1368:
1369:
1370:
1371:
1372:
1373:
1374:
1375:
1376:
1377:
1378:
1379:
1380:
1381:
1382:
1383:
1384:
1385:
1386:
1387:
1388:
1389:
1390:
1391:
1392:
1393:
1394:
1395:
1396:
1397:
1398:
1399:
1400:
1401:
1402:
1403:
1404:
1405:
1406:
1407:
1408:
1409:
1410:
1411:
1412:
1413:
1414:
1415:
1416:
1417:
1418:
1419:
1420:
1421:
1422:
1423:
1424:
1425:
1426:
1427:
1428:
1429:
1430:
1431:
1432:
1433:
1434:
1435:
1436:
1437:
1438:
1439:
1440:
1441:
1442:
1443:
1444:
1445:
1446:
1447:
1448:
1449:
1450:
1451:
1452:
1453:
1454:
1455:
1456:
1457:
1458:
1459:
1460:
1461:
1462:
1463:
1464:
1465:
1466:
1467:
1468:
1469:
1470:
1471:
1472:
1473:
1474:
1475:
1476:
1477:
1478:
1479:
1480:
1481:
1482:
1483:
1484:
1485:
1486:
1487:
1488:
1489:
1490:
1491:
1492:
1493:
1494:
1495:
1496:
1497:
1498:
1499:
1500:
1501:
1502:
1503:
1504:
1505:
1506:
1507:
1508:
1509:
1510:
1511:
1512:
1513:
1514:
1515:
1516:
1517:
1518:
1519:
1520:
1521:
1522:
1523:
1524:
1525:
1526:
1527:
1528:
1529:
1530:
1531:
1532:
1533:
1534:
1535:
1536:
1537:
1538:
1539:
1540:
1541:
1542:
1543:
1544:
1545:
1546:
1547:
1548:
1549:
1550:
1551:
1552:
1553:
1554:
1555:
1556:
1557:
1558:
1559:
1560:
1561:
1562:
1563:
1564:
1565:
1566:
1567:
1568:
1569:
1570:
1571:
1572:
1573:
1574:
1575:
1576:
1577:
1578:
1579:
1580:
1581:
1582:
1583:
1584:
1585:
1586:
1587:
1588:
1589:
1590:
1591:
1592:
1593:
1594:
1595:
1596:
1597:
1598:
1599:
1600:
1601:
1602:
1603:
1604:
1605:
1606:
1607:
1608:
1609:
1610:
1611:
1612:
1613:
1614:
1615:
1616:
1617:
1618:
1619:
1620:
1621:
1622:
1623:
1624:
1625:
1626:
1627:
1628:
1629:
1630:
1631:
1632:
1633:
1634:
1635:
1636:
1637:
1638:
1639:
1640:
1641:
1642:
1643:
1644:
1645:
1646:
1647:
1648:
1649:
1650:
1651:
1652:
1653:
1654:
1655:
1656:
1657:
1658:
1659:
1660:
1661:
1662:
1663:
1664:
1665:
1666:
1667:
1668:
1669:
1670:
1671:
1672:
1673:
1674:
1675:
1676:
1677:
1678:
1679:
1680:
1681:
1682:
1683:
1684:
1685:
1686:
1687:
1688:
1689:
1690:
1691:
1692:
1693:
1694:
1695:
1696:
1697:
1698:
1699:
1700:
1701:
1702:
1703:
1704:
1705:
1706:
1707:
1708:
1709:
1710:
1711:
1712:
1713:
1714:
1715:
1716:
1717:
1718:
1719:
1720:
1721:
1722:
1723:
1724:
1725:
1726:
1727:
1728:
1729:
1730:
1731:
1732:
1733:
1734:
1735:
1736:
1737:
1738:
1739:
1740:
1741:
1742:
1743:
1744:
1745:
1746:
1747:
1748:
1749:
1750:
1751:
1752:
1753:
1754:
1755:
1756:
1757:
1758:
1759:
1760:
1761:
1762:
1763:
1764:
1765:
1766:
1767:
1768:
1769:
1770:
1771:
1772:
1773:
1774:
1775:
1776:
1777:
1778:
1779:
1780:
1781:
1782:
1783:
1784:
1785:
1786:
1787:
1788:
1789:
1790:
1791:
1792:
1793:
1794:
1795:
1796:
1797:
1798:
1799:
1800:
1801:
1802:
1803:
1804:
1805:
1806:
1807:
1808:
1809:
1810:
1811:
1812:
1813:
1814:
1815:
1816:
1817:
1818:
1819:
1820:
1821:
1822:
1823:
1824:
1825:
1826:
1827:
1828:
1829:
1830:
1831:
1832:
1833:
1834:
1835:
1836:
1837:
1838:
1839:
1840:
1841:
1842:
1843:
1844:
1845:
1846:
1847:
1848:
1849:
1850:
1851:
1852:
1853:
1854:
1855:
1856:
1857:
1858:
1859:
1860:
1861:
1862:
1863:
1864:
1865:
1866:
1867:
1868:
1869:
1870:
1871:
1872:
1873:
1874:
1875:
1876:
1877:
1878:
1879:
1880:
1881:
1882:
1883:
1884:
1885:
1886:
1887:
1888:
1889:
1890:
1891:
1892:
1893:
1894:
1895:
1896:
1897:
1898:
1899:
1900:
1901:
1902:
1903:
1904:
1905:
1906:
1907:
1908:
1909:
1910:
1911:
1912:
1913:
1914:
1915:
1916:
1917:
1918:
1919:
1920:
1921:
1922:
1923:
1924:
1925:
1926:
1927:
1928:
1929:
1930:
1931:
1932:
1933:
1934:
1935:
1936:
1937:
1938:
1939:
1940:
1941:
1942:
1943:
1944:
1945:
1946:
1947:
1948:
1949:
1950:
1951:
1952:
1953:
1954:
1955:
1956:
1957:
1958:
1959:
1960:
1961:
1962:
1963:
1964:
1965:
1966:
1967:
1968:
1969:
1970:
1971:
1972:
1973:
1974:
1975:
1976:
1977:
1978:
1979:
1980:
1981:
1982:
1983:
1984:
1985:
1986:
1987:
1988:
1989:
1990:
1991:
1992:
1993:
1994:
1995:
1996:
1997:
1998:
1999:
2000:
2001:
2002:
2003:
2004:
2005:
2006:
2007:
2008:
2009:
2010:
2011:
2012:
2013:
2014:
2015:
2016:
2017:
2018:
2019:
2020:
2021:
2022:
2023:
2024:
2025:
2026:
2027:
2028:
2029:
2030:
2031:
2032:
2033:
2034:
2035:
2036:
2037:
2038:
2039:
2040:
2041:
2042:
2043:
2044:
2045:
2046:
2047:
2048:
2049:
2050:
2051:
2052:
2053:
2054:
2055:
2056:
2057:
2058:
2059:
2060:
2061:
2062:
2063:
2064:
2065:
2066:
2067:
2068:
2069:
2070:
2071:
2072:
2073:
2074:
2075:
2076:
2077:
2078:
2079:
2080:
2081:
2082:
2083:
2084:
2085:
2086:
2087:
2088:
2089:
2090:
2091:
2092:
2093:
2094:
2095:
2096:
2097:
2098:
2099:
2100:
2101:
2102:
2103:
2104:
2105:
>< " class= " id= " codeSnippet651343
». t («модуль комментария позволяет визитерам прокомментировать на ваших столбах, создавая специальные доски обсуждения. Любое href= " @content-type " >content type  Default установленный к Read/Write для того чтобы позволить комментарии, или Disabled, предотвратить комментарии. Установки индикации комментария и другое управление могут также быть подгоняны для каждого содержимого типа (некоторые установки индикации ориентированный на заказчика индивидуальными потребителями). », блок («@content-type» url => («admin/содержание/типы "))). «

»; $output. = «

». t («позволения комментария заданы к ролям потребителя, и использованы для того чтобы обусловить позволены ли подметные потребители (или другие роли) прокомментировать на столбах. Если подметные потребители позволены прокомментировать, то их индивидуальные данные по контакта могут быть сохранены в печеньях, котор хранят на их местном компьютере для пользы в более последних представлениях комментария. Когда комментарий не имеет никакие ответы, он может (опционно) быть отредактированным своим автором. Модуль комментария использует такие же имеющиеся формы входного сигнала и бирки HTML создавая другие формы content."). «

»; $output. = «

». t («для больше информации, см. он-лайн вход руководства для >Comment module " @comment " href= 'http://drupal.org/handbook/modules/comment/')). «

»; возвращенное $output; случай «admin/содержание/комментарий»: возвратите «

». t («ниже список самых последних комментариев вывешенных к вашему месту. Щелкните дальше вопросом для того чтобы увидеть комментарий, имя автора для того чтобы редактировать данные по потребителя автора, «редактируйте» для того чтобы доработать текст, и «delete» для того чтобы извлечь их submission."). «

»; случай «admin/содержание/комментарий/утверждение»: возвратите «

». t («ниже список комментариев вывешенный к вашему месту нужно утверждение. Для того чтобы одобрить комментарий, щелкните дальше «редактируйте» и после этого изменяйте свое «состояние умеренности» к утвержденный. Щелкните дальше вопросом для того чтобы увидеть комментарий, имя автора для того чтобы редактировать данные по потребителя автора, «редактируйте» для того чтобы доработать текст, и «delete» для того чтобы извлечь их submission."). «

»; } } /** * Вставка hook_theme (). * comment_theme функции () { возвращенный блок ( блок => «comment_block» ( блок => «аргументов» (), ), блок => «comment_admin_overview» ( блок => «аргументов» (NULL => «формы»), ), блок => «comment_preview» ( блок => «аргументов» (NULL => «комментария», NULL => «узла», блок => «соединений» (), «видимое» => 1), ), блок => «comment_view» ( блок => «аргументов» (NULL => «комментария», NULL => «узла», блок => «соединений» (), «видимое» => 1), ), блок => «comment_controls» ( блок => «аргументов» (NULL => «формы»), ), блок => «комментария» ( => «комментарий» «шаблона», блок => «аргументов» (NULL => «комментария», NULL => «узла», блок => «соединений» ()), ), «comment_folded» блок => ( » комментировать-сложенное => ««шаблона», блок => «аргументов» (NULL => «комментария»), ), «comment_flat_collapsed» блок => ( блок => «аргументов» (NULL => NULL, «узла» => «комментария»), ), «comment_flat_expanded» блок => ( блок => «аргументов» (NULL => NULL, «узла» => «комментария»), ), «comment_thread_collapsed» блок => ( блок => «аргументов» (NULL => NULL, «узла» => «комментария»), ), «comment_thread_expanded» блок => ( блок => «аргументов» (NULL => NULL, «узла» => «комментария»), ), «comment_post_forbidden» блок => ( блок => «аргументов» (NULL => «nid»), ), блок => «comment_wrapper» ( => «комментировать-завертчица» «шаблона», блок => «аргументов» (NULL => NULL, «узла» => «содержания»), ), «comment_submitted» блок => ( блок => «аргументов» (NULL => «комментария»), ), ); } /** * Вставка hook_menu (). * comment_menu функции () { $items [«admin/содержание/комментарий»] = блок ( » => ««названия комментирует», список» => ««описания и редактирует комментарии места и косу умеренности комментария. », «вызовите => «comment_admin» callback», «достигните аргументов» блока => («управьте комментариями "), «храньте» => «comment.admin.inc», ); Платы //: $items [«admin/содержание/комментарий/новая»] = блок ( => «опубликованные комментарии» «названия», «напечатайте» => на машинке MENU_DEFAULT_LOCAL_TASK, «утяжельте» => -10, ); $items [«admin/содержание/комментарий/утверждение»] = блок ( «озаглавьте» => «косу утверждения», «вызовите аргументы» блок => («утверждение "), «достигните аргументов» блока => («управьте комментариями "), «напечатайте» => на машинке MENU_LOCAL_TASK, «храньте» => «comment.admin.inc», ); $items [«комментарий/delete»] = блок ( => «комментарий «названия» Delete», «вызовите => «comment_delete» callback», «достигните аргументов» блока => («управьте комментариями "), «напечатайте» => на машинке MENU_CALLBACK, «храньте» => «comment.admin.inc», ); $items [«комментарий/редактирует»] = блок ( » => ««названия редактирует комментарий», «вызовите => «comment_edit» callback», «достигните аргументов» блока => («комментарии столба "), «напечатайте» => на машинке MENU_CALLBACK, «храньте» => «comment.pages.inc», ); $items [«комментарий/reply/%node»] = блок ( => «ответ «названия» к комментарию», «вызовите» => «callback comment_reply», «вызовите блок => аргументы» (2), «достигните => «node_access» callback», «достигните блок => аргументов» («взгляд», 2), «напечатайте» => на машинке MENU_CALLBACK, «храньте» => «comment.pages.inc», ); возвращенное $items; } /** * Вставка hook_node_type (). * comment_node_type функции ($op, $info) { $settings = блок ( «комментарий», «comment_default_mode», «comment_default_order», «comment_default_per_page», «comment_controls», «comment_anonymous», «comment_subject_field», «comment_preview», «comment_form_location», ); переключите ($op) { покрывайте «delete»: foreach ($settings как $setting) { variable_del ($setting. «_». $info->type); } пролом; } } /** * Вставка hook_perm (). * comment_perm функции () { возвращенный блок («доступ комментирует», «столб комментирует», «управляет комментариями», «комментариями столба без утверждения "); } /** * Вставка hook_block (). * * Производит блок с самыми недавними комментариями. * comment_block функции ($op = «список», $delta = 0) { если (список == $op «") {, то $blocks [0] [«info»] = t («недавние комментарии "); возвращенное $blocks; } еще если (user_access && «взгляда» == $op («комментарии доступа ")) {, то $block [«вопрос»] = t («недавние комментарии "); $block [«содержание»] = тема («comment_block "); возвращенное $block; } } /** * Находите несколько недавние комментарии. Это сделано в 2 шагах. * 1. находит узлы n (определенного $number) имеют самую недавнюю * комментарии. Это сделано путем запрашивая node_comment_statistics имеет * индексом на last_comment_timestamp, и будет таким образом быстрый вопрос. * 2. нагружая информацию от таблицы комментариев основанной на nids нашли * в разделе 1. * * @param $number * (опционно) максимальный число комментариев, котор нужно найти. * @return * Блок комментария возражает каждое содержа nid, * вопрос, cid, и фиксация времени, или пустой блок если не недавних * комментарии видимые к в настоящее время потребителю. * функция comment_get_recent ($number = 10) { // выбирает узлы $number (видимые к в настоящее время потребителю) с больше всего комментарии // недавние. Это эффективные должными к индексу дальше last_comment_timestamp //. $result = db_query_range (db_rewrite_sql («ОТБОРНОЕ nc.nid ОТ {node_comment_statistics} nc ГДЕ ment_count nc.com > 0 ЗАКАЗОВ nc.last_comment_timestamp DESC», «nc "), 0, $number); $nids = блок (); пока ($row = db_fetch_object ($result)) { $nids [] = $row->nid; } $comments = блок (); если (! опорожните ($nids)) { // от среди комментариев на узлах выбранных в первом вопросе, // находит комментарии $number самые недавние. $result = db_query_range («ОТБОРНЫЕ c.nid, c.subject, c.cid, c.timestamp ОТ {комментарии} c ВНУТРЕННЕГО СОЕДИНЯЮТ {узел} n НА n.nid = c.nid ГДЕ c.nid ВНУТРИ (". взрывайте («,», $nids) .") И n.status = 1 И ЗАКАЗ c.status = %d c.cid DESC», COMMENT_PUBLISHED, 0, $number); пока ($comment = db_fetch_object ($result)) { $comments [] = $comment; } } возвращенное $comments; } /** * Высчитайте номер страницы для первого нового комментария. * * @param $num_comments * Количество комментариев. * @param $new_replies * Количество новых ответов. * @param $node * Первый новый узел комментария. * @return * «page=X» если номер страницы большле чем нул; пустой шнур в противном случае. * comment_new_page_count функции ($num_comments, $new_replies, $node) { $comments_per_page = _comment_get_display_setting («comments_per_page», $node); $mode = _comment_get_display_setting («режим», $node); $order = _comment_get_display_setting («вид», $node); $pagenum = NULL; $flat = in_array ($mode, блок (COMMENT_MODE_FLAT_COLLAPSED, COMMENT_MODE_FLAT_EXPANDED)); если (<= $comments_per_page $num_comments || (== COMMENT_ORDER_NEWEST_FIRST && $order $flat)) { // только одна страница комментариев или плоского первого форума и самых новых. Комментарий // сперва новый всегда будет на первой странице. $pageno = 0; } еще { если ($flat) {, то Комментарии квартиры // и самое старое первое. $count = $num_comments - $new_replies; } еще { // продело нитку комментарии. См. документацию для comment_render (). если (== COMMENT_ORDER_NEWEST_FIRST $order) {, то Первое // самое новое: находите последнюю резьбу с новым комментарием ЗАКАЗ $result = db_query («(ОТБОРНАЯ резьба ОТ {комментарии} ГДЕ nid = %d И состояние = 0 ЗАКАЗОВ ПРЕДЕЛОМ %d фиксации времени DESC) ПРЕДЕЛОМ 1», $node->nid, $new_replies резьбы DESC); $thread = db_result ($result); $result_count = db_query («ОТБОРНЫЙ ОТСЧЕТ (*) ОТ {комментарии} ГДЕ nid = %d И состояние = 0 И резьба > «». $thread. «» «, $node->nid); } еще { Первое // самое старое: находите первую резьбу с новым комментарием ЗАКАЗ $result = db_query («(ОТБОРНАЯ резьба ОТ {комментарии} ГДЕ nid = %d И состояние = 0 ЗАКАЗОВ ПРЕДЕЛОМ %d фиксации времени DESC) ПРЕДЕЛОМ 1», $node->nid, $new_replies ПОДСТРОКИ (резьбы, 1, (ДЛИНА (резьба) - 1))); $thread = substr (db_result ($result), 0, -1); $result_count = db_query («ОТБОРНЫЙ ОТСЧЕТ (*) ОТ {комментарии} ГДЕ nid = %d И состояние = 0 И ПОДСТРОКА (резьба, 1, (ДЛИНА (резьба) - 1)) < «». $thread. «» «, $node->nid); } $count = db_result ($result_count); } $pageno = $count/$comments_per_page; } если (>= $pageno 1) {, то $pagenum = «page=». intval ($pageno); } возвращенное $pagenum; } /** * Возвращает форматный список недавних комментариев, котор нужно показать в блоке комментария. * * @return * HTML списка комментария. * @ingroup themeable * theme_comment_block функции () { $items = блок (); foreach (comment_get_recent () как $comment) { $items [] = l ($comment->subject, «узел». $comment->nid, блок (=> «комментарий» «части». $comment->cid)). «
». t («@time тому назад», блок (=> «@time» format_interval (время () - $comment->timestamp))); } если ($items) {, то возвращенная тема («item_list», $items); } } /** * Вставка hook_link (). * comment_link функции ($type, $node = NULL, $teaser = ЛОЖНО) { $links = блок (); если (&& $node->comment «узла» == $type) {, то если ($teaser) {, то Страница // главная: покажите число комментариев были вывешены. если (user_access («комментарии доступа ")) {, то $all = comment_num_all ($node->nid); если ($all) {, то $links [«comment_comments»] = блок ( «название» => format_plural ($all, «1 комментарий», «комментарии @count "), => «node/$node->nid» «href», «приписывает» блок => («название» => t («скачка к первому комментарию это posting.")), » => ««части комментирует» ); $new = comment_num_new ($node->nid); если ($new) {, то $links [«comment_new_comments»] = блок ( «название» => format_plural ($new, «1 новый комментарий», «комментарии @count новые "), => «node/$node->nid» «href», comment_new_page_count => «вопроса» ($all, $new, $node), «приписывает» блок => («название» => t («скачка к первому новому комментарию это posting.")), » => ««части новое» ); } } еще { если (== COMMENT_NODE_READ_WRITE $node->comment) {, то если (user_access («комментарии столба ")) {, то $links [«comment_add»] = блок ( «название» => t («добавьте новый комментарий "), => «комментарий «href»/reply/$node->nid», «приписывает» блок => («название» => t («добавьте новый комментарий до это page.")), «разделите» => «комментировать-форму» ); } еще { $links [«comment_forbidden»] [«название»] = тема («comment_post_forbidden», $node); } } } } } еще { Страница узла //: добавьте «соединение комментария столба» если потребитель позволен к столб // комментирует, если этот узел не только для чтения, и если форма комментария уже не показана если (== COMMENT_NODE_READ_WRITE $node->comment) {, то если (user_access («комментарии столба ")) {, то если (variable_get, то («comment_form_location_». $NODE->TYPE, == COMMENT_FORM_SEPARATE_PAGE COMMENT_FORM_SEPARATE_PAGE)) { $links [«comment_add»] = блок ( «название» => t («добавьте новый комментарий "), => «комментарий «href»/reply/$node->nid», «приписывает» блок => («название» => t («делите ваши мысли и мнения отнесенные до это posting.")), «разделите» => «комментировать-форму» ); } } еще { $links [«comment_forbidden»] [«название»] = тема («comment_post_forbidden», $node); } } } } если (комментарий == $type «") {, то $links = comment_links ($node, $teaser); } если (isset, то ($links [«comment_forbidden»])) { $links [«comment_forbidden»] [«HTML»] = TRUE; } возвратите $links; } /** * Вставка hook_form_alter (). * comment_form_alter функции (&$form, $form_state, $form_id) { если (isset, то && «node_type_form» == $form_id ($form [«тождественность»] [«тип»])) { $form [«комментарий»] = блок ( => «fieldset» «#type», «#title» => t («установки комментария "), «#collapsible» => ПОИСТИНЕ, «#collapsed» => ПОИСТИНЕ, ); $form [«комментарий»] [«комментарий»] = блок ( » => ««#type передает по радио», «#title» => t («установка комментария невыполнения обязательства "), variable_get => «#default_value» («comment_». >type $form [«#node_type»] -, COMMENT_NODE_READ_WRITE), => «#options» (t («вывел из строя "), t блок («прочитано только "), t («прочитано/напишите ")), «#description» => t («потребители с позволением administer comments будут отвергнуть это setting."), ); $form [«комментарий»] [«comment_default_mode»] = блок ( » => ««#type передает по радио», «#title» => t («режим индикации невыполнения обязательства "), variable_get => «#default_value» («comment_default_mode_». >type $form [«#node_type»] -, COMMENT_MODE_THREADED_EXPANDED), _comment_get_modes => «#options» (), «#description» => t («взгляд невыполнения обязательства для комментариев. Перспективные виды показывают тело комментария. Продетые нитку взгляды держат ответы together."), ); $form [«комментарий»] [«comment_default_order»] = блок ( » => ««#type передает по радио», «#title» => t («заказ индикации невыполнения обязательства "), variable_get => «#default_value» («comment_default_order_». >type $form [«#node_type»] -, COMMENT_ORDER_NEWEST_FIRST), _comment_get_orders => «#options» (), «#description» => t («невыполнение обязательства сортируя для новых потребителей и подметных потребителей пока осматривающ комментирует. Эти потребители могут изменить их взгляд using пульт управления комментария. Для зарегистрированных потребителей, это изменение вспомнено как упорнейший потребитель preference."), ); $form [«комментарий»] [«comment_default_per_page»] = блок ( » => ««#type выбирает», «#title» => t («невыполнение обязательства комментирует в страницу "), variable_get => «#default_value» («comment_default_per_page_». >type $form [«#node_type»] -, 50), _comment_per_page => «#options» (), «#description» => t («номер невыполнения обязательства комментариев для каждой страницы: больше комментариев распределены в нескольк pages."), ); $form [«комментарий»] [«comment_controls»] = блок ( » => ««#type передает по радио», «#title» => t («управления комментария "), variable_get => «#default_value» («comment_controls_». >type $form [«#node_type»] -, COMMENT_CONTROLS_HIDDEN), блок => «#options» ( t («индикация над комментариями "), t («индикация под комментариями "), t («индикация над и под комментарии "), t («не делает индикация ")), «#description» => t («положение коробки управлениями комментария. Управления комментария препятствовали потребителю изменить режим индикации невыполнения обязательства и показать заказ comments."), ); $form [«комментарий»] [«comment_anonymous»] = блок ( » => ««#type передает по радио», «#title» => t («подметный комментарий "), variable_get => «#default_value» («comment_anonymous_». >type $form [«#node_type»] -, COMMENT_ANONYMOUS_MAYNOT_CONTACT), блок => «#options» ( => t COMMENT_ANONYMOUS_MAYNOT_CONTACT («подметные плакаты не могут вписать их данные по контакта "), => t COMMENT_ANONYMOUS_MAY_CONTACT («подметные плакаты могут выйти их данные по контакта "), => t COMMENT_ANONYMOUS_MUST_CONTACT («подметные плакаты должны выйти их данные по контакта ")), «#description» => t («этот вариант позволен когда подметные потребители имеют позволение вывесить комментарии на >permissions page " @url " href= («admin/потребитель/позволения», блок (» => ««части модул-комментирует ")))), ); если (! user_access («столб комментирует», drupal_anonymous_user ())) { «#disabled» $form [«комментарий»] [«comment_anonymous»] [] = TRUE; } $form [«комментарий»] [«comment_subject_field»] = блок ( » => ««#type передает по радио», «#title» => t («поле комментария подчиненный "), variable_get => «#default_value» («comment_subject_field_». >type $form [«#node_type»] -, 1), => «#options» (t блок («вывел из строя "), t («позволено ")), «#description» => t («могут потребители обеспечить уникально вопрос для их комментариев? "), ); $form [«комментарий»] [«comment_preview»] = блок ( » => ««#type передает по радио», «#title» => t («комментарий предваротельного просмотра "), variable_get => «#default_value» («comment_preview_». >type $form [«#node_type»] -, COMMENT_PREVIEW_REQUIRED), => «#options» (t блок («опционно "), t («потребовал ")), => t «#description» («усилия потребитель для того чтобы посмотреть их комментарий путем щелкать на «предваротельном просмотре» кнопке прежде чем они смогут фактическ добавить комментарий»), ); $form [«комментарий»] [«comment_form_location»] = блок ( » => ««#type передает по радио», «#title» => t («положение формы представления комментария "), variable_get => «#default_value» («comment_form_location_». >type $form [«#node_type»] -, COMMENT_FORM_SEPARATE_PAGE), => «#options» (t блок («индикация на отдельно странице "), t («индикация под столбом или комментариями ")), ); } isset && elseif (isset ($form [«типа»]) ($form [«#node»])) { если ($form, то [«тип»] [«#value»]. == $form_id «_node_form») { $node = $form [«#node»]; $form [«comment_settings»] = блок ( => «fieldset» «#type», «#access» user_access => («управьте комментариями "), «#title» => t («установки комментария "), «#collapsible» => ПОИСТИНЕ, «#collapsed» => ПОИСТИНЕ, => 30 «#weight», ); $form [«comment_settings»] [«комментарий»] = блок ( » => ««#type передает по радио», «#parents» блок => («комментарий "), => $node->comment «#default_value», => «#options» (t («вывел из строя "), t блок («прочитано только "), t («прочитано/напишите ")), ); } } } /** * Вставка hook_nodeapi (). * comment_nodeapi функции (&$node, $op, $arg = 0) { переключите ($op) { покрывайте «нагрузку»: возвратите db_fetch_array (db_query («ОТБОРНОЕ last_comment_timestamp, last_comment_name, comment_count ОТ {node_comment_statistics} ГДЕ nid = %d», $node->nid)); пролом; случай «подготовляет»: если (! isset ($node->comment)) { $node->comment = variable_get («comment_$node->type», COMMENT_NODE_READ_WRITE); } пролом; случай «вставка»: db_query («ВСТАВКА В {node_comment_statistics} (nid, last_comment_timestamp, last_comment_name, last_comment_uid, comment_count) ОЦЕНИВАЕТ (%d, %d, NULL, %d, 0)», $node->nid, $node->changed, $node->uid); пролом; случай «delete»: db_query («DELETE ОТ {комментарии} ГДЕ nid = %d», $node->nid); db_query («DELETE ОТ {node_comment_statistics} ГДЕ nid = %d», $node->nid); пролом; случай «индекс уточнения»: $text = ''; $comments = db_query («ОТБОРНЫЙ вопрос, комментарий, форма ОТ {комментарии} ГДЕ nid = %d И состояние = %d», $node->nid, COMMENT_PUBLISHED); пока ($comment = db_fetch_object ($comments)) { $text. = «

». check_plain ($comment->subject). «

». check_markup ($comment->comment, $comment->format, ЛОЖНЫЕ); } возвращенное $text; случай «результат поиска»: $comments = db_result (db_query («ОТБОРНОЕ comment_count ОТ {node_comment_statistics} ГДЕ nid = %d», $node->nid)); возвращенное format_plural ($comments, «1 комментарий», «комментарии @count "); случай «деталь rss»: если ($node->comment! = COMMENT_NODE_DISABLED) { возвращенный блок (блок (url => «значения»» => ««ключа комментирует», («узел». $node->nid, блок (» => ««части комментирует», «совершенно» => ПОИСТИНЕ)))); } еще { возвращенный блок (); } } } /** * Вставка hook_user (). * comment_user функции ($type, $edit, &$user, $category = NULL) { если (delete == $type «") {, то db_query («УТОЧНЕНИЕ {комментарии} УСТАНОВИЛО uid = 0 КУДА uid = %d», $user->uid); db_query («УТОЧНЕНИЕ {node_comment_statistics} УСТАНОВИЛО last_comment_uid = 0 КУДА last_comment_uid = %d», $user->uid); } } /** * Это будет *not* вставка hook_access (). Эта функция вызвана * обусловить имеет ли в настоящее время потребитель доступ к определенному комментарию. * * Authenticated потребители могут редактировать их комментарии как длиной они бедный человек, котор будут * отвечено к. Это предотвращает людей от изменять или корректировать их * заявления основанные на ответах к их столбам. * * @param $op * Деятельность должна быть выполненным на комментарии. Только «редактируйте» теперь. * @param $comment * Предмет комментария. * @return * TRUE если в настоящее время потребитель имеет acces к комментарию, то, ЛОЖНОМУ в противном случае. * comment_access функции ($op, $comment) { глобальное $user; если (== $op «редактирует ") {, то возвратите (== 0 comment_num_replies && == $comment->uid && $user->uid $user->uid ($comment->cid)) || user_access («управьте комментариями "); } } /** * Просто функция хелпера. * * @return * 0th и 1-ые компоненты курса соединили слешем. * comment_node_url функции () { возвращенное arg (0). «/». arg (1); } /** * Признавает представление нового или измененного содержания комментария. * * @param $edit * Блок комментария. * * @return * Если комментарий успешно сохранен, то удостоверение личности комментария возвращено. Если комментарий * не сохраняет, ЛОЖНО возвращает. * comment_save функции ($edit) { глобальное $user; если (&&, то user_access («комментариев столба ") (user_access («управьте комментариями ") || == COMMENT_NODE_READ_WRITE node_comment_mode ($edit [«nid»]))) { если (! form_get_errors ()) { блок $edit += ( «почта» => '', «домашняя страница» => '', «имя» => '', «состояние» user_access => («столб комментирует без утверждения ")? COMMENT_PUBLISHED: COMMENT_NOT_PUBLISHED, ); если ($edit [«cid»]) {, то Уточнение // комментарий в базе данных. db_query («УТОЧНЕНИЕ {комментарии} УСТАНОВИЛО состояние = %d, фиксацию времени = %d, вопрос = «%s», комментарий = «%s», форма = %d, uid = %d, имя = «%s», почта = «%s», домашняя страница = «%s» ГДЕ cid = %d», $edit [«состояние»], $edit [«фиксация времени»], $edit [«вопрос»], $edit [«комментарий»], $edit [«форма»], $edit [«uid»], $edit [«имя»], $edit [«почта»], $edit [«домашняя страница»], $edit [«cid»]); // позволяет модули ответить к уточнению комментария. comment_invoke_comment ($edit, «уточнение "); // добавляет вход к журналу барбоса. барбос («содержание», «комментарий: обновленное %subject. $edit [«nid»], блок (=> «комментарий» «части». $edit [«cid»]))); } еще { // добавляет комментарий к базе данных. // здесь мы строим поле резьбы. См. документацию для comment_render // (). если (== 0 $edit [«pid»]) {, то // это будет комментарием без комментария родителя (глубины 0): мы начинаем // путем восстановлять максимальный уровень резьбы. $max = db_result (db_query («ОТБОРНОЕ МАКС (резьба) ОТ {комментарии} ГДЕ nid = %d», $edit [«nid»])); Прокладка // «/» от конца резьбы. $max = rtrim ($max, «/"); // окончательно, строит поле резьбы для этого нового комментария. $thread = int2vancode (vancode2int ($max) + 1). «/»; } еще { // это будет комментарием с комментарием родителя: мы увеличиваем // часть значения резьбы на правильной глубине. // получает комментарий родителя: $parent = _comment_load ($edit [«pid»]); Прокладка // «/» от конца резьбы родителя. $parent->thread = rtrim (шнура) ((шнур) $parent->thread, «/"); // получает максимальное значение в резьбе _this_. $max = db_result (db_query («ОТБОРНОЕ МАКС (резьба) ОТ {комментарии} ГДЕ резьба ЛЮБИТ «%s.%%» И nid = %d», $parent->thread, $edit [«nid»])); если (== $max '') {, то Ребенок // первый этого родителя. $thread = $parent->thread. «.». int2vancode (0). «/»; } еще { Прокладка // «/» в конце резьбы. $max = rtrim ($max, «/"); //, котор нам нужно получить значение на правильно глубине. $parts = взрывают («. », $max); $parent_depth = отсчет (взорвите («. », $parent->thread)); $last = $parts [$parent_depth]; // окончательно, строит поле резьбы для этого нового комментария. $thread = $parent->thread. «.». int2vancode (vancode2int ($last) + 1). «/»; } } если (опорожните, то ($edit [«фиксация времени»])) { $edit [«фиксация времени»] = время (); } если (=== $user->uid), то {// «===» $edit [«uid»] потому что мы хотим доработать подметных потребителей слишком $edit [«имя»] = $user->name; } db_query («ВСТАВКА В {комментарии} (nid, pid, uid, вопрос, комментарий, форма, именя ведущего, фиксация времени, состояние, резьба, имя, почта, домашняя страница) ОЦЕНИВАЕТ (%d, %d, %d, «%s», «%s», %d, «%s», %d, %d, «%s», «%s», «%s», «%s ")», $edit [«nid»], $edit [«pid»], $edit [«uid»], $edit [«вопрос»], $edit [«комментарий»], $edit [«форма»], ip_address (), $edit [«фиксация времени»], $edit [«состояние»], $thread, $edit [«имя»], $edit [«почта»], $edit [«домашняя страница»]); $edit [«cid»] = db_last_insert_id («комментарии», «cid "); // говорит другие модули новый, котор комментарий был представлен. comment_invoke_comment ($edit, «вставка "); // добавляет вход к журналу барбоса. барбос («содержание», «комментарий: добавленное %subject. $edit [«nid»], блок (=> «комментарий» «части». $edit [«cid»]))); } _comment_update_node_statistics ($edit [«nid»]); Ясность // тайник поэтому подметный потребитель может увидеть его будучи добавлянной комментарий. cache_clear_all (); // объясняет косу утверждения если обязательно, и после этого // перенаправляет потребителя к узлу, котор он комментирует дальше. если (== COMMENT_NOT_PUBLISHED $edit [«состояния»]) {, то drupal_set_message (t («ваш комментарий был queued для умеренности администраторами места и будет выходил в свет после approval.")); } еще { comment_invoke_comment ($edit, «опубликовывают "); } возвращенное $edit [«cid»]; } еще { возвращенное ЛОЖНОЕ; } } еще { барбос («содержание», «комментарий: несанкционированный комментарий представил или комментарий представленный к закрытому столбу %subject. », блок («%subject» => $edit [«вопрос»]), WATCHDOG_WARNING); drupal_set_message (t («комментарий: несанкционированный комментарий представил или комментарий представленный к закрытому столбу %subject. », блок («%subject» => $edit [«вопрос»])), «ошибка "); возвращенное ЛОЖНОЕ; } } /** * Соединения командование строения для комментария (например \ редактируйте, отвечайте, delete) по отношению к в настоящее время позволениям доступа пользователя. * * @param $comment * Комментарий к соединения будут родственн. * @param $return * Использовано. * @return * Ассоциативный блок содержа соединения. * comment_links функции ($comment, $return = 1) { глобальное $user; $links = блок (); // если мы осматриваем как раз этот комментарий, то, мы соединяем назад к узлу. если ($return) {, то $links [«comment_parent»] = блок ( «название» => t («родитель "), comment_node_url => «href» (), => «comment-$comment->cid» «части» ); } если (== COMMENT_NODE_READ_WRITE node_comment_mode ($comment->nid)) {, то если (user_access && user_access («управьте комментариями ") («комментарии столба ")) {, то $links [«comment_delete»] = блок ( «название» => t («delete "), => «комментарий «href»/delete/$comment->cid» ); $links [«comment_edit»] = блок ( «название» => t («редактируйте "), => «комментарий «href»/edit/$comment->cid» ); $links [«comment_reply»] = блок ( «название» => t («ответ "), => «комментарий «href»/reply/$comment->nid/$comment->cid» ); } еще если (user_access («комментарии столба ")) {, то если (comment_access, то («редактируйте», $comment)) { $links [«comment_edit»] = блок ( «название» => t («редактируйте "), => «комментарий «href»/edit/$comment->cid» ); } $links [«comment_reply»] = блок ( «название» => t («ответ "), => «комментарий «href»/reply/$comment->nid/$comment->cid» ); } еще { $node = node_load ($comment->nid); $links [«comment_forbidden»] [«название»] = тема («comment_post_forbidden», $node); } } возвратите $links; } /** * Представляет комментарии. * * @param $node * Узел комментарию нужно представить. * @param $cid * Представлен опционный, если, котор дал, только один комментарий. * * К продетой нитку индикации комментирует в правильно заказе, котор мы держим поле «резьбы» * и заказ тем значением. Это поле держит эти данные внутри * дорога легко для уточнения и удобно для использования. * * Старты значения «резьбы» на «1». Если мы добавляем ребенка (a) к этому комментарию, то * мы задаем ему «резьбу» = «1.1». Ребенок (a) будет иметь «1.1.1». Затем * брат (a) получит «1.2». Следующий брат родителя (a) получит * «2» и так далее. * * Во первых всех примечание что поле резьбы хранит глубина комментария: * глубиной 0 будет «x», глубиной 1 «X.X», глубиной 2 «X.X.X», etc. * * Теперь получить приказывая право, рассматривайте этот пример: * * 1 * 1.1 * 1.1.1 * 1.2 * 2 * * Если мы «ПРИКАЗЫВАЕМ резьбой ASC», то мы получаем вышеуказанный результат, и это * естественный заказ сортированный к время. Однако, если мы «ПРИКАЗЫВАЕМ резьбой DESC», то * мы получаем: * * 2 * 1.2 * 1.1.1 * 1.1 * 1 * * Ясно, это не будет естественная дорога увидеть резьбу, и потребители получат * запутанно. Естественный заказ для того чтобы показать резьбу desc времени был бы: * * 2 * 1 * 1.2 * 1.1 * 1.1.1 * * мы уже сделали перед стандартной заплатой pager. Достигнуть * это мы просто добавляем «/» в конце каждого значения «резьбы». Эта дорога вне * поля резьбы посмотрят как после того как они показаны ниже: * * 1 * 1.1/ * 1.1.1/ * 1.2/ * 2 * * мы добавляем «/» в виду того что этот чарс находится, в ASCII, более высоко чем каждый номер, так если * теперь мы «ПРИКАЗЫВАЕМ резьбой DESC», котор мы получаем правильно заказ. Однако это о * избалуйте обратныйа порядок, «ЗАКАЗ резьбой ASC» -- здесь, нам * рассматривать отставая «/» так мы используем подстроку только. * comment_render функции ($node, $cid = 0) { глобальное $user; $output = ''; если (user_access («комментарии доступа ")) {, то // предварительно обрабатывает перемеююые. $nid = $node->nid; если (опорожните, то ($nid)) { $nid = 0; } $mode = _comment_get_display_setting («режим», $node); $order = _comment_get_display_setting («вид», $node); $comments_per_page = _comment_get_display_setting («comments_per_page», $node); если (&& $cid is_numeric, то ($cid)) { Взгляд комментария // одиночный. $query = «ОТБОРНОЕ c.cid, c.pid, c.nid, c.subject, c.com ment, c.format, c.timestamp, c.name, c.mail, c.homepage, u.uid, u.name КАК registered_name, u.signature, u.picture, u.data, c.status ОТ {комментарии} c ВНУТРЕННЕГО СОЕДИНЯЮТ {потребители} u НА c.uid = u.uid ГДЕ c.cid = %d»; $query_args = блок ($cid); если (! user_access («управьте комментариями ")) { $query. = «И c.status = %d»; $query_args [] = COMMENT_PUBLISHED; } $query = db_rewrite_sql ($query, «c», «cid "); $result = db_query ($query, $query_args); если ($comment = db_fetch_object, то ($result)) { $comment->name = $comment->uid? $comment->registered_name: $comment->name; $links = module_invoke_all («соединение», «комментарий», $comment, 1); drupal_alter («соединение», $links, $node); $output. = тема («comment_view», $comment, $node, $links); } } еще { Взгляд комментария // множественный $query_count = «ОТБОРНЫЙ ОТСЧЕТ (*) ОТ {комментарии} c ГДЕ c.nid = %d»; $query = «ОТБОРНОЕ c.cid как cid, c.pid, c.nid, c.subject, c.com ment, c.format, c.timestamp, c.name, c.mail, c.homepage, u.uid, u.name КАК registered_name, u.signature, u.picture, u.data, c.thread, c.status ОТ {комментарии} c ВНУТРЕННЕГО СОЕДИНЯЮТ {потребители} u НА c.uid = u.uid ГДЕ c.nid = %d»; $query_args = блок ($nid); если (! user_access («управьте комментариями ")) { $query. = «И c.status = %d»; $query_count. = «И c.status = %d»; $query_args [] = COMMENT_PUBLISHED; } если (== COMMENT_ORDER_NEWEST_FIRST $order) {, то если (== COMMENT_MODE_FLAT_COLLAPSED $mode || == COMMENT_MODE_FLAT_EXPANDED $mode) { $query. = «ЗАКАЗ c.cid DESC»; } еще { $query. = «ЗАКАЗ c.thread DESC»; } } еще если (== COMMENT_ORDER_OLDEST_FIRST $order) {, то если (== COMMENT_MODE_FLAT_COLLAPSED $mode || == COMMENT_MODE_FLAT_EXPANDED $mode) { $query. = «ЗАКАЗ c.cid»; } еще { // видит комментарий выше. Анализ показывает что это не стоит слишком // очень. Он вычисляет по маштабу очень очень более лучше чем имеющ комментарий целого структура //. $query. = «ЗАКАЗ ПОДСТРОКОЙ (c.thread, 1, (ДЛИНА (c.thread) - 1))»; } } $query = db_rewrite_sql ($query, «c», «cid "); $query_count = db_rewrite_sql ($query_count, «c», «cid "); Старт // форма, для пользы с управлением комментария. $result = pager_query ($query, $comments_per_page, 0, $query_count, $query_args); $divs = 0; $num_rows = ЛОЖНО; $comments = ''; drupal_add_css (drupal_get_path («модуль», «комментарий "). «/comment.css "); пока ($comment = db_fetch_object ($result)) { $comment = drupal_unpack ($comment); $comment->name = $comment->uid? $comment->registered_name: $comment->name; $comment->depth = отсчет (взорвите («. », $comment->thread)) - 1; если (== COMMENT_MODE_THREADED_COLLAPSED $mode || == COMMENT_MODE_THREADED_EXPANDED $mode) { если ($comment->depth > $divs) {, то $divs++; $comments. = «" выделенное " class=
»; } еще { пока ($comment->depth < $divs) { $divs--; $comments. = «
»; } } } если (== COMMENT_MODE_FLAT_COLLAPSED $mode) {, то $comments. = тема («comment_flat_collapsed», $comment, $node); } еще если (== COMMENT_MODE_FLAT_EXPANDED $mode) {, то $comments. = тема («comment_flat_expanded», $comment, $node); } еще если (== COMMENT_MODE_THREADED_COLLAPSED $mode) {, то $comments. = тема («comment_thread_collapsed», $comment, $node); } еще если (== COMMENT_MODE_THREADED_EXPANDED $mode) {, то $comments. = тема («comment_thread_expanded», $comment, $node); } $num_rows = TRUE; } пока ($divs-- > 0) { $comments. = «»; } $comment_controls = variable_get («comment_controls_». $node->type, COMMENT_CONTROLS_HIDDEN); если (&&, то $num_rows (== COMMENT_CONTROLS_ABOVE $comment_controls || == COMMENT_CONTROLS_ABOVE_BELOW $comment_controls)) { $output. = drupal_get_form («comment_controls», $mode, $order, $comments_per_page); } $output. = $comments; $output. = тема («pager», NULL, $comments_per_page, 0); если (&&, то $num_rows (== COMMENT_CONTROLS_BELOW $comment_controls || == COMMENT_CONTROLS_ABOVE_BELOW $comment_controls)) { $output. = drupal_get_form («comment_controls», $mode, $order, $comments_per_page); } } // если позволено, показывает новую форму, то комментария если она уже не показывается. $reply = arg && «комментария» == arg (0) (1) == «ответ»; если (&&, то == COMMENT_NODE_READ_WRITE node_comment_mode && user_access («комментариев столба ") ($nid) (variable_get («comment_form_location_». $NODE->TYPE, == COMMENT_FORM_BELOW COMMENT_FORM_SEPARATE_PAGE) &&)! $reply) { $output. = comment_form_box (блок («nid» => $nid), t («комментарий столба новый ")); } $output = тема («comment_wrapper», $output, $node); } возвращенное $output; } /** * Деятельности комментария. Мы предлагаем по-разному деятельности уточнения в зависимости от * комментируют страница администрации, котор мы дальше. * * @param $action * Страница администрации комментария. * @return * Ассоциативный блок содержа предложенные деятельности. * comment_operations функции ($action = NULL) { если (== $action «опубликовывает ") {, то $operations = блок ( «опубликуйте» блок => (t («опубликуйте выбранные комментарии "), «УТОЧНЕНИЕ {комментарии} УСТАНОВИЛ состояние =». COMMENT_PUBLISHED. «ГДЕ cid = %d "), «уничтожьте» блок => (t («уничтожьте выбранные комментарии "), '') ); } еще если (unpublish == $action «") {, то $operations = блок ( блок => «unpublish» (t («Unpublish выбранные комментарии "), «УТОЧНЕНИЕ {комментарии} УСТАНОВИЛ состояние =». COMMENT_NOT_PUBLISHED. «ГДЕ cid = %d "), «delete» блок => (t («уничтожьте выбранные комментарии "), '') ); } еще { $operations = блок ( «опубликуйте» блок => (t («опубликуйте выбранные комментарии "), «УТОЧНЕНИЕ {комментарии} УСТАНОВИЛ состояние =». COMMENT_PUBLISHED. «ГДЕ cid = %d "), блок => «unpublish» (t («Unpublish выбранные комментарии "), «УТОЧНЕНИЕ {комментарии} УСТАНОВИЛ состояние =». COMMENT_NOT_PUBLISHED. «ГДЕ cid = %d "), «delete» блок => (t («уничтожьте выбранные комментарии "), '') ); } возвращенное $operations; } /** * Разносторонные функции: хелперы, privates, история * /** * Нагрузите весь комментарий cid. * * @param $cid * Определяя удостоверение личности комментария * @return * Предмет комментария. * _comment_load функции ($cid) { возвращенное db_fetch_object (db_query («ОТБОРНО * ОТ {комментарии} ГДЕ cid = %d», $cid)); } /** * Получите отсчет комментария для узла. * * @param $nid * Удостоверение личности узла * @return * Отсчет комментария. * comment_num_all функции ($nid) { статическое $cache; если (! isset ($cache [$nid])) { $cache [$nid] = db_result (db_query («ОТБОРНОЕ comment_count ОТ {node_comment_statistics} ГДЕ nid = %d», $nid)); } возвращенное $cache [$nid]; } /** * Получите отсчет ответов для комментария. * * @param $pid * Удостоверение личности комментария * @return * Отсчет ответов. * comment_num_replies функции ($pid) { статическое $cache; если (! isset ($cache [$pid])) { $cache [$pid] = db_result (db_query («ОТБОРНЫЙ ОТСЧЕТ (cid) ОТ {комментарии} ГДЕ pid = %d И состояние = %d», $pid, COMMENT_PUBLISHED)); } возвращенное $cache [$pid]; } /** * Получите количество новых комментариев для в настоящее время потребителя и определенного узла. * * @param $nid * узл-удостоверение личности для того чтобы подсчитать комментарии для * @param $timestamp * время подсчитать от (невыполнения обязательства к времени последнего доступа пользователя * к узлу) * comment_num_new функции ($nid, $timestamp = 0) { глобальное $user; если ($user->uid) {, то // восстановляет фиксацию времени на в настоящее время потребитель на последнем месте осмотрел // определило узел. если (! $timestamp) { $timestamp = node_last_viewed ($nid); } $timestamp = ($timestamp > NODE_NEW_LIMIT? $timestamp: NODE_NEW_LIMIT); Польза // фиксация времени восстановить число новых комментариев. $result = db_result (db_query («ОТБОРНЫЙ ОТСЧЕТ (c.cid) ОТ {узел} n ВНУТРЕННЕГО СОЕДИНЯЕТ {комментарии} c НА n.nid = c.nid ГДЕ n.nid = %d И фиксация времени > %d И c.status = %d», $nid, $timestamp, COMMENT_PUBLISHED)); возвращенное $result; } еще { возвращение 0; } } /** * Утвердите данные по комментария. * * @param $edit * Ассоциативное containig блока данные по комментария. * @return * Первоначально $edit. * comment_validate функции ($edit) { глобальное $user; // призывает другие укротители утверждения comment_invoke_comment ($edit, «утверждают "); если (isset, то ($edit [«дата»])) { // от PHP 5.1.0, strtotime возвращает ЛОЖНОЕ на отказе вместо -1. если (strtotime ($edit [«дата»]) <= 0) {, то form_set_error («дата», t («вы должны определить действительное date.")); } } если (isset ($edit [«автор»]) &&! $account = user_load (блок (=> $edit «имени» [«автор»]))) { form_set_error («автор», t («вы должны определить действительное author.")); } Ценностьь проверки // имени, почты и домашняя страница (если дали), то если (! $user->uid || isset ($edit [«is_anonymous»])) { $node = node_load ($edit [«nid»]); если (variable_get, то («comment_anonymous_». $NODE->TYPE, COMMENT_ANONYMOUS_MAYNOT_CONTACT) > COMMENT_ANONYMOUS_MAYNOT_CONTACT) { если ($edit [«имя»]) {, то $taken = db_result (db_query («ВЫБЕРИТЕ ОТСЧЕТ (uid) ОТ {потребители} ГДЕ НИЗКО (имя) = «%s»», $edit [«имя»])); если ($taken! = 0) { form_set_error («имя», t («имя, котор вы использовали принадлежит до зарегистрированное user.")); } } еще если (variable_get, то («comment_anonymous_». $NODE->TYPE, == COMMENT_ANONYMOUS_MUST_CONTACT COMMENT_ANONYMOUS_MAYNOT_CONTACT)) { form_set_error («имя», t («вы должны выйти ваше name.")); } если ($edit [«почта»]) {, то если (! valid_email_address ($edit [«почта»])) { form_set_error («почта», t («адрес электронная почта, котор вы определили invalid.")); } } еще если (variable_get, то («comment_anonymous_». $NODE->TYPE, == COMMENT_ANONYMOUS_MUST_CONTACT COMMENT_ANONYMOUS_MAYNOT_CONTACT)) { form_set_error («почта», t («вы должны выйти электронная почта address.")); } если ($edit [«домашняя страница»]) {, то если (! valid_url ($edit [«домашняя страница»], TRUE)) { form_set_error («домашняя страница», t («URL вашего домашняя страница инвалидн. Вспомните что оно должен быть полно - квалифицировано, т.е. формы http://example.com/directory .")); } } } } возвратите $edit; } /** * Произведите основную форму комментария, потому что прилагать к узлу или индикации на отдельно странице. * * @param $title * Использовано. * формы @ingroup * comment_form_validate @see () * comment_form_submit @see () * comment_form функции (&$form_state, $edit, $title = NULL) { глобальное $user; $op = isset ($_POST [«op»])? $_POST [«op»]: ''; $node = node_load ($edit [«nid»]); если (! variable_get && $user->uid («comment_anonymous_». $node->type, COMMENT_ANONYMOUS_MAYNOT_CONTACT)! = COMMENT_ANONYMOUS_MAYNOT_CONTACT) { drupal_add_js (drupal_get_path («модуль», «комментарий "). «/comment.js "); } блок $edit += («почты» «имени => '', «домашняя страница» => ''» => '',); если ($user->uid) {, то если (! пустые ($edit [«cid»]) user_access && («управьте комментариями ")) { если (! опорожните ($edit [«автор»])) { $author = $edit [«автор»]; } elseif (! опорожните ($edit [«имя»])) { $author = $edit [«имя»]; } еще { $author = $edit [«registered_name»]; } если (! опорожните ($edit [«состояние»])) { $status = $edit [«состояние»]; } еще { $status = 0; } если (! опорожните ($edit [«дата»])) { $date = $edit [«дата»]; } еще { $date = format_date ($edit [«фиксация времени»], «таможня», «Y-m-d h: iий o "); } $form [«admin»] = блок ( => «fieldset» «#type», «#title» => t («администрация "), «#collapsible» => ПОИСТИНЕ, «#collapsed» => ПОИСТИНЕ, => -2 «#weight», ); если ($edit, то [«registered_name»]! = '') { // комментарий зарегистрированным потребителем $form [«admin»] [«автор»] = блок ( => «textfield» «#type», «#title» => t («после того как я Authored мимо "), «#size» => 30, => 60 «#maxlength», => «потребитель/autocomplete» «#autocomplete_path», => $author «#default_value», => -1 «#weight», ); } еще { // комментарий подметным потребителем $form [«is_anonymous»] = блок ( => «значение» «#type», => «#value» ПОИСТИНЕ, ); $form [«admin»] [«имя»] = блок ( => «textfield» «#type», «#title» => t («после того как я Authored мимо "), «#size» => 30, => 60 «#maxlength», => $author «#default_value», => -1 «#weight», ); $form [«admin»] [«почта»] = блок ( => «textfield» «#type», «#title» => t («электронная почта "), => 64 «#maxlength», «#size» => 30, => $edit «#default_value» [«почта»], «#description» => t («содержанию этого поля сдержано приватной и не покажут publicly."), ); $form [«admin»] [«домашняя страница»] = блок ( => «textfield» «#type», «#title» => t («домашняя страница "), => 255 «#maxlength», «#size» => 30, => $edit «#default_value» [«домашняя страница»], ); } } еще { $form [=> t «#title»» => ««#type «_author»] = блок (деталь», («ваше имя "), тема => «#value» («username», $user) ); $form [«автор»] = блок (#value»» => «#type «=> $user->name «значения»,); } } еще если (variable_get, то («comment_anonymous_». $NODE->TYPE, == COMMENT_ANONYMOUS_MAY_CONTACT COMMENT_ANONYMOUS_MAYNOT_CONTACT)) { $form [=> t «#title»» => ««#type «имени»] = блок (textfield», («ваше имя "), => 60 «#maxlength», «#size» => 30, => $edit «#default_value» [«имя»]? $edit [«имя»]: variable_get («подметно», t («подметно ")) ); $form [«почта»] = блок (textfield»» => «#type «, «#title» => t («электронная почта "), «#maxlength» => 64, «#size» => 30, «#default_value» => $edit [«почта»], «#description» => t («содержанию этого поля сдержано приватным и не покажут publicly.") ); $form [«#title»» => ««#type «домашняя страница»] = блок (textfield», («домашняя страница "), => 255 «#maxlength», «#size» => $edit => t => 30, «#default_value» [«домашняя страница»]); } еще если (variable_get, то («comment_anonymous_». $NODE->TYPE, == COMMENT_ANONYMOUS_MUST_CONTACT COMMENT_ANONYMOUS_MAYNOT_CONTACT)) { $form [=> t «#title»» => ««#type «имени»] = блок (textfield», («ваше имя "), => 60 «#maxlength», «#size» => 30, => $edit «#default_value» [«имя»]? $edit [«имя»]: variable_get («подметно», t («подметно ")), «#required» => ПОИСТИНЕ); $form [«почта»] = блок (textfield»» => «#type «, «#title» => t («электронная почта "), «#maxlength» => 64, «#size» => 30, «#default_value» => $edit [«почта»], «#description» => t («содержанию этого поля сдержано приватным и не покажут publicly."), «#required» => ПОИСТИНЕ); $form [«#title»» => ««#type «домашняя страница»] = блок (textfield», («домашняя страница "), => 255 «#maxlength», «#size» => $edit => t => 30, «#default_value» [«домашняя страница»]); } если (variable_get, то («comment_subject_field_». $node->type, 1) == 1) { $form [=> t «#title»» => ««#type «вопроса»] = блок (textfield», («подчиненный "), => 64 «#maxlength», => «#default_value»! опорожните ($edit [«вопрос»])? $edit [«вопрос»]: ''); } если (! пусто ($edit [«комментарий»])) { $default = $edit [«комментарий»]; } еще { $default = ''; } $form [«comment_filter»] [«комментарий»] = блок ( => «textarea» «#type», «#title» => t («комментарий "), => 15 «#rows», => $default «#default_value», «#required» => ПОИСТИНЕ, ); если (! isset ($edit [«форма»])) { $edit [«форма»] = FILTER_FORMAT_DEFAULT; } $form [«comment_filter»] [«форма»] = filter_form ($edit [«форма»]); $form [«cid»] = блок (=> «#value»» => ««#type значение»! опорожните ($edit [«cid»])? $edit [«cid»]: NULL); $form [«pid»] = блок (=> «#value»» => ««#type значение»! опорожните ($edit [«pid»])? $edit [«pid»]: NULL); $form [«nid»] = блок (#value»» => «#type «=> $edit «значения», [«nid»]); $form [«uid»] = блок (=> «#value»» => ««#type значение»! опорожните ($edit [«uid»])? $edit [«uid»]: NULL); Выставка // только за исключением кнопки если предваротельный просмотр опционн или если мы находимся в режиме предваротельного просмотра. // мы показываем спасительную кнопку в режиме предваротельного просмотра даже если будут ошибки формы так, что элементы формы // опционные (например, captcha) могут быть обновленный в режиме предваротельного просмотра. если (! && form_get_errors () ((variable_get («comment_preview_». $NODE->TYPE, == COMMENT_PREVIEW_OPTIONAL COMMENT_PREVIEW_REQUIRED)) || (== t $op («предваротельный просмотр ")) || (== t $op («за исключением ")))) { $form [«представьте»] = блок (=> t («за исключением "), «#weight» «#value»» => ««#type представьте», => 19); } $form [=> t («предваротельный просмотр "), «#weight» «#value»» => ««#type «предваротельного просмотра»] = блок (кнопка», => 20); $form [«#token»] = «комментарий». $edit [«nid»]. (isset ($edit [«pid»])? $edit [«pid»]: ''); если (== t $op («предваротельный просмотр ")) {, то $form [«#after_build»] = блок («comment_form_add_preview "); } если (опорожните ($edit [«cid»]) && пустое, то ($edit [«pid»])) { $form [«#action»] = url («комментарий/ответ». $edit [«nid»]); } возвращенное $form; } /** * Тема коробка формы комментария. * * @param $edit * Структура формы. * @param $title * Название формы. * comment_form_box функции ($edit, $title = NULL) { возвращенная тема («коробка», $title, drupal_get_form («comment_form», $edit, $title)); } /** * Сформируйте строителя; Произведите и утвердите форму предваротельного просмотра комментария. * * формы @ingroup * comment_form_add_preview функции ($form, &$form_state) { глобальное $user; $edit = $form_state [«значения»]; drupal_set_title (t («комментарий предваротельного просмотра ")); $output = ''; $node = node_load ($edit [«nid»]); // призывает полное утверждение для формы, для того чтобы защитить против перекрестного места подлоги запроса // (CSRF) и значения установки произвольные для полей как // форма входного сигнала. Предварительно просмотрите комментарий только когда утверждение формы не делает // установило все ошибки. drupal_validate_form ($form [«form_id»] [«#value»], $form, $form_state); если (! form_get_errors ()) { _comment_form_submit ($edit); $comment = (предмет) $edit; Attach // данные по потребителя и времени. если (! опорожните ($edit [«автор»])) { $account = user_load (блок (=> $edit «имени» [«автор»])); } elseif (&& $user->uid! isset ($edit [«is_anonymous»])) { $account = $user; } если (! опорожните ($account)) { $comment->uid = $account->uid; $comment->name = check_plain ($account->name); } elseif (опорожните ($comment->name)) { $comment->name = variable_get («подметно», t («подметно ")); } $comment->timestamp =! опорожните ($edit [«фиксация времени»])? $edit [«фиксация времени»]: время (); $output. = тема («comment_view», $comment, $node); } $form [«comment_preview»] = блок ( => $output «#value», => -100 «#weight», предваротельный просмотр " class=
««#prefix >», => «
» «#suffix», ); $output = ''; если ($edit [«pid»]) {, то $comment = db_fetch_object (db_query («ОТБОРНЫЕ c.*, u.uid, u.name КАК registered_name, u.signature, u.picture, u.data ОТ {комментарии} c ВНУТРЕННЕГО СОЕДИНЯЮТ {потребители} u НА c.uid = u.uid ГДЕ c.cid = %d И c.status = %d», $edit [«pid»], COMMENT_PUBLISHED)); $comment = drupal_unpack ($comment); $comment->name = $comment->uid? $comment->registered_name: $comment->name; $output. = тема («comment_view», $comment, $node); } еще { $suffix = опорожняют ($form [«#suffix»])? '': $form [«#suffix»]; $form [«#suffix»] = $suffix. node_view ($node); $edit [«pid»] = 0; } $form [«comment_preview_below»] = блок (=> 100 => $output, «#weight» «#value»); возвращенное $form; } /** * Утвердите представления формы комментария. * comment_form_validate функции ($form, &$form_state) { глобальное $user; если (=== 0 $user->uid) {, то foreach (блок («имя», «домашняя страница», «почта ") как $field) { // установило печенье на 365 дней. если (isset, то ($form_state [«значения»] [$field])) { setcookie («comment_info_». $field, $form_state [«значения»] [$field], время () + 31536000, «/"); } } } comment_validate ($form_state [«значения»]); } /** * Подготовьте комментарий для представления. * * @param $comment_values * Ассоциативный блок содержа данные по комментария. * _comment_form_submit функции (&$comment_values) { блок $comment_values += («вопрос» => ''); если (! isset ($comment_values [«дата»])) { $comment_values [«дата»] = «теперь»; } $comment_values [«фиксация времени»] = strtotime ($comment_values [«дата»]); если (isset, то ($comment_values [«автор»])) { $account = user_load (блок (=> $comment_values «имени» [«автор»])); $comment_values [«uid»] = $account->uid; $comment_values [«имя»] = $comment_values [«автор»]; } // утверждает вопрос комментария. Если определено, извлеките // одно от тела комментария. если (уравновешивание ($comment_values [«вопрос»]) == '') {, то // тело может находиться в любой форме, так мы: Фильтр // 1) оно в HTML Прокладка // 2) вне все бирки HTML Реальности новообращенного // 3) назад к незашифрованныйу текст. Примечание //: форма проверена check_markup (). $comment_values [«вопрос»] = уравновешивание (truncate_utf8 (decode_entities (strip_tags (check_markup ($comment_values [«комментарий»], $comment_values [«форма»]))), 29, TRUE)); Случаи края // где тело комментария заселено только бирками HTML будут // требует вопроса невыполнения обязательства. если (== $comment_values [«вопроса»] '') {, то $comment_values [«вопрос»] = t («(отсутствие вопроса) "); } } } /** * Отростчатые представления формы комментария; подготовьте комментарий, сохраньте он, и установите цель redirection. * comment_form_submit функции ($form, &$form_state) { _comment_form_submit ($form_state [«значения»]); если ($cid = comment_save, то ($form_state [«значения»])) { $node = node_load ($form_state [«значения»] [«nid»]); $page = comment_new_page_count ($node->comment_count, 1, $node); $form_state [«перенаправьте»] = блок («узел». $node->nid, $page, «comment-$cid»); возвращение; } } /** * Тема одиночный блок комментария. * * @param $comment * Предмет комментария. * @param $node * Узел комментария. * @param $links * Ассоциативный блок содержа соединения управления. * @param $visible * Переключатели между сложенным/раскрынным взглядом. * @ingroup themeable * theme_comment_view функции ($comment, $node, $links = блок (), $visible = TRUE) { статическо $first_new = TRUE; $output = ''; $comment->new = node_mark ($comment->nid, $comment->timestamp); если (&& $comment->new $first_new! = MARK_READ) { // задает анкер только для первого нового комментария. Это избегает дубликата атрибуты удостоверения личности // на странице. $first_new = ЛОЖНО; $output. = «id= \ n»; } $output. = «id= cid \ «> \ n»; Переключатель // к после того как я сложен/раскрыл взгляд комментария если ($visible) {, то $comment->comment = check_markup ($comment->comment, $comment->format, ЛОЖНЫЕ); Крюк API комментария // comment_invoke_comment ($comment, «взгляд "); $output. = тема («комментарий», $comment, $node, $links); } еще { $output. = тема («comment_folded», $comment); } возвращенное $output; } /** * Построьте форму управлением комментария. * * @param $mode * Режим индикации комментария. * @param $order * Режим заказа комментария. * @param $comments_per_page * Комментирует в страницу. * формы @ingroup * comment_controls функции ($mode = COMMENT_MODE_THREADED_EXPANDED, $order = COMMENT_ORDER_NEWEST_FIRST, $comments_per_page = 50) { $form [«режим»] = блок (» => ««#type выбирает», => $mode «#default_value», _comment_get_modes => «#options» (), => 1 «#weight», ); $form [«заказ»] = блок ( » => ««#type выбирает», => $order «#default_value», _comment_get_orders => «#options» (), => 2 «#weight», ); foreach (_comment_per_page () как $i) { $options [$i] = t («! комментарии в страницу», блок («! » => $i)); } $form [«comments_per_page»] = блок (» => ««#type выбирает», => $comments_per_page «#default_value», => $options «#options», => 3 «#weight», ); $form [«представьте»] = блок (» => ««#type представляет», «#value» => t («за исключением установок "), => 20 «#weight», ); возвращенное $form; } /** * Коробка управлениями комментария темы где потребитель может изменить режим индикации невыполнения обязательства и показать заказ комментариев. * * @param $form * Структура формы. * @ingroup themeable * theme_comment_controls функции ($form) { $output = «class=
»; $output. = drupal_render ($form); $output. = «
»; $output. = «описание " class=
». t («выберите вашу preferred дорогу показать комментарии и щелкнуть «за исключением установок» для того чтобы активировать ваше changes."). «
»; возвращенная тема («коробка», t («варианты просмотра комментария "), $output); } /** * Отростчатые представления формы comment_controls. * comment_controls_submit функции ($form, &$form_state) { глобальное $user; $mode = $form_state [«значения»] [«режим»]; $order = $form_state [«значения»] [«заказ»]; $comments_per_page = $form_state [«значения»] [«comments_per_page»]; если ($user->uid) {, то $account = user_save ($user, блок (=> $mode «режима», => $order, «comments_per_page» «вида» => $comments_per_page)); // прекращает если ошибка произошла во время user_save, то (). если (! $account) { drupal_set_message (t («потребитель сбережения ошибки account."), «ошибка "); возвращение; } $user = $account; } еще { $_SESSION [«comment_mode»] = $mode; $_SESSION [«comment_sort»] = $order; $_SESSION [«comment_comments_per_page»] = $comments_per_page; } } /** * Отростчатые перемеююые для comment.tpl.php. * * @see comment.tpl.php * theme_comment @see () * template_preprocess_comment функции (&$variables) { $comment = $variables [«комментарий»]; $node = $variables [«узел»]; $variables [«автор»] = тема («username», $comment); $variables [«содержание»] = $comment->comment; $variables [«дата»] = format_date ($comment->timestamp); $variables [«соединения»] = isset ($variables [«соединения»])? тема («соединения», $variables [«соединения»]): ''; $variables [«ново»] = $comment->new? t («ново "): ''; $variables [«изображение»] = theme_get_setting («toggle_comment_user_picture ")? тема («user_picture», $comment): ''; $variables [«подпись»] = $comment->signature; $variables [«представлено»] = тема («comment_submitted», $comment); $variables [«название»] = l ($comment->subject, $_GET [«q»], блок (=> «comment-$comment->cid» «части»)); $variables [«template_files»] [] = «комментарий». $node->type; // установило состояние к представлению шнура comment->status. если (isset, то ($comment->preview)) { $variables [«состояние»] = «комментировать-предварительно просматривают»; } еще { $variables [«состояние»] = (== COMMENT_NOT_PUBLISHED $comment->status)? «комментировать-неопубликованно»: «комментировать-опубликовано»; } } /** * Отростчатые перемеююые для comment-folded.tpl.php. * * @see comment-folded.tpl.php * @see theme_comment_folded () * функция template_preprocess_comment_folded (&$variables) { $comment = $variables [«комментарий»]; $variables [«автор»] = тема («username», $comment); $variables [«дата»] = format_date ($comment->timestamp); $variables [«ново»] = $comment->new? t («ново "): ''; $variables [«название»] = l ($comment->subject, comment_node_url (). «/». $comment->cid, блок (=> «comment-$comment->cid» «части»)); } /** * Взгляд комментария темы плоский обрушенный. * * @param $comment * Комментарий, котор нужно быть опирающийся на определённую тему. * @param $node * Узел комментария. * @ingroup themeable * функция theme_comment_flat_collapsed ($comment, $node) { возвращенная тема («comment_view», $comment, $node, '', 0); } /** * Перспективный вид комментария темы плоский. * * @param $comment * Комментарий, котор нужно быть опирающийся на определённую тему. * @param $node * Узел комментария. * @ingroup themeable * функция theme_comment_flat_expanded ($comment, $node) { возвращенная тема («comment_view», $comment, $node, module_invoke_all («соединение», «комментарий», $comment, 0)); } /** * Резьба комментария темы обрушилась взгляд. * * @param $comment * Комментарий, котор нужно быть опирающийся на определённую тему. * @param $node * Узел комментария. * @ingroup themeable * функция theme_comment_thread_collapsed ($comment, $node) { возвращенная тема («comment_view», $comment, $node, '', 0); } /** * Перспективный вид резьбы комментария темы. * * @param $comment * Комментарий, котор нужно быть опирающийся на определённую тему. * @param $node * Узел комментария. * @ingroup themeable * функция theme_comment_thread_expanded ($comment, $node) { возвращенная тема («comment_view», $comment, $node, module_invoke_all («соединение», «комментарий», $comment, 0)); } /** * Тема «вы не можете вывесить извещение о комментарии». * * @param $node * Узел комментария. * @ingroup themeable * функция theme_comment_post_forbidden ($node) { глобальное $user; статическое $authenticated_post_comments; если (! $user->uid) { если (! isset ($authenticated_post_comments)) { // мы только вывели наружу любое соединение если мы уверенн, то, то потребители получаем позволение // для того чтобы вывесить комментарии путем вносить в журнал дальше. Мы также местно прячем эту информацию в тайнике. $authenticated_post_comments = array_key_exists (DRUPAL_AUTHENTICATED_RID, user_roles (ПОИСТИНЕ, «комментарии столба ") + user_roles (ПОИСТИНЕ, «столб комментирует без утверждения ")); } если ($authenticated_post_comments) {, то // мы не можем использовать drupal_get_destination () потому что эти соединения // иногда появляется на /node и страницы перечисления таксономии. если (variable_get, то («comment_form_location_». $NODE->TYPE, == COMMENT_FORM_SEPARATE_PAGE COMMENT_FORM_SEPARATE_PAGE)) { $destination = «destination=». drupal_urlencode («комментарий/reply/$node->nid#comment-form»); } еще { $destination = «destination=». drupal_urlencode («node/$node->nid#comment-form»); } если (variable_get, то («user_register», 1)) { Потребители // могут зарегистрировать. возвращенный t («url => «@login» " @register " href= Login или >register к столбу комментируют», блок ((«потребитель/имя пользователя», блок (=> $destination «вопроса»)); } еще { Admins // только могут добавить новых потребителей, никакого общественного зарегистрирования. возвращенный t («url => «@login» " @login " href= Login к столбу комментирует», блок ((«потребитель/имя пользователя», блок (=> $destination «вопроса»)))); } } } } /** * Отростчатые перемеююые для comment-wrapper.tpl.php. * * @see comment-wrapper.tpl.php * theme_comment_wrapper @see () * template_preprocess_comment_wrapper функции (&$variables) { // обеспечивает контекстуальную информацию. $variables [«display_mode»] = _comment_get_display_setting («режим», $variables [«узел»]); $variables [«display_order»] = _comment_get_display_setting («вид», $variables [«узел»]); $variables [«comment_controls_state»] = variable_get («comment_controls_». >type $variables [«узла»] -, COMMENT_CONTROLS_HIDDEN); $variables [«template_files»] [] = «комментировать-завертчица». >type $variables [«узла»] -; } /** * Темы «представленное…» извещение. * * @param $comment * Комментарий. * @ingroup themeable * функция theme_comment_submitted ($comment) { возвращенный t («представлено мимо! username на @datetime. », блок ( «! тема => username» («username», $comment), format_date => «@datetime» ($comment->timestamp) )); } /** * Возвратите блок режимов просмотра для перечислений комментария. * * Мы не можем использовать блок глобальной перемеююого потому что система места * не выступает с иничиативой пока когда модуль комментария нагружен. * _comment_get_modes функции () { возвращенный блок ( => t COMMENT_MODE_FLAT_COLLAPSED («плоский обрушенный список - "), => t COMMENT_MODE_FLAT_EXPANDED («плоский расширенный список - "), => t COMMENT_MODE_THREADED_COLLAPSED («продетый нитку обрушенный список - "), => t COMMENT_MODE_THREADED_EXPANDED («продетый нитку расширенный список - ") ); } /** * Возвратите блок заказов просмотра для перечислений комментария. * * Мы не можем использовать блок глобальной перемеююого потому что система места * не выступает с иничиативой пока когда модуль комментария нагружен. * _comment_get_orders функции () { возвращенный блок ( => t COMMENT_ORDER_NEWEST_FIRST («дата - самые новые первые "), => t COMMENT_ORDER_OLDEST_FIRST («дата - самое старое первое ") ); } /** * Возвратите блок «комментарии в установок страницу» от потребитель * смогите выбрать. * _comment_per_page функции () { возвращенное drupal_map_assoc (блок (10, 30, 50, 70, 90, 150, 200, 250, 300)); } /** * Возвратите в настоящее время установку индикации комментария * * @param $setting * может быть одно из этих: «режим», «вид», «comments_per_page» * @param $node * Узел комментария в вопросе. * функция _comment_get_display_setting ($setting, $node) { глобальное $user; если (isset, то ($_GET [$setting])) { $value = $_GET [$setting]; } еще { // получает невыполнение обязательства места установки переключите ($setting) { покрывайте «режим»: $default = variable_get («comment_default_mode_». $node->type, COMMENT_MODE_THREADED_EXPANDED); пролом; случай «вид»: $default = variable_get («comment_default_order_». $node->type, COMMENT_ORDER_NEWEST_FIRST); пролом; случай «comments_per_page»: $default = variable_get («comment_default_per_page_». $node->type, 50); } если (variable_get, то («comment_controls_». $NODE->TYPE, == COMMENT_CONTROLS_HIDDEN COMMENT_CONTROLS_HIDDEN)) { // если управлениями комментария будут невыполнение обязательства места пользы инвалид $value = $default; } еще { // в противном случае польза установка потребителя если комплект если (&& $user->$setting isset ($user->$setting)) {, то $value = $user->$setting; } еще если (isset, то ($_SESSION [«comment_». && $_SESSION $setting]) [«comment_». $setting]) { $value = $_SESSION [«comment_». $setting]; } еще { $value = $default; } } } возвращенное $value; } /** * Уточняет статистик комментария для, котор дали узла. Это должно быть вызвано любые * приурочьте комментарий будет добавлен, уничтожено, или обновлено. * * Следующий поля содержатся в таблице node_comment_statistics. * - last_comment_timestamp: фиксация времени последнего комментария для этого узла или узел создают штемпель если никакие комментарии не существуют для узла. * - last_comment_name: имя подметного плаката для последнего комментария * - last_comment_uid: uid плаката для последнего комментария для этого узла или uid авторов узла если никакие комментарии не существуют для узла. * - comment_count: общее количество утвержденного/опубликовало комментарии на этом узле. * _comment_update_node_statistics функции ($nid) { $count = db_result (db_query («ОТБОРНЫЙ ОТСЧЕТ (cid) ОТ {комментарии} ГДЕ nid = %d И состояние = %d», $nid, COMMENT_PUBLISHED)); комментарии // существуют если ($count > 0) {, то $last_reply = db_fetch_object (db_query_range («ОТБОРНОЕ cid, имя, фиксация времени, uid ОТ {комментарии} ГДЕ nid = %d И состояние = ЗАКАЗ %d cid DESC», $nid, COMMENT_PUBLISHED, 0, 1)); db_query («УТОЧНЕНИЕ {node_comment_statistics} УСТАНОВИЛО comment_count = %d, last_comment_timestamp = %d, last_comment_name = «%s», last_comment_uid = %d КУДА nid = %d», $count, $last_reply->timestamp, $last_reply->uid? '': $last_reply->name, $last_reply->uid, $nid); } // отсутствие комментариев еще { $node = db_fetch_object (db_query («ОТБОРНОЕ uid, созданное ОТ {узел} ГДЕ nid = %d», $nid)); db_query («УТОЧНЕНИЕ {node_comment_statistics} УСТАНОВИЛО comment_count = 0, last_comment_timestamp = %d, last_comment_name = '', last_comment_uid = %d КУДА nid = %d», $node->created, $node->uid, $nid); } } /** * Призовите деятельность hook_comment () в всех модулях. * * @param &$comment * Предмет комментария. * @param $op * Шнур содержа имя деятельности комментария. * @return * Возвращенное значение призванных крюков. * comment_invoke_comment функции (&$comment, $op) { $return = блок (); foreach (module_implements («комментарий ") как $name) { $function = $name. «_comment»; $result = $function ($comment, $op); если (&& isset ($result) is_array, то ($result)) { $return = array_merge ($return, $result); } еще если (isset, то ($result)) { $return [] = $result; } } возвращенное $return; } /** * Произведите vancode. * * Состоит из ведущий характера показывая длину, последованную за числами n * с численным значением в основании 36. Vancodes можно сортировать как шнуры * без messing вверх численный заказ. * * Он идет: * 00, 01, 02,…, 0y, 0z, * 110, 111,…, 1zy, 1zz, * 2100, 2101,…, 2zzy, 2zzz, * 31000, 31001,… * функция int2vancode ($i = 0) { $num = base_convert ((int) $i, 10, 36); $length = strlen ($num); возвращенное chr ($length + ord («0») - 1). $num; } /** * Расшифруйте vancode назад к интежеру. * функция vancode2int ($c = «00») { возвращенное base_convert (substr ($c, 1), 36, 10); } /** * Вставка hook_hook_info (). * comment_hook_info функции () { возвращенный блок ( блок => «комментария» ( блок => «комментария» ( «введите» блок => ( «бега когда» => t («после сохранять новый комментарий "), ), блок => «уточнения» ( «бега когда» => t («после сохранять обновленный комментарий "), ), блок => «delete» ( «бега когда» => t («после уничтожать комментарий ") ), блок => «взгляда» ( «бега когда» => t («когда комментарий осмотрится authenticated потребителем ") ), ), ), ); } /** * Вставка hook_action_info (). * comment_action_info функции () { возвращенный блок ( блок => «comment_unpublish_action» ( «описание» => t («комментарий Unpublish "), «напечатайте» => на машинке «комментарий», «конфигурируемый» => ЛОЖНОЕ, «закрепляет» блок => ( «комментарий» блок => («вставка», «уточнение "), ) ), блок => «comment_unpublish_by_keyword_action» ( «описание» => t («комментарий Unpublish содержа ключевые слова "), «напечатайте» => на машинке «комментарий», «конфигурируемый» => ПОИСТИНЕ, «закрепляет» блок => ( «комментарий» блок => («вставка», «уточнение "), ) ) ); } /** * Действие Drupal к unpublish комментарий. * * @param $context * Пользованный ключом блок. Содержать удостоверение личности комментария если $comment не о. * @param $comment * Опционный предмет комментария. * comment_unpublish_action функции ($comment, $context = блок ()) { если (isset, то ($comment->cid)) { $cid = $comment->cid; $subject = $comment->subject; } еще { $cid = $context [«cid»]; $subject = db_result (db_query («ОТБОРНЫЙ вопрос ОТ {комментарии} ГДЕ cid = %d», $cid)); } db_query («УТОЧНЕНИЕ {комментарии} УСТАНОВИЛО состояние = %d КУДА cid = %d», COMMENT_NOT_PUBLISHED, $cid); барбос («действие», «неопубликованный комментарий %subject. », блок (=> $subject «%subject»)); } /** * Сформируйте строителя; Подготовьте форму для blacklisted ключевых слов. * * формы @ingroup * comment_unpublish_by_keyword_action_form функции ($context) { $form [«ключевые слова] = блок ( «#title» => t («ключевые слова "), => «textarea» «#type», «#description» => t («комментарий будет неопубликован если он содержит любые последовательности характера выше. Используйте запят-отделенный список последовательностей характера. Пример: смешно, bungee скача, «компания, Inc. ». Последовательностями характера будут случай-sensitive."), isset => «#default_value» ($context [«ключевые слова])? drupal_implode_tags ($context [«ключевые слова]): '', ); возвращенное $form; } /** * Отростчатые представления формы comment_unpublish_by_keyword_action_form. * comment_unpublish_by_keyword_action_submit функции ($form, $form_state) { возвращенный блок («drupal_explode_tags => ключевых слов ($form_state [«значения»] [«ключевые слова])); } /** * Вставка конфигурируемый действия Drupal. * Unpublish комментарий если он содержит некоторый шнур. * * @param $context * Блок больше информации о смысле звонока это действие. * Неиспользованно здесь в виду того что это действие в настоящее время только поддерживает ops вставки и уточнения * крюк комментария, оба из которых обеспечивает вполне предмет $comment. * @param $comment * Предмет комментария. * comment_unpublish_by_keyword_action функции ($comment, $context) { foreach ($context [«ключевые слова] как $keyword) { если (strstr, то ($comment->comment, $keyword) || strstr ($comment->subject, $keyword)) { db_query («УТОЧНЕНИЕ {комментарии} УСТАНОВИЛО состояние = %d КУДА cid = %d», COMMENT_NOT_PUBLISHED, $comment->cid); барбос («действие», «неопубликованный комментарий %subject. », блок (=> $comment->subject «%subject»)); пролом; } } }
class= " ясное " >
> " codeSnippet " class=
class= " lineNumbers "
class=
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
class= " id= " codeSnippet651348
 $Id: comment.js, v 1.5 2007/09/12 18:29: 32 goba Exp $

Drupal.behaviors.com ment = функция (смысл) {
  var разделяет = новый блок («имя», «домашняя страница», «почта»);
  печенье var = '';
  для (i=0; i<3; i++) {
    печенье = Drupal.com ment.getCookie («comment_info_» + части [I]);
    если (печенье! = '') {
      input $("#comment-form [name=» + разделяет [I] +»]: не (.comment-processed) «, смысл)
        .val (печенье)
        .addClass («комментировать-обработано ");
    }
  }
};

Drupal.com ment = {};

Drupal.com ment.getCookie = функция (имя) {
  поиск = имя var + «=»;
  returnValue var = '';

  если (document.cookie.length > 0) {, то
    смещение = document.cookie.indexOf (поиск);
    если (возместите! = -1) {
      смещенное += search.length;
      конец var = document.cookie.indexOf («; », смещение);
      если (== -1 конца) {, то
        конец = document.cookie.length;
      }
      returnValue = decodeURIComponent (document.cookie.substring (возместите, конец) .replace (/\ +/g, «%20»));
    }
  }

  возвратите returnValue;
};
class=

Ответ : Как могу я доработать модуль комментария Drupal так, что он не включит поле домашняя страница?

Нашл что это разрешение на форуме и ем Drupal работало для меня.

Экземпляр и наклеивает это Кодего в архив template.php вашей темы заменяя ть THEMENAME с именем вашей темы.

/**
* Вставка HOOK_theme ().
*
функция THEMENAME_theme () {
возвращенный блок (
блок => «comment_form» (                      
      блок => «аргументов» (NULL => «формы»),
    ),
  );
}

Вспомните что вы может только иметь один пример HOOK_theme в вашем архиве шаблона поэтому совместите это с ваш существуя одним.

После этого введите эту часть Кодего ниже и измените THEMENAME к имени вашей темы:

тема // форма комментария
функция THEMENAME_comment_form ($form) {
  // извлекает поле домашняя страница
  unset ($form [«домашняя страница»]);          
  возвращенное drupal_render ($form);
}
Другие решения  
  •  Как я добавляю кнопки на форме PDF для того чтобы добавить/извлекаю рядки данных?
  •  Шнур ошибки в блоке задвижки?
  •  сколько вариант сервера SQL на одной машине
  •  Внешний вид 2007 не может архивный файл открытой сети сохраненный
  •  Активно директория DNS записывает вопрос
  •  Отчет о доступа 2010 экспорта к CSV с коллекторами?
  •  Прокладчик OCE 9400 не начинает
  •  как добавить десятичное место в формуле в отчете о кристалла seagate
  •  Windows XP и Мичрософт Оутлоок и проблемы установителя Windows
  •  VB6 к VS2010 - консультации тренировки?
  •  
    programming4us programming4us